ホームページ ウェブフロントエンド Vue.js Vue.js でコンポーネント テンプレートを定義するいくつかの方法の紹介

Vue.js でコンポーネント テンプレートを定義するいくつかの方法の紹介

Sep 25, 2020 pm 03:46 PM
vue.js

Vue.js でコンポーネント テンプレートを定義するいくつかの方法の紹介

Vue.js は、開発者が基礎となる Vue インスタンスのデータに DOM を宣言的にバインドできるようにする HTML ベースのテンプレート構文を使用します。すべての Vue.js テンプレートは正当な HTML であり、仕様に準拠するブラウザおよび HTML パーサーで解析できます。

Vue にはコンポーネント テンプレートを定義するためのオプションが多数あります。少なくとも 7 つの異なる方法があるように思えます:

  • String

  • Template Literal

  • X テンプレート

  • インライン

  • レンダリング関数

  • JSX

  • 単一ページ コンポーネント

この記事では、各アプローチの例を取り上げ、それぞれの長所と短所について説明し、特定の場合に何をすべきかを理解します。状況に応じてどの方法を使用するのが最適ですか。

1. 文字列

デフォルトでは、テンプレートは JS ファイル内の文字列として定義されます。文字列内のテンプレートは理解するのが非常に難しいということに誰もが同意すると思います。この方法には、広範なブラウザーのサポート以外に特別な点はありません。

Vue.component('my-checkbox', {
	template: `<div class="checkbox-wrapper" @click="check">
	<div :class="{ checkbox: true, checked: checked }">
	</div><div class="title">{{ title }}</div></div>`,
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	}
});
ログイン後にコピー

2. テンプレート リテラル

ES6 テンプレート リテラル (「バックティック」) を使用すると、複数行にわたってテンプレートを定義できます。これは通常の JavaScript 文字列では実行できません。安全のために ES5 に変換する必要があるかもしれませんが、多くの新しいブラウザーがこれらのコマンドをサポートし、読みやすくなりました。

ただし、このアプローチは完璧ではありません。ほとんどの IDE では、構文の強調表示、タブ、改行などで依然として面倒なことがわかりました。

Vue.component(&#39;my-checkbox&#39;, {
    template: ` < div class = "checkbox-wrapper"@click = "check" > 
    <div: class = "{ checkbox: true, checked: checked }" ></div>
							<div class="title">{{ title }}</div ></div>`,
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	}
});/
ログイン後にコピー

3.スクリプト タグはテキスト /x-template でタグ付けされ、コンポーネント定義内の ID によって参照されます。 私はこのアプローチが気に入っています。正しい HTML マークアップを使用して HTML を作成できるのですが、欠点は、テンプレートがコンポーネント定義の残りの部分から分離されてしまうことです。

Vue.component(&#39;my-checkbox&#39;, {
	template: &#39;#checkbox-template&#39;,
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	}
});
ログイン後にコピー
<script type="text/x-template" id="checkbox-template">
	<div class="checkbox-wrapper" @click="check">
		<div :class="{ checkbox: true, checked: checked }"></div>
		<div class="title">{{ title }}</div>
	</div>
</script>
ログイン後にコピー

4. インライン テンプレート

inline-template 属性をコンポーネントに追加することで、次のことを示すことができます。内部コンテンツを分散コンテンツとして考えるのではなく、そのテンプレートであると考えます。


x-template と同じ欠点がありますが、利点の 1 つは、HTML 内でコンテンツが正しく配置されることです。テンプレートなので、JavaScript が実行されるまで待つのではなく、ページの読み込み時にレンダリングできます。

#

Vue.component(&#39;my-checkbox&#39;, {
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	}
});
ログイン後にコピー
<my-checkbox inline-template>
	<div class="checkbox-wrapper" @click="check">
		<div :class="{ checkbox: true, checked: checked }"></div>
		<div class="title">{{ title }}</div>
	</div>
</my-checkbox>
ログイン後にコピー
5. レンダリング機能

##レンダリング機能の要件テンプレートを Javascript オブジェクトとして定義します。これらは明らかに、テンプレート オプションの中で最も冗長で抽象的なものです。

ただし、この利点は、テンプレートがコンパイラに近く、ディレクティブによって提供されるサブセットではなく完全な Javascript 機能にアクセスできることです。

Vue.component(&#39;my-checkbox&#39;, {
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	},
	render(createElement) {
		return createElement(
			&#39;div&#39;,
		  	{
					attrs: {
						&#39;class&#39;: &#39;checkbox-wrapper&#39;
					},
					on: {
						click: this.check
					}
		  	},
		  	[
		    	createElement(
	      		&#39;div&#39;,
	      		{
	        		&#39;class&#39;: {
	        			checkbox: true,
	        			checked: this.checked
        			}
	      		}
		    	),
		    	createElement(
	      		&#39;div&#39;,
	      		{
	        		attrs: {
	          		&#39;class&#39;: &#39;title&#39;
	        		}
	      		},
	      		[ this.title ]
		    	)
		  	]
		);
	}
});
ログイン後にコピー
6. JSX

Vue で最も物議を醸しているテンプレート オプションは JSX です。一部の開発者は、JSX は醜く、直感的でなく、Vue の精神への裏切りであると考えています。 JSX ではブラウザが読み取れないため、最初に変換する必要があります。ただし、レンダリング関数を使用する必要がある場合は、JSX の方が抽象度が低いテンプレート定義方法であることは確かです。

Vue.component(&#39;my-checkbox&#39;, {
	data() {
		return { checked: false, title: &#39;Check me&#39; }
	},
	methods: {
		check() { this.checked = !this.checked; }
	},
	render() {
		return <div class="checkbox-wrapper" onClick={ this.check }>
		         <div class={{ checkbox: true, checked: this.checked }}></div>
		         <div class="title">{ this.title }</div>
		       </div>
	}
});
ログイン後にコピー

7. 単一ファイル コンポーネント

セットアップでビルド ツールを使い慣れている限り、単一ファイル コンポーネントが最も重要です。テンプレート オプションの 。これらは両方の長所をもたらし、すべてのコンポーネント定義を 1 つのファイルに保持しながらマークアップを作成できます。 これらは転置を必要とし、一部の IDE はこのファイル タイプの構文強調表示をサポートしていませんが、それ以外の場合はこれらを克服するのは困難です。

<template>
  <div class="checkbox-wrapper" @click="check">
    <div :class="{ checkbox: true, checked: checked }"></div>
    <div class="title">{{ title }}</div>
  </div>
</template>
<script>
  export default {
    data() {
      return { checked: false, title: &#39;Check me&#39; }
    },
    methods: {
      check() { this.checked = !this.checked; }
    }
  }
</script>
ログイン後にコピー
Pug と SFC のようなテンプレート プリプロセッサを使用できるため、より多くのテンプレート定義の可能性があると主張するかもしれません!

どちらが最適ですか?

もちろん、完璧な方法はありません。それぞれの方法はユースケースに基づいて判断する必要があります。最高の開発者はすべての可能性を認識し、各開発者を Vue.js ツール ベルトのツールにしていると思います。

英語の元のアドレス: https://vuejsdevelopers.com/2017/03/24/vue-js-component-templates/

関連する推奨事項:

2020 年のフロントエンド vue インタビューの質問の概要 (回答付き)


vue チュートリアルの推奨事項: 最新の 5 つの vue.js ビデオ チュートリアル2020 年厳選

プログラミング関連の知識については、

プログラミング入門をご覧ください。 !

以上がVue.js でコンポーネント テンプレートを定義するいくつかの方法の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

vite が .env ファイルを解析する方法についての詳細な説明 vite が .env ファイルを解析する方法についての詳細な説明 Jan 24, 2023 am 05:30 AM

Vue フレームワークを使用してフロントエンド プロジェクトを開発する場合、デプロイ時に複数の環境をデプロイすることになりますが、開発環境、テスト環境、オンライン環境で呼び出されるインターフェイス ドメイン名が異なることがよくあります。どうすれば区別できるでしょうか?それは環境変数とパターンを使用することです。

vue のコンポーネント化とモジュール化の違いは何ですか vue のコンポーネント化とモジュール化の違いは何ですか Dec 15, 2022 pm 12:54 PM

コンポーネント化とモジュール化の違い: モジュール化はコード ロジックの観点から分割され、コードの階層化された開発が容易になり、各機能モジュールの機能の一貫性が保証されます。コンポーネント化は UI インターフェイスの観点から計画され、フロントエンドのコンポーネント化により UI コンポーネントの再利用が容易になります。

実践的な戦闘: vue ファイルをサポートして定義にジャンプするプラグインを vscode で開発する 実践的な戦闘: vue ファイルをサポートして定義にジャンプするプラグインを vscode で開発する Nov 16, 2022 pm 08:43 PM

vscode 自体は、定義にジャンプするための Vue ファイル コンポーネントをサポートしていますが、そのサポートは非​​常に弱いです。 vue-cli の構成では、多くの柔軟な使用法を記述することができるため、制作効率が向上します。しかし、これらの柔軟な記述方法により、vscode 自体が提供する関数がファイル定義へのジャンプをサポートできなくなります。これらの柔軟な記述方法に対応し、作業効率を向上させるために、Vue ファイルの定義へのジャンプをサポートする vscode プラグインを作成しました。

Ace コード エディターを Vue プロジェクトに統合する方法の詳細な図による説明 Ace コード エディターを Vue プロジェクトに統合する方法の詳細な図による説明 Apr 24, 2023 am 10:52 AM

Ace は、JavaScript で書かれた埋め込み可能なコード エディターです。 Sublime、Vim、TextMate などのネイティブ エディターの機能とパフォーマンスに匹敵します。あらゆる Web ページや JavaScript アプリケーションに簡単に埋め込むことができます。 Ace は Cloud9 IDE のメイン エディタとして維持されており、Mozilla Skywriter (Bespin) プロジェクトの後継です。

Vue3 で単体テストを作成する方法を調べる Vue3 で単体テストを作成する方法を調べる Apr 25, 2023 pm 07:41 PM

Vue.js は、今日のフロントエンド開発において非常に人気のあるフレームワークとなっています。 Vue.js が進化し続けるにつれて、単体テストの重要性がますます高まっています。今日は、Vue.js 3 で単体テストを作成する方法を検討し、いくつかのベスト プラクティスと一般的な問題と解決策を提供します。

vue3 の reactive() について詳しく話しましょう vue3 の reactive() について詳しく話しましょう Jan 06, 2023 pm 09:21 PM

前書き: vue3 の開発では、reactive は応答性の高いデータを実装するメソッドを提供します。これは日常の開発で頻繁に使用される API です。この記事では、著者はその内部動作メカニズムを探ります。

JSX 構文と Vue のテンプレート構文の簡単な比較 (利点と欠点の分析) JSX 構文と Vue のテンプレート構文の簡単な比較 (利点と欠点の分析) Mar 23, 2023 pm 07:53 PM

Vue.js では、開発者は、JSX 構文とテンプレート構文という 2 つの異なる構文を使用してユーザー インターフェイスを作成できます。どちらの構文にもそれぞれ長所と短所があるので、それらの違い、長所と短所について説明します。

Vue3 動的コンポーネントで例外を処理する方法の簡単な分析 Vue3 動的コンポーネントで例外を処理する方法の簡単な分析 Dec 02, 2022 pm 09:11 PM

Vue3 動的コンポーネントで例外を処理するにはどうすればよいですか?次の記事では、Vue3 の動的コンポーネントの例外処理方法について説明します。

See all articles