この記事では、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.js
Vue.component('global-component', Vue.extend(baseOptions)); //传入一个选项对象(自动调用 Vue.extend),等价于上行代码. Vue.component('global-component', baseOptions); // 获取注册的组件(始终返回构造器) var MyComponent = Vue.component('my-component')
ソース: 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 つの方法はシナリオで詳細な区別を使用していますが、現時点ではまだ混乱しています...
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.extendは再利用のためにコンポーネントコンストラクターを作成します
axiosを使ってプログレスバー機能付きで写真をアップロードする方法
JavaScriptでJSONデータのグループ化最適化を実装する方法
vue でのこのポインティングの問題について (詳細なチュートリアル)
以上がVue の拡張とコンポーネントの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。