VUE レンダリング機能の使い方と詳細な説明

VUE レンダリング機能の使い方と詳細な説明

序文

通常のプログラミングでは、ほとんどの場合、HTML はテンプレートを通じて作成されます。ただし、特殊なケースでは、テンプレート方式ではニーズを十分に満たすことができません。このとき、操作するには JavaScript プログラミング スキルが必要です。この時点で、レンダリング機能がその威力を発揮します。

レンダリングの役割

公式サイトのサンプルエントリー

公式サイトのこの例では、solt を通じて h1-h6 タグに同じ内容を入れるためにコンポーネントが使用されています。従来の方法を使用すると、コードが長くなるだけでなく、タイトルの各レベルに<slot></slot>が繰り返し記述され、アンカー要素を挿入するときに再度繰り返す必要があります。レンダリング関数を使用すると、コードがはるかに簡単になります。

Vue.component('アンカー付き見出し', {
  レンダリング: 関数 (createElement) {
    要素の作成を返す(
      'h' + this.level, // タグ名 this.$slots.default // 子ノード配列)
  },
  小道具: {
    レベル:
      タイプ: 数値、
      必須: true
    }
  }
})

レンダリング関数の役割は、シーン内のテンプレートによって実装されたコードが長くて扱いにくく、繰り返しが多い場合に、コードを大幅に簡素化することです。

レンダリング機能の説明

レンダリング関数を使用する場合、createElement パラメータが使用されます。この createElement パラメータも本質的には関数であり、Vue で仮想 DOM を構築するために使用されるツールです。 createElement を見てみましょう。

createelement メソッドには、次の 3 つのパラメーターがあります。

createEement(, {}, []) を返します

1. 最初のパラメータ(必須パラメータ): 主に DOM で HTML コンテンツを提供するために使用されます。タイプは文字列、オブジェクト、または関数です。

2. 2 番目のパラメータ (オブジェクト タイプ、オプション): この DOM 内の渡されたコンポーネントのスタイル、属性、パラメータ、バインディング イベントなどを設定するために使用されます。

3. 3 番目のパラメータ (型は配列、配列要素の型は VNode、オプション): 主に、新しく追加されたその他のコンポーネントなどの配布コンテンツを設定するために使用されます。

注意: コンポーネントツリー内のすべてのvnodeは一意である必要があります

createElement パラメータを渡すと、仮想ノードが作成され、そのノードがレンダリングに返されます。

一般的に、レンダリング機能の本質は仮想ノードを作成することです。

レンダリングとテンプレートの違い

類似点:

render関数はtemplateと同様にHTMLテンプレートを作成する。

違い:

  • Templateは単純なロジックに適しており、レンダリングは複雑なロジックに適しています。
  • templateユーザーにとって比較的理解しやすいですが、柔軟性に欠けます。カスタム レンダリング機能は非常に柔軟ですが、ユーザーに対する要件は高くなります。
  • renderのパフォーマンスは高く、テンプレートのパフォーマンスは低くなります。
  • レンダリングに render 関数を使用する場合、コンパイル プロセスは発生しません。これは、ユーザーがプログラムに直接コードを与えるのと同じです。したがって、これを使用するには高いユーザー要件が必要となり、エラーが発生しやすくなります。
  • Render関数の優先度はテンプレートの優先度よりも高くなりますが、Mustache (二重中括弧) 構文は再度使用できないことに注意してください。

注意: テンプレートとレンダリングは一緒に使用できません。そうしないと無効になります。

レンダリング例

たとえば、共通のボタン コンポーネントのセットを一度にカプセル化すると、ボタンには 4 つのスタイル (成功、エラー、警告、デフォルト) が設定されます。

テンプレートメソッドは次のとおりです。

 <div class="btn btn-success" v-if="type === 'success'">{{ text }}</div>
 <div class="btn btn-danger" v-else-if="type === 'danger'">{{ text }}</div>
 <div class="btn btn-warning" v-else-if="type === 'warning'">{{ text }}</div>

ボタンの数が少ない場合はこれで問題ありませんが、ボタンの数が増えると非常に長くなります。このとき、レンダリング機能が必要になります。

状況に応じてボタンDOMを生成する

レンダリング機能を使用する前に、テンプレート タグを削除し、ロジック レイヤーのみを保持する必要があります。

クラスは渡された型を通じて動的に入力され、コンテンツは inderText を通じて DOM に追加されます。

レンダリング(h) {
  h('div', { を返す
   クラス: {
    ボタン: 真、
    'btn-success': this.type === 'success'、
    'btn-danger': this.type === 'danger'、
    'btn-warning': this.type === 'warning'
   },
   domProps: {
    内部テキスト: this.text
   },
   の上: {
    クリック: this.handleClick
   }
  });
 },

要約する

この記事はこれで終わりです。皆さんのお役に立てれば幸いです。また、123WORDPRESS.COM のその他のコンテンツにも注目していただければ幸いです。

以下もご興味があるかもしれません:
  • Vue.jsのレンダリング関数の使い方の詳しい説明
  • Vue Render関数はDOMノードコード例を作成します
  • Vueレンダリング関数の実際の戦闘でタブタブコンポーネントを実装する
  • Vue のレンダリング関数の使い方の詳細な説明
  • Vueのレンダリング関数の使い方
  • VUEのレンダリング機能の使い方を理解する
  • Vueにレンダリング関数の実装を導入する理由

<<:  HTMLはマーキーを使用してテキストを左右にスクロールします

>>:  CSSアニメーション効果アニメーションの一般的なスタイル

推薦する

MySQLは効率的なインデックス例分析を確立する

この記事では、例を使用して、MySQL で効率的なインデックスを作成する方法について説明します。ご参...

Vmware + Ubuntu18.04 に Hbase 2.3.5 をインストールするための詳細なチュートリアル

序文前回の記事では Hadoop をインストールしましたが、今回は Hbase をインストールします...

HTML 適応テーブル方式

<body style="scroll:no"> <テーブルの...

H5ゲームをnginxサーバーにデプロイする方法の詳細な説明

自己学習型ゲーム開発の道において、最も充実した瞬間は、自分でミニゲームを作り、友達と共有して試しにプ...

Javascriptはセキュリティ検証に整合性属性を使用します

目次1. スクリプトタグを使用してファイルをインポートする1. ローカルファイルをインポートする2....

mysql 8.0.16 winx64.zip インストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 8.0.16 winx64.zipのインストールと設定方法の具体的なコード...

Vueカスタム命令の詳細な説明

目次Vueカスタムディレクティブカスタムディレクティブフック機能出力関連属性アプリケーション例要約す...

Docker を使用して Microsoft Sql Server を展開するための詳細な手順

目次1 背景2 コンテナを作成する3 SAパスワードを変更する4 mssql のリンク5. コンテナ...

ウィンドウ環境設定Mysql 5.7.21 windowx64.zip無料インストール版チュートリアル詳細説明

1. 公式サイトのmysqlダウンロードページからmysql-5.7.21-windowx64.zi...

HTMLハイパーリンクaタグのhrefジャンプとonclick間の実行順序の例

HTMLハイパーリンクaタグのhrefジャンプとonclickの実行関係htmlのaタグのhrefは...

mysqlは2つ以上のフィールドがNULLであるレコードを見つける問題を解決します

コアコード /*-------------------------------- 2つ以上のフィール...

div 内の img と span の垂直方向の中央揃えの問題について

以下のように表示されます。 XML/HTML コードコンテンツをクリップボードにコピー<htm...

Linuxシステムでノードプロセスを実行しているが、プロセスを強制終了できない問題を解決します

まず、Linux システムで実行されているノード プロセスはプロセスを強制終了できないことを紹介しま...

簡単な約束を段階的に実行する方法を教えます

目次ステップ1: フレームワークを構築するステップ2 構築されたPromiseフレームワークに入力す...

dl、dt、dd はいつ使用するのが適切ですか?

dl:定義一覧定義リストdt:定義タイトルタイトルを定義するdd:定義説明定義の説明dt は情報のタ...