Vueでデータ例を定義する方法

Vueでデータ例を定義する方法

序文

開発プロセスにおいて、変数の定義は非常に頻繁かつ基本的なタスクです。変数の使用シナリオと範囲に応じて変数を合理的に定義する方法は、非常に小さく、間違いやすいものです。

Vue2 は長年にわたって人気があります。ほとんどの開発者は、開発プロセス中にデータ オプションで多くの変数を定義することを好みます。これは、コードの可読性、保守性、パフォーマンスに非常に悪影響を及ぼします。変数をうまく使用するには、Vue と JS の特性を組み合わせる必要があります。

Vue では、双方向データバインディングが必要かどうかに応じて、変数は次の 2 つのタイプに分けられます。

1つは、Vue のデータを乗っ取り、データの変更にビューでリアルタイムに反応することです。

データがメッセージのみを変更できる限り、テンプレートにバインドされたメッセージはリアルタイムで応答します。

<テンプレート>
  <div>{{メッセージ}}</div>
</テンプレート>

<スクリプト>
エクスポートデフォルト{
  データ() {
    メッセージ: "" 
  }
};
</スクリプト>

Vue データにハイジャックされる必要のない別の方法があります:

スクリプト内でのみ機能し、テンプレートでは使用されず、データのハイジャックは必要ありません

nameはconcatName関数内でのみ有効なので、ローカル変数として定義するだけです。

age は getAge 関数と concatName 関数の両方で必要です。これをローカル変数として使用するのは適切ではありません。その場合、そのスコープを拡大して複数の場所での使用を容易にすることができます。

<スクリプト>
定数 age = 'bar'
エクスポートデフォルト{
  メソッド: {
    年齢を取得する() {
      復帰年齢
    },
    連結名() {
      名前を 'nordon' にします
      `名前:${name}、年齢: ${age}` を返します
    }
  },
};
</スクリプト>

これはテンプレート内のレンダリング データとしてのみ使用されます。カスタマイズ後は、以降の操作では変更されません。Vue を使用してこのデータをハイジャックすると、パフォーマンスがいくらか低下します。

<テンプレート>
  <div v-for="item in arr">{{item.name}}</div>
</テンプレート>

<スクリプト>
const arr = Object.freeze([{
  名前: 'nordon',
  年齢: 18
}])
エクスポートデフォルト{
  データ() {
    戻る {
      アール
    }
  }
};
</スクリプト>

Object.freeze を使用して、データハイジャックが不要なデータをフリーズします。データハイジャックのために Vue 内のデータを再帰的にトラバースする場合、データはハイジャックされません。特に、テーブルのようなデータが大量にある場合は、パフォーマンスが大幅に向上します。

Vue のソース コードを見ると、Object.freeze を使用してデータを処理した後、データのハイジャックが発生しない理由がわかります。

関数defineReactive(obj, key) {
  // 関係のないコードを削除し、判定条件のみを残します const property = Object.getOwnPropertyDescriptor(obj, key)
  if (プロパティ && property.configurable === false) {
    戻る
  }
}

要約する

Vue でデータを定義する方法についての記事はこれで終わりです。Vue でのデータ定義に関するより詳しい内容については、123WORDPRESS.COM の過去の記事を検索するか、以下の関連記事を引き続きご覧ください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

<<:  IDEA2020.1.2 Webプロジェクトの作成とTomcatの設定に関する詳細なチュートリアル

>>:  MySQLはgroup_concat()関数に基づいて複数のデータ行を結合します

推薦する

JavaScript es6 の新しい配列メソッドの詳細な説明

目次1. 各() 2. arr.filter() 3. arr.every() 4. arr.map...

MySQL スロークエリ: スロークエリを有効にする

1. スロークエリの用途は何ですか? long_query_time を超えて実行されるすべての S...

MySQLの整数データ型tinyintの詳細な説明

目次1.1Tinyint型の説明1.2 練習環境の説明1.3 未署名属性の追加1.3.1 SQLモー...

MySQL binlog の解析

目次1. binlogの紹介2. Binlog関連のパラメータ3. バイナリログの内容を分析するIV...

MySQL 4G メモリ サーバー構成の最適化

会社のウェブサイトのアクセス数が増えてくると(1日10万PV以上)、当然MySQLがボトルネックにな...

MySQL トリガーの追加、削除、変更、クエリ操作の例

この記事では、例を使用して、MySQL トリガーの追加、削除、変更、およびクエリ操作について説明しま...

CSS はこのように使用できますか?気まぐれなグラデーションの芸術

前回の記事「1行のCSSコードの魅力」では、たった1行のCSSコードで生成できる美しい(奇妙な感じと...

Navicat for MySql ビジュアルインポート CSV ファイル

この記事では、参考までに、Navicat for MySql の CSV ファイルのビジュアルインポ...

Linux ファイル操作でよく使われるコマンドのまとめ

0. 新しい操作: mkdir abc #新しいフォルダを作成 touch abc.sh #新しいフ...

XHTML コードで Marquee タグを使用する方法

フォーラムで、ネットユーザーの jeanjean20 が、Marquee を標準に適合させる方法につ...

LinuxにNginxをインストールする詳細な手順

1. Nginxのインストール手順1.1 公式サイトの紹介http://nginx.org/en/d...

モバイル アプリのユーザー インターフェース設計に関する 10 のヒント

ヒント1: 集中力を保つ最高のモバイル アプリは、1 つのことを非常にうまく行うことに重点を置いてい...

win2008 で mysql8.0.11 を mysql8.0.17 にアップグレードする詳細な手順

アップグレードの背景: MySQLの下位バージョンの脆弱性を解決するために、MySQLはMySQL ...

JavaScript WebAPI、DOM、イベント、操作要素例の詳しい説明

目次ウェブAPI DOM DOMツリーDOM要素取得方法ドキュメントオブジェクトのプロパティイベント...

なぜ IE6 が最も多くの人に使用されているのでしょうか?

まず第一に、私はウェブデザイナーです。具体的には、私は XHTML フロントエンド デザイナーです。...