ホームページ >ウェブフロントエンド >jsチュートリアル >Vue の拡張とコンポーネントの違いは何ですか?
この記事では、Vue の extend、component、mixins、extensions の違いを主に紹介します。非常に優れているので、必要な方は参考にしてください
new Vue()、component
。まず、次のコードで使用されるオプション オブジェクトのbaseOptionsに同意しましょう。let options = { template: '<p>{{firstName}} {{lastName}} aka {{alias}}</p>', data: function () { return { firstName: 'Walter', lastName: 'White', alias: 'Heisenberg' } }, created(){ console.log('onCreated-1'); } };
new Vue() source:vue/src/core/instance/index.js
コンポーネントをインスタンス化する.new Vue(baseOptions); // -> onCreated-1 component source:vue/src/core/global-api/assets.jsVue.component グローバルコンポーネントを登録または取得するためのメソッドであり、その機能は、Vue.extend で生成された拡張インスタンスコンストラクターをコンポーネントとして登録(名前付け)することです。グローバルに登録されたコンポーネントは、すべての Vue インスタンスで使用できます。コンポーネント登録ステートメントよりも後で構築されます。
Vue.component('global-component', Vue.extend(baseOptions)); //传入一个选项对象(自动调用 Vue.extend),等价于上行代码. Vue.component('global-component', baseOptions); // 获取注册的组件(始终返回构造器) var MyComponent = Vue.component('my-component')他のページでbaseOptionsを「拡張」または「混合」する必要がある場合、Vueはさまざまな実装メソッドを提供します:extend、mixins、extends.
ソース: vue/src/ core/global-api/extend.js
は、Vue コンストラクターを拡張して、事前定義されたオプションを持つ再利用可能なコンポーネント コンストラクターを作成できます。let BaseComponent = Vue.extend(baseOptions); //基于基础组件BaseComponent,再扩展新逻辑. new BaseComponent({ created(){ //do something console.log('onCreated-2'); } //其他自定义逻辑 }); // -> onCreated-1 // -> onCreated-2
mixins
mixins オプションは、ミックス オブジェクトの配列を受け入れます。これらのミックスイン インスタンス オブジェクトには、通常のインスタンス オブジェクトと同様にオプションを含めることができ、それらは Vue.extend() の同じオプションを使用して論理的にマージされます。new Vue({ mixins: [baseOptions], created(){ //do something console.log('onCreated-2'); } //其他自定义逻辑 }); // -> onCreated-1 // -> onCreated-2
extends
これはミックスインに似ていますが、違いは、コンポーネント自体のオプションが拡張されるソースコンポーネントよりも優先されることです。公式ドキュメントには、次のように書かれています。パラメータを受け入れる型のみが残り、new Vue({ extends: baseOptions, created(){ //do something console.log('onCreated-2'); } //其他自定义逻辑 }); // -> onCreated-1 // -> onCreated-2結果から、3 つのメソッドは要件を達成できますが、形式は異なります
そして、これら 3 つの方法はシナリオで詳細な区別を使用していますが、現時点ではまだ混乱しています...
https://jsfiddle. ..
Option オブジェクトのマージ戦略 Vue.config.optionMergeStrategies 上記のオプション オブジェクトは、mergeOptions.Print Vue.config.optionMergeStrategies の特定の戦略に従ってマージされます。デフォルトの optionMergeStrategies が次のように表示されます。 :
mergeHook
子コンポーネントと親コンポーネントのライフサイクルイベントが配列にマージされます。親コンポーネントが最初に来て、子コンポーネントが最後に来ます。
function extend (to, _from) { for (var key in _from) { to[key] = _from[key]; } return to } function mergeAssets (parentVal, childVal) { var res = Object.create(parentVal || null); return childVal ? extend(res, childVal) : res }概要 Vue.componentは便宜上グローバルコンポーネントを登録します
Vue.extendは再利用のためにコンポーネントコンストラクターを作成します
axiosを使ってプログレスバー機能付きで写真をアップロードする方法
JavaScriptでJSONデータのグループ化最適化を実装する方法
vue でのこのポインティングの問題について (詳細なチュートリアル)
以上がVue の拡張とコンポーネントの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。