この記事では、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 つのメソッドは要件を達成できますが、形式は異なります
- Vue。 . extend は、再利用可能なコンポーネントを作成するためのコンストラクターを作成するだけです
- mixins、extends
- ソースコードから、extend、extends、および mixins によって受け取られるオプションを拡張します。 3 つの方法は最終的に mergeOptions によってマージされます。違いは、公式ドキュメントに記載されている優先順位だけです。したがって、コンポーネントの機能の単純な拡張であれば、3 つの方法をすべて使用できます。
そして、これら 3 つの方法はシナリオで詳細な区別を使用していますが、現時点ではまだ混乱しています...
//いくつかの方法の異なる例:
https://jsfiddle. ..
mergeHook
子コンポーネントと親コンポーネントのライフサイクルイベントが配列にマージされます。親コンポーネントが最初に来て、子コンポーネントが最後に来ます。
- watch
- 子コンポーネントと親コンポーネントのウォッチャーは配列にマージされます。親コンポーネントが最初に来て、子コンポーネントが最後に来ます。
- mergeAssets (フィルター、コンポーネント、ディレクティブ)
- は、最初に子コンポーネント内で検索されます。そうでない場合は、プロトタイプチェーンを遡って、親コンポーネント内の対応する属性を見つけます。
- データマージルール
- 重複した属性は保持されません
- 同名カバレッジ
- データ内のオブジェクトにも同じルールがあり、重複した属性は保持されず、同じ名前カバレッジ
- props、methods、computed: 重複した保持はなく、同じ名前のサブコンポーネントが親コンポーネントをカバーします
- mergeAssets
- mergeAssets マージメソッドでは、最初にプロトタイプデリゲートが使用されます。上で作成した新しいオブジェクトのプロトタイプ チェーン内の親コンポーネントのプロパティを次に、新しいオブジェクト
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 サイトの他の関連記事を参照してください。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

現実世界におけるJavaScriptのアプリケーションには、サーバー側のプログラミング、モバイルアプリケーション開発、モノのインターネット制御が含まれます。 2。モバイルアプリケーションの開発は、ReactNativeを通じて実行され、クロスプラットフォームの展開をサポートします。 3.ハードウェアの相互作用に適したJohnny-Fiveライブラリを介したIoTデバイス制御に使用されます。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター

メモ帳++7.3.1
使いやすく無料のコードエディター

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

WebStorm Mac版
便利なJavaScript開発ツール
