Vue のテンプレート構文の詳細な分析: 補間とディレクティブ
この記事では、Vue のテンプレート構文を説明し、補間構文と命令構文を紹介します。一定の参考値があるので、困っている友達が参考になれば幸いです。
Vue には、特に使いやすいテンプレート構文がたくさんあります。Vue で定義されたテンプレート構文を HTML で記述すると、データやバインディング メソッドなどをすばやく表示できます。これが、Vue がすぐに使い始められる理由の 1 つです。
1. テンプレートの理解
まずテンプレートとは何なのかを理解しましょう。
テンプレートは ダイナミック HTML ページ で、いくつかの js 構文コードが含まれています
Vue のテンプレート構文は 2 つのタイプに分かれています。
- [補間構文] 二重中括弧式 (「Mustache」構文) [1 つ]
- [命令構文] 命令 (v- 属性で始まるカスタム ラベル) [多数] ]
1. 補間構文:
- 機能: タグ本体の内容を解析し、ページにデータを出力するために使用されます
- 記述方法:
{{xxx}}
, xxx は js 式であり、データ内のすべての属性を直接読み取ることができ、オブジェクトのメソッドを呼び出すことができます。 内の #js 式: - js ステートメント 2 の代わりに、戻り値を含む js コード。命令構文:
関数: usedタグを解析します (タグ属性、タグ本体のコンテンツ、バインディング イベントなど)
- 例:
- v-bind:href="xxx"### または :href と省略されます。 ="xxx"###、xxx も js 式を記述する必要があり、データ内のすべての属性を直接読み取ることができます
-
注: Vue には多くの命令があり、その形式は次のとおりです。 ???
[関連する推奨事項: 「 - vue.js チュートリアル
」]
一般的に使用される手順をいくつか紹介します。
2. コマンド構文: データ バインディングを強制する v-bind:
関数: 変更された属性値を指定する
完了書き方
v-bind:xxx='yyy' // yyy会作为表达式解析执行
簡潔な書き方一方向データバインディング:xxx='yyy'ログイン後にコピー
構文:
v-bind:href ="xxx"または
:href ="xxx"###特徴: データはデータからページにのみ流れることができます
## 双方向データ バインディング命令
v-model- 構文: v-mode:value="xxx"### または # と省略されます。 ##v -model="xxx"
-
3 . 命令構文: イベント リスナーのバインド
関数: 指定されたイベント名のコールバック関数をバインドしますv-on:
完全な書き方
v-on:click='xxx' v-on:keyup='xxx(参数)' v-on:keyup.enter='xxx'
ログイン後にコピー簡潔な書き方##
@click='xxx' @keyup='xxx' @keyup.enter='xxx'
v-text
機能: テキスト コンテンツを、それが配置されているノードにレンダリングします。 と補間構文の違い:
v-text
はノード内のコンテンツを置き換えますが、{{xx}} は置き換えません。
v-html
- 1. 機能: HTML 構造を含むコンテンツを指定されたノードにレンダリングします。
v-html2. 補間構文との違い:
(1).
は、ノード内のすべてのコンテンツ
はできません。 (2).
はhtml構造を識別できます。
3. 重大な注意:- v-html
- にはセキュリティ上の問題があります。 ! ! !
(1). Web サイト上で任意の HTML を動的にレンダリングすることは非常に危険であり、簡単に XSS 攻撃につながる可能性があります。
(2). - v-html
は常に信頼できるコンテンツに対して使用し、ユーザーが送信したコンテンツには決して使用しないでください。
#<body> <div id='app'> <h2 id="nbsp-大括号表达式">1. 大括号表达式</h2> <p>{{msg}}</p> <!--textContent --> <p>{{msg.toUpperCase()}}</p> <p v-html="msg"></p> <!--innerHTML --> <p v-text="msg"></p> <!--textContent --> <p v-text="msg.toUpperCase()"></p> <h2 id="nbsp-指令一-nbsp-强制数据绑定">2. 指令一: 强制数据绑定</h2> <img src="/static/imghw/default1.png" data-src="imgUrl" class="lazy" alt="Vue"> <!--无法显示图片,没有识别成js表达式 --> <img src="/static/imghw/default1.png" data-src="imgUrl" class="lazy" v-bind: alt="Vue"> <!--属性值识别成js表达式 --> <img src="/static/imghw/default1.png" data-src="imgUrl" class="lazy" : alt="Vue"> <h2 id="nbsp-指令二-nbsp-绑定事件监听">3. 指令二: 绑定事件监听</h2> <button v-on:click="test1">test1</button> <button @click="test1">test1</button> <button @click="test2('abc')">test2</button> <!--可以传参数 --> <button @click="test2(msg)">test2</button> </div> <script src="../js/vue.js"></script> <script> new Vue({ el: '#app', data: { msg: '<a href="http:www.baidu.com">I Will Back!</a>', imgUrl: "https://cn.vuejs.org/images/logo.png" }, methods: { test1() { alert('heheh'); }, test2(content){ alert(content); } } }) </script> </body>
ログイン後にコピー
#5. 条件付きレンダリングの手順
- v -if
v-else
書き込み:
v-else-if="expression"
- ##v-else="expression"
適用対象: [頻度の低いシナリオ] を切り替えます。 機能: 表示されていない DOM 要素は直接削除されます。 注: v-if は、v-else-if および v-else と一緒に使用できますが、構造が「中断」されてはなりません。
- スタイルの非表示を追加 (表示: なし)
- v-show
- v-show= 「式」
は、スイッチング周波数が高いシナリオに適しています。 特徴: 表示されていないDOM要素は削除されているのではなく、スタイルを使って非表示にしているだけです。
[備考] v-ifを使用すると要素が取得できない場合がありますが、v-を使用すると必ず取得できます。見せる。
比较v-if与v-show
v-if
是控制元素是否加载到页面上(有性能开销) v-show
是控制元素的显示与隐藏 (初始创建时加载一次)
- 如果需要频繁切换 v-show 较好
- 当条件不成立时, v-if 的所有子节点不会解析
<body> <div id="demo"> <p v-if="ok">成功了</p> <!-- 移除标签删除 --> <p v-else>失败了</p> <p v-show="ok">又成功了</p> <!-- 添加样式隐藏 --> <p v-show="!ok">又失败了</p> <button @click="ok = !ok">切换</button> </div> <script src="../js/vue.js"></script> <script> new Vue({ el: '#demo', data: { ok: false, } }) </script> </body>
6. 总结
一些常用的指令
-
v-text
: 更新元素的 textContent -
v-html
: 更新元素的 innerHTML -
v-if
: 如果为true, 当前标签才会输出到页面 -
v-else
: 如果为false, 当前标签才会输出到页面 -
v-show
: 通过控制display样式来控制显示/隐藏 -
v-for
: 遍历数组/对象 -
v-on
: 绑定事件监听, 一般简写为@ -
v-bind
: 强制绑定解析表达式, 可以省略v-bind -
v-model
: 双向数据绑定 -
ref
: 为某个元素注册一个唯一标识, vue对象通过$refs属性访问这个元素对象 -
v-cloak
: 使用它防止闪现表达式, 与css配合: [v-cloak] { display: none }
更多编程相关知识,请访问:编程入门!!
以上がVue のテンプレート構文の詳細な分析: 補間とディレクティブの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

vue.jsでJSファイルを参照するには3つの方法があります。タグ;; mounted()ライフサイクルフックを使用した動的インポート。 Vuex State Management Libraryを介してインポートします。

CSSアニメーションまたはサードパーティライブラリを使用して、VUEでマーキー/テキストスクロール効果を実装します。この記事では、CSSアニメーションの使用方法を紹介します。スクロールテキストを作成し、テキストを&lt; div&gt;をラップします。 CSSアニメーションを定義し、オーバーフローを設定します:非表示、幅、アニメーション。キーフレームを定義し、アニメーションの開始と終了時にtranslatex()を設定します。期間、スクロール速度、方向などのアニメーションプロパティを調整します。

Vue.jsでは、Lazy Loadingを使用すると、コンポーネントまたはリソースを必要に応じて動的にロードすることができ、初期ページの読み込み時間を短縮し、パフォーマンスを改善できます。特定の実装方法には、&lt; Keep-Alive&gt;および&lt;コンポーネントは&gt;コンポーネント。怠zyなロードは、FOUC(スプラッシュ画面)の問題を引き起こす可能性があり、不必要なパフォーマンスのオーバーヘッドを避けるために怠zyなロードが必要なコンポーネントにのみ使用する必要があることに注意してください。

vue.jsでBootstrapを使用すると、5つのステップに分かれています。ブートストラップをインストールします。 main.jsにブートストラップをインポートしますブートストラップコンポーネントをテンプレートで直接使用します。オプション:カスタムスタイル。オプション:プラグインを使用します。

Vue.jsの監視オプションにより、開発者は特定のデータの変更をリッスンできます。データが変更されたら、Watchはコールバック関数をトリガーして更新ビューまたはその他のタスクを実行します。その構成オプションには、すぐにコールバックを実行するかどうかを指定する即時と、オブジェクトまたは配列の変更を再帰的に聴くかどうかを指定するDEEPが含まれます。

Vueコンポーネントの合格値は、コンポーネント間でデータと情報を渡すメカニズムです。プロパティ(小道具)またはイベントを介して実装できます:プロップ:コンポーネントで受信するデータを宣言し、親コンポーネントにデータを渡します。イベント:$ EMITメソッドを使用して、VONディレクティブを使用してイベントをトリガーし、親コンポーネントでイベントを聞きます。

Vue Devtoolsを使用してブラウザのコンソールでVueタブを表示することにより、Vueバージョンを照会できます。 NPMを使用して、「NPM List -G Vue」コマンドを実行します。 package.jsonファイルの「依存関係」オブジェクトでVueアイテムを見つけます。 Vue CLIプロジェクトの場合、「Vue -Version」コマンドを実行します。 &lt; script&gt;でバージョン情報を確認してくださいVueファイルを参照するHTMLファイルにタグを付けます。

ページネーションは、パフォーマンスとユーザーエクスペリエンスを向上させるために、大きなデータセットを小さなページに分割するテクノロジーです。 VUEでは、次の組み込みメソッドを使用してページを使用できます。ページの総数を計算します。TotalPages()トラバーサルページ番号:V-For Directive on Currentページを設定します。
