この記事は、Vue を学習し、Vue の応答性の原則を深く理解するのに役立ちます。お役に立てば幸いです。
この記事は、レスポンシブ構文シュガーの譲渡を記念します
早速、本題に入りましょう。簡単な例を示します:
let a=3 let b=a*10 console.log(b)//30 a=4 console.log(b)//40
現時点では b=4*10 が必要ですが、#var## の前に ## を追加したとしても、これは明らかに不可能です。 # 変数のプロモーション
のみが行われ、指定した値はプロモーションされません。 現時点では、応答性の役割が反映されています。
import { reactive } from 'vue' let state = reactive({ a: 3 }) let b = computed(() => state.a * 10) console.log(b.value) // 30 state.a = 4 console.log(b.value) // 40
単純な
応答性 API のみが、変更を追跡する効果を実現できます。 [関連する推奨事項: vuejs ビデオ チュートリアル
、Web フロントエンド開発 ]
実際には、Vue3
reactive は本質的に、データの依存関係を追跡する依存関係グラフを作成することによる パブリッシュ/サブスクライブ モデル
です。依存関係グラフは、どのデータがどのデータに依存するかを説明するグラフです。データが変更されると、Vue 3 の
システムがビューの更新を自動的にトリガーします。これは、依存関係グラフ内のデータの変更を追跡し、それをビューの更新に関連付けることによってこれを実現するためです。ここでは、簡単な例として、Youda が Vue Master でデモしたコードをリストします。
class Dep{ constructor(value){ this.subscribers=new Set() this._value=value } get value(){ this.depend() return this._value } set value(newValue){ this._value=newValue this.notify() } depend(){ if(activeEffect){ this.subscribers.add(activeEffect) } } notify(){ this.subscribers.forEach(effect=>{ effect() }) } }
このコードを分析してみましょう:
subscribe
変数の値が変更されると、すべてのサブスクライバーに更新するように自動的に通知できます- 属性を購読者リストとして定義し、すべての購読者情報を保存します
depend
- 関数は依存関係を管理するために使用されます。つまり、サブスクライバが依存する変数
notify
- 関数が通知として使用されます。この変数の値はすべてのサブスクライバに対して変更されました
Vue2 の Object.defineProperty
実際には、 Vue2 の時代では応答性は
Object.defineProperty によって実装されていましたが、Vue3 では Proxy
に切り替えられました。その理由を実際のコードと組み合わせて見てみましょう。まず、 Vue2 がどのように実装されているかを見てください: <pre class='brush:php;toolbar:false;'>function reactive(raw){
Object.keys(raw).forEach(ket=>{
const dep=new Dep()
let value=raw[key]
Object.definProperty(raw,key,{
get(){
dep.depend()
return value
},
//当属性发生
set(newValue){
value=newValue
dep.notify()
}
})
})
//这时候返回的原始对象已经具有响应性
return raw
}</pre>
このような単純なリアクティブ API が実装されています
しかし、ここでの欠点は明らかです:
Vue 2.x では、渡されるオブジェクトは直接Vue.observable によって変更されました。Vue3 では、
応答性の高いプロキシを返しますが、ソース オブジェクトを直接変更しても応答しません。これにより、次のような問題が発生します。 :
オブジェクトのプロパティをProxy追加または削除する場合、Vue は初期化時にプロパティのゲッター/セッター変換を実行するため、Vue2 の応答性を検出できません。インスタンスの場合、プロパティは
しか選択できませんでしたが、 ES6 版では- data
arrayに存在する必要があります。オブジェクトに存在する場合にのみ、Vue はそれを応答型に変換できます。
サブスクリプトと長さ
の変更を検出できません- Object.definProperty
もちろん、これは歴史的な制限です。当時、ES5 は
が増えていますが、この時点で Vue の応答式がバージョンアップされました Vue3 の Proxy
Vue3 は を使用していますデータ変更を監視するための Proxy Vue2 と比較して、上記の問題を解決するだけでなく、次の利点もあります:
でリアクティビティをトリガーし、コードの見栄えを良くします。オブジェクトの依存関係を収集はじめに
包括的な配列変更検出、Vue2 の無効な境界条件を排除します。 Vue3 で書かれたレスポンシブ コード。開発がより便利になります
- 実際のコードがどのようなものかを見てみましょう:
const reactiveHandles={ get(target,key,receiver){ const dep=getDep(target,key) dep.depend() return Reflect.get(target,key,receiver) }, set(target,key,value,receiver){ const dep=getDep(target,key) const result=Reflect.set(target,key,value,receiver) dep.notify() return result } }レスポンシブな方法は
Vue3 の応答性の本質
ref
公式ドキュメントに次のような文があります: reactive のさまざまな制限() は、最終的には JavaScript が機能できないためです。すべての値の型に対する「参照」メカニズムと、リアクティブの制限は次のとおりです。
は、配列などの監視可能なデータ構造のみを処理できます。およびオブジェクト、およびプリミティブ データ型などの観察できないデータ構造は監視できません
#データが配置されているコンポーネントで定義されたデータのみを処理でき、グローバル変数は処理できませんのために生まれ、リアクティブの欠点を補っています。単純な単一の変数値に適しています(ただし、実際の開発では、ほとんどの場合、単なる参照です。はははは)基本データ型
- #そして今回はそれが必要です
- ref
がここにあり、ref は
ところで、レスポンシブ構文シュガーの提案がキャンセルされたのは残念です
(学習ビデオ共有: vuejs 入門チュートリアル 、基本プログラミング ビデオ )
以上がVueの反応性の原理を詳しく解説した記事の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Vue.jsは、2014年にYou YuxiがリリースしたプログレッシブJavaScriptフレームワークで、ユーザーインターフェイスを構築します。その中心的な利点には、次のものが含まれます。1。レスポンシブデータバインディング、データ変更の自動更新ビュー。 2。コンポーネントの開発では、UIは独立した再利用可能なコンポーネントに分割できます。

Netflixは、Reactをフロントエンドフレームワークとして使用します。 1)Reactのコンポーネント開発モデルと強力なエコシステムが、Netflixがそれを選択した主な理由です。 2)コンポーネント化により、Netflixは複雑なインターフェイスをビデオプレーヤー、推奨リスト、ユーザーコメントなどの管理可能なチャンクに分割します。 3)Reactの仮想DOMおよびコンポーネントライフサイクルは、レンダリング効率とユーザーインタラクション管理を最適化します。

Netflixのフロントエンドテクノロジーでの選択は、主にパフォーマンスの最適化、スケーラビリティ、ユーザーエクスペリエンスの3つの側面に焦点を当てています。 1。パフォーマンスの最適化:Netflixは、Reactをメインフレームワークとして選択し、SpeedCurveやBoomerangなどのツールを開発して、ユーザーエクスペリエンスを監視および最適化しました。 2。スケーラビリティ:マイクロフロントエンドアーキテクチャを採用し、アプリケーションを独立したモジュールに分割し、開発効率とシステムのスケーラビリティを改善します。 3.ユーザーエクスペリエンス:Netflixは、Material-UIコンポーネントライブラリを使用して、A/Bテストとユーザーフィードバックを介してインターフェイスを継続的に最適化して、一貫性と美学を確保します。

netflixusesaCustomframeworkは、「ギボン」ビルトンリアクト、notreactorvuedirectly.1)チームエクスペリエンス:seice basedonfamperivity.2)projectomplerprojects:vueforsplerprojects、racefforcomplexones.3)customeforsneeds:reactofforsmorefloficailie.

Netflixは、主に、パフォーマンス、スケーラビリティ、開発効率、エコシステム、技術的な負債、およびフレームワーク選択におけるメンテナンスコストを考慮しています。 1。パフォーマンスとスケーラビリティ:JavaとSpringbootが選択され、大規模なデータと高い同時リクエストを効率的に処理します。 2。開発効率とエコシステム:Reactを使用して、フロントエンド開発効率を向上させ、その豊富なエコシステムを利用します。 3.技術的な負債とメンテナンスコスト:node.jsを選択してマイクロサービスを構築して、メンテナンスコストと技術的債務を削減します。

Netflixは、主にReactをフロントエンドフレームワークとして使用し、特定の機能のためにVUEによって補足されます。 1)Reactのコンポーネント化と仮想DOMは、Netflixアプリケーションのパフォーマンスと開発効率を向上させます。 2)VueはNetflixの内部ツールと小規模プロジェクトで使用されており、その柔軟性と使いやすさが重要です。

Vue.jsは、複雑なユーザーインターフェイスを構築するのに適した進歩的なJavaScriptフレームワークです。 1)そのコア概念には、レスポンシブデータ、コンポーネント、仮想DOMが含まれます。 2)実際のアプリケーションでは、TODOアプリケーションを構築し、Vuerouterを統合することで実証できます。 3)デバッグするときは、vuedevtools and Console.logを使用することをお勧めします。 4)パフォーマンスの最適化は、V-IF/V-Show、リストレンダリング最適化、コンポーネントの非同期負荷などを通じて達成できます。

Vue.JSは中小企業から中規模のプロジェクトに適していますが、Reactは大規模で複雑なアプリケーションにより適しています。 1。VUE.JSのレスポンシブシステムは、依存関係追跡を介してDOMを自動的に更新し、データの変更を簡単に管理できるようにします。 2.反応は一方向のデータフローを採用し、データは親コンポーネントから子コンポーネントに流れ、明確なデータフローと簡単な抽出構造を提供します。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

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

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
