ホームページ ウェブフロントエンド jsチュートリアル vue.js の 2 つのコアとは何ですか

vue.js の 2 つのコアとは何ですか

May 29, 2019 am 10:58 AM
vue.js

Vue.js は、UI レベルに焦点を当てた MVVM データの双方向バインディングを提供するライブラリです。中心となるアイデアは: データ駆動型、コンポーネント システムです。

vue.js の 2 つのコアとは何ですか

データ駆動型:

Vue.js データ観察原理の技術的実装では、ES5Object.defineProperty とストレージ プロパティ : getter を使用します。および setter (IE9 以降とのみ互換性がある) は、依存関係の収集に基づく監視メカニズムと呼ぶことができます。中心となるのは VM、つまり ViewModel であり、データとビューの一貫性を保証します。

watcher: 各命令には、v-text="msg"、{{ msg }} などの 2 つのウォッチャーであるウォッチャーと呼ばれる、データを観察するために使用される対応するオブジェクトがあります。レンダリングされる関連する DOM 要素。

<div id="app">
  {{ message }}
</div>
var app = new Vue({
  el: '#app',
  data: {
    message: 'Hello Vue!'
  }
})
ログイン後にコピー

依存関係コレクションに基づく監視メカニズムの原則:

1 ネイティブ データを「監視可能なオブジェクト」に変換します。通常は、defineProperty を呼び出して、データオブジェクトはメモリ属性です。監視可能なオブジェクトには、値ゲッターまたは値セッターを含めることができます。

2 テンプレートを解析するとき、つまりウォッチャーの評価プロセス中に、評価される各監視可能なオブジェクトは現在のウォッチャーを独自のサブスクライバーとして登録し、現在のウォッチャーの依存関係になります。

3 依存する監視可能なオブジェクトに値が割り当てられると、それ自体にサブスクライブしているすべてのウォッチャーが再評価され、対応する更新、つまりウォッチャー オブジェクトでの関連する DOM 変更のレンダリングがトリガーされることが通知されます。

依存関係コレクションの利点は、スコープ内のすべてのウォッチャーを手動でトリガーしたり評価したりする必要がなく、データの変更を正確かつ積極的に追跡できることです (Angular ダーティ チェック実装の欠点)。特に配列の場合は、配列をラップして配列内の変更を監視する変数メソッド (プッシュなど) を使用する必要があります。属性を追加/削除する場合、または配列内の特定の位置にある要素を変更する場合は、obj.$add(key, value) などの特定の関数を呼び出して更新をトリガーする必要もあります。これは、ES5 の言語機能によって制限されます。

コンポーネント システム:

アプリケーション UI は、完全にコンポーネント ツリーで構成されているとみなすことができます。

コンポーネントの登録:

Vue.component('my-component', {
    // 模板
    template: '<div>{{msg}} {{privateMsg}}</div>',
    // 接受参数
    props: {
        msg: String    
    },
    // 私有数据,需要在函数中返回以避免多个实例共享一个对象
    data: function () {
        return {
            privateMsg: 'component!'
        }
    }
})
<my-component msg="hello"></my-component>
ログイン後にコピー

コンポーネントのコア オプション

1 テンプレート: テンプレートは、最終的に表示されるデータと DOM を宣言します。それらの間のユーザー マッピング関係。

2 初期データ (data): コンポーネントの初期データ状態。再利用可能なコンポーネントの場合、これは通常プライベート状態です。

3 受け入れられる外部パラメータ (小道具): データはパラメータを通じてコン​​ポーネント間で転送および共有されます。

4 メソッド: データ変更操作は通常、コンポーネントのメソッド内で実行されます。

5 ライフサイクル フック: コンポーネントは複数のライフサイクル フック関数をトリガーします。最新バージョン 2.0 では、ライフサイクル関数の名前が大幅に変更されました。

6 プライベート リソース (アセット): Vue.js では、ユーザー定義の命令、フィルター、コンポーネントなどを総称してリソースと呼びます。コンポーネントは独自のプライベート リソースを宣言できます。プライベート リソースは、コンポーネントとそのサブコンポーネントによってのみ呼び出すことができます。

Webpack は、オープン ソースのフロントエンド モジュール構築ツールです。さまざまなファイル形式の前処理ロジックを定義するための強力なローダー API を提供します。これは、.vue 接尾辞の単一ファイル コンポーネント フォームの基礎です。したがって、これに基づいて、Youda によって開発された vue-loader を使用すると、テンプレート、スタイル、ロジックの 3 つの要素を同じファイルに統合でき、.vue ファイル拡張子が付いた単一ファイル コンポーネント形式を形成できるため、プロジェクト アーキテクチャが容易になります。と開発の参考にします。

その他の機能:

1 非同期バッチ DOM 更新: 大量のデータが変更されると、影響を受けるすべてのウォッチャーがキューにプッシュされ、各ウォッチャーがキューにプッシュされます。プッシュされるのは 1 回だけです。このキューは、プロセスの次のティックで非同期的に実行されます。このメカニズムにより、同じデータに対する複数の変更によって引き起こされる冗長な DOM 操作を回避でき、また、DOM の読み取りと書き込みの切り替えによって発生する可能性のあるレイアウトを回避するために、すべての DOM 書き込み操作が同時に実行されるようにすることもできます。

2 アニメーション システム: Vue.js は、シンプルかつ強力なアニメーション システムを提供します。要素の表示が変更されると、ユーザーは対応する CSS トランジションまたはアニメーション効果を簡単に定義できるだけでなく、豊富な JavaScript フック関数も使用できます。下位レベルのアニメーション処理用。 3 スケーラビリティ: カスタム ディレクティブ、フィルター、コンポーネントに加えて、Vue.js はユーザーが複数のコンポーネントで共通の機能を再利用できる柔軟なミックスイン メカニズムも提供します。

以上がvue.js の 2 つのコアとは何ですかの詳細内容です。詳細については、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 フレームワークを使用してフロントエンド プロジェクトを開発する場合、デプロイ時に複数の環境をデプロイすることになりますが、開発環境、テスト環境、オンライン環境で呼び出されるインターフェイス ドメイン名が異なることがよくあります。どうすれば区別できるでしょうか?それは環境変数とパターンを使用することです。

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

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

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 プラグインを作成しました。

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