vv ソースコードを一緒に学び理解する
vue の公式 Web サイトによると、vue は mvvm フレームワークであり、レスポンシブであることがわかります。その意味をより深く理解するために、簡単な mvvm 学習デモを実装しました。以下の皆さんと共有し、一緒に議論してください。
1. mvvm には少なくともコンテンツ
命令セット (テキスト、モデルなど) が含まれています。
データ モデル、ビューと対話するデータ
コンポーネントのサポート: つまり、 HTML コードの一部の動的更新
2. 私の実装
1. 変数の定義と watch の実装
var directives = {}; //指令集合var vNodes = new Array(); //解析的Dom集合var dataModel = { name:"name", title: "title"}; //数据Modelvar Watch = { isInit: false, watchs: new Array(), run: function(newValue, expOrfn){ var self = this;if(!self.isInit){ expOrfn.call(vModel); }this.watchs.map(function(data,index){ data.nodes.map(function(d,i){if(self.isInit){ d.directive.init(newValue, d, data); //绑定初始化值, 以及初始化一些事件}else{ d.directive.update(newValue, d, data); //只更新值,此时run的调用来值value-set } }); }); self.watchs = []; }, push:function(watch){this.watchs.push(watch); } } //任务管理
説明:
Watch の Push メソッドは依存関係を追加するために使用されます。依存関係を実行するには、実行が完了した後、現在の依存関係コレクションをクリーンアップする必要があります。 vueでの依存関係の収集はdepで完結し、watchでタスク管理を提供します(正しく理解できているかわかりません)
2.命令の定義
directives.text = { init: function(value, vNode){ vNode.elm.textContent = value; }, update: function(value, vNode){ vNode.elm.textContent = value; } }//需要响应事件的怎么办directives.model ={ init: function(value, vNode, _watch){ vNode.elm.value = value; //判断自己发生的改变,不应该再改变自己 vNode.elm.addEventListener('keyup',function(evt){ vNode.model[_watch.key] = vNode.elm.value; }); }, update:function(){ } }
手順:
デモの学習例なので、textとmodelの2つの簡単な仕様だけを定義しています。 text:はデータの表示に使用され、modelは入力(入力ボックス)の応答に使用されます
3. vModel の生成
//转换vModel,暂支持一级var properties = Object.getOwnPropertyNames(dataModel);var vModel = {}, formSetting = false;for( var index in properties){ (function refreshData(_index){var key = properties[_index];var property = Object.getOwnPropertyDescriptor(dataModel, key);var setter = property.set;var getter = property.get;var _val = property.value;var _getter = function(){var val = getter ? getter.call(vModel) : _val;//收集依赖,与watch要分开 Watch.push({ key: key, nodes: vNodes.filter(function(data,index){return data.modelKey == key ? true : false; }), getter: _getter });return val; }; Object.defineProperty(vModel, key, { configurable: true, enumerable: true, set: function(value){if(setter){ setter.call(vModel, value); } //处理依赖 Watch.run(value, _getter);//this.value = value; }, get: _getter }) })(index); }
説明:
vModel は dataModel に基づいて生成されます。つまり、各属性の get メソッドと set メソッドがカスタマイズされており、es6 のプロキシを使用して実装することもできます (Are)そうです)。
属性を設定するとき、依存関係を収集するために最初に get メソッドが呼び出されます。コンビニエンス値を変更すると、影響を受けるすべてのコンテンツを変更できます。
4. dom を vNode に解析する
//解析vNodesvar app = document.getElementById('app'); app.childNodes.forEach(function(data,index){if(data.nodeType != 1) return;var hv = data.getAttribute('data-hv');var hvs = hv.split(','); hvs.forEach(function(item,row){var keyValue = item.split(':'); //vNode对象上一定要有model,这是方便vNode相应时候的找vModel vNodes.push({ directive: directives[keyValue[0]], modelKey: keyValue[1], model: vModel, elm: data }); }); });
説明:
これは dom 上の data-hv で指定された命令を収集するだけなので、vNode に解析されるというのは突飛です。 、要素、vModel などはオブジェクトを形成し、vModel の各属性の get メソッドが依存関係を収集するときに参照するために vNode に保存されます。
5. 最初の初期化
//调用所有的get一次Watch.isInit = true;var _keys = Object.getOwnPropertyNames(vModel); _keys.map(function(key,data){var data = vModel[key]; Watch.run(data); }); Watch.isInit = false;
手順:
ここでは、各 get がアクティブに実行され、その後 watch.run メソッドが実行されます。
ここでの設計と実装は、vue の考えと一致していないように感じます。もしこれを見た人がいたら、アドバイスと指導をお願いします。
6. 解析されたドム
以上がvv ソースコードを一緒に学び理解するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Python 言語は高級プログラミング言語として、学習が容易で読み書きも容易であり、ソフトウェア開発の分野で広く使用されています。ただし、Python のオープン ソースの性質により、ソース コードには他の人が簡単にアクセスできるため、ソフトウェアのソース コードの保護にいくつかの課題が生じます。したがって、実際のアプリケーションでは、Python ソース コードを保護し、そのセキュリティを確保するために何らかの方法を講じる必要があることがよくあります。ソフトウェア ソース コードの保護では、Python のさまざまなアプリケーション プラクティスから選択できます。以下は一般的なものです

PHPコードのソースコードを解釈・実行せずにブラウザ上に表示するにはどうすればよいでしょうか? PHP は、動的 Web ページの開発に一般的に使用されるサーバー側スクリプト言語です。サーバー上で PHP ファイルが要求されると、サーバーはそのファイル内の PHP コードを解釈して実行し、最終的な HTML コンテンツを表示のためにブラウザーに送信します。ただし、PHP ファイルのソース コードを実行するのではなく、ブラウザーに直接表示したい場合があります。この記事では、PHPコードのソースコードを解釈・実行せずにブラウザ上に表示する方法を紹介します。 PHPでは、次のように使用できます

ブラウザの開発者ツールを使用して、Web サイトのソース コードを表示できます。Google Chrome ブラウザの場合: 1. Chrome ブラウザを開き、ソース コードを表示する Web サイトにアクセスします。2. Web 上の任意の場所を右クリックします。ページに移動して「検査」を選択するか、ショートカット キー Ctrl + Shift + I を押して開発者ツールを開きます; 3. 開発者ツールの上部メニュー バーで、「要素」タブを選択します; 4. HTML と CSS コードを確認するだけですウェブサイトの。

Golang フレームワークのソース コードを理解することで、開発者は言語の本質を習得し、フレームワークの機能を拡張できます。まず、ソース コードを入手して、そのディレクトリ構造を理解します。次に、コードを読み、実行フローをトレースし、依存関係を理解します。実際の例では、この知識を適用する方法、つまりカスタム ミドルウェアの作成とルーティング システムの拡張方法を示します。ベスト プラクティスには、段階的に学習すること、無意識のコピー&ペーストを避けること、ツールを利用すること、オンライン リソースを参照することが含まれます。

Vue ではソースコードを表示できます Vue でソースコードを表示する方法は、 1. 「git clone https://github.com/vuejs/vue.git」で Vue を入手する; 2. 「npm i」で依存関係をインストールする; 3. 「 npm i -g rollup」を使用してロールアップをインストールします; 4. 開発スクリプトを変更します; 5. ソース コードをデバッグします。

IDEA で Tomcat ソース コードを表示する手順: 1. Tomcat ソース コードをダウンロードする; 2. Tomcat ソース コードを IDEA にインポートする; 3. Tomcat ソース コードを表示する; 4. Tomcat の動作原理を理解する; 5. 注意事項; 6. 継続的な学習と更新する; 7. ツールとプラグインを使用する; 8. コミュニティに参加して貢献する。詳細な紹介: 1. Tomcat ソース コードをダウンロードします。ソース コード パッケージは、Apache Tomcat の公式 Web サイトからダウンロードできます。通常、これらのソース コード パッケージは ZIP または TAR 形式などです。

この記事では、Go フレームワークのソース コード分析と最適化について説明します。ソース コード構造には、コア フレームワーク ロジック、リクエスト コンテキスト、データ バインディング、レスポンス レンダリングを含む 4 つの主要なパッケージが含まれています。最適化手法には次のようなものがあります。 1. ルーティング ツリーを使用してルート処理を最適化し、ルート検索速度を大幅に向上させます。 2. キャッシュと圧縮にミドルウェアを使用して、サーバーの負荷と応答時間を削減します。 3. 高い応答性を維持するために、コールバックで時間のかかる操作を実行しないようにします。 4. ロギングを有効にして遅いリクエストを分析し、パフォーマンスのボトルネックを特定します。 5. 最新のパフォーマンス向上を活用するために、フレームワークのバージョンを定期的に更新します。

PHP ソース コード エラー: インデックス エラーの問題を解決するには、特定のコード サンプルが必要ですインターネットの急速な発展に伴い、開発者は Web サイトやアプリケーションを作成するときにさまざまな問題に遭遇することがよくあります。中でも PHP は人気のあるサーバーサイド スクリプト言語であり、そのソース コード エラーは開発者がよく遭遇する問題の 1 つです。 Web サイトのインデックス ページを開こうとすると、「InternalServerError」、「Unde」などのさまざまなエラー メッセージが表示されることがあります。
