vue 3公開の構想で0から最も簡略化されたvueを実現する(05-02更新)
4826 ワード
名詞の解釈ブラウザ標準:本稿ではes 6、css 3、h 5の総称として なぜvueの実現を学ぶのか
私たちがvueを使うのは、現在の業界で最も優れたソリューションの一つであるためですが、先端技術案の反復と工業標準化の発展の波は、vueでゴールすることはありません.
jqueryは死んでいません.その遺伝子はブラウザの基準に注入されています.Webcomponent shadow domのインスピレーションは、vueとreactのvdom技術にも啓発されている.もちろんvueも進化していますが、vueのライバルはreactではなく、ブラウザの標準化プロセスであることを知っておく必要があります.Webcomponentが主流になると、私たちは今喜んでいるvdom技術も移行の使命を果たしました.
だから私たちは危機感と好奇心を持って、vueに依存してはいけません.Vueのブラックボックスで何をしたのかを明らかにする必要があります.同時に,tdd,エージェントモード,オブザーバーモード,パッケージング,デカップリングなどの多くの現代ソフトウェアエンジニアリングの方法と設計モードも学ぶことができる.
Vueソースはなぜ読みにくいのか多くの機能 vueソースコードを読む目的は、まず、双方向バインド、vnodeレンダリングなど、一部のコアfeatureの実装を理解することです.Vueソースコードにはkeep alive、dynamic component、functional componentなど、多くの非コアコードが含まれています.これらは重要ではありません.私たちが一時的にその実現にあまり興味を持っていないだけで、これらのコードの干渉はコア部分の理解を阻害します.後方互換 Vueソースコードには後方互換コードが多く含まれているが、ブラウザ標準が主流フレームワークからエッセンスを吸収し、主流ブラウザがブラウザ標準に近づくにつれて、vueがフレームワークとして担う責任はますます小さくなり、最も簡単な例を挙げると、ES 6のProxyで双方向バインドを実現することはVue 2よりも大きい.xではdefinePropertyのhackの作り方が簡潔です.Webcomponentが成熟すると、vueはvdomもしなくなります.だからvue 3の実現はvue 2より簡単になるに違いない.これはすでに公式に確定されている.私はvue 4の実現がもっと簡素になると判断したが、この傾向はvueが歴史の舞台を脱退するまで続いた.
なぜ0からvueを書くのか
vueの実装を学ぶ以上、vueのソースコードにはノイズが多く含まれており、整理しにくい.ネット全体を見渡すと、ソース分析の文章やチュートリアルが次々と出ているが、構想の多くはvueコードの複雑な細部に埋もれている.では、私たちはなぜ興味のない機能をやらず、careブラウザの互換性を持たず、最新の技術だけで、霧をかき分けて最も簡略化されたVueを書かないのでしょうか.
この項目はVue 3を押す.0公开のアイデアは、开発の方法をテストして、一歩一歩最も简単なVueを书いて、私はできるだけすべてのcommitが理解しやすいことを确保します.次の手順に従うことをお勧めします.Vueについてはっきり理解します.
テストドライバ開発~why?
ソフトウェアエンジニアリングでは、私の理解では、完全に上から下への設計(滝モデル)は、もう時代遅れの方法です.オペレーティングシステムレベルのエンジニアリングのような超大型コンピュータプロジェクトでも、マクロ上から下へ、ミクロ上下結合(敏捷開発)です.TDDは上下結合のプログラミング実践であり、各モジュールに対して、まずテスト用例を設計し、コードを書いて実現する.次のメリットがあります.品質を制御し、回帰テストを容易にし、開発効率を高める test caseすなわち文書 粗いトップレベルの設計後(製品設計と技術設計を含む)、下から上へプログラミングを開始することができ、移行設計 を回避することができる.
ステップ
tddは強力なtest case、すなわちドキュメントの遺伝子を持っているため、各ステップで何をしたかを理解するには、対応するtest caseコードを見るだけでよい.
次のステップはdiff形式で与えられ、必要なところはコメントが追加されます.大段全体の説明はdiffページの下部のコメントエリアに書かれ、あるコードに対するコメントが挿入されます.コメントとissueへようこそ.
ステージ1:Basic
この部分、私達は0から始めて、いくつかの基礎のfeatureを実現して、完備を求めません TDD環境構築 Dataエージェント $watch を実現 htmlオリジナル要素レンダリング method をサポート lifecycle をサポート htmlオリジナル要素イベントリスニング mvvm を実現段階1成果:Basic Demo npm run testを実行し、ポップアップブラウザページのDEBUGボタンをクリックすると効果が表示されます
フェーズ2:mvvmの整備
この部分では、vue 2を実現するためにmvvmを改善します.xのすべてのfeatureを実現し、vue 3を実現する.0公開の重要なfeatureは、vue 2で「Detection of property addition/deletion」という公式の言い方です.xでは$setが必要です.[mvm]data深層object をサポート[mvm]dataでobjectが新規属性 をサポート[mvm]dataでobjectは削除属性 をサポートする[mvvm]array をサポート段階2成果:mvvm in depth demo npm run testを実行し、ポップアップブラウザページのDEBUGボタンをクリックすると効果が表示されます単純再構成および補足注釈 気持ちを整理して
フェーズ3:サポートコンポーネントは、属性 をサポートします.コンポーネントレンダリング を実装 event&action を実現
ステージ4:Computed&watch計算属性 watch を実現再構築:優雅な実装エージェントと依存収集 $nextTick を実現 Watcherスケジューリング を実現
複数のdataを変更すると複数回renderがトリガーされる問題を解決するために
Todo list Patch Scoped Slot
補足
virtual dom vs shadow dom
virtual domとshadow domが混同されているので、誤解しないように2つの文章をお勧めします develoger.com/shadow-dom-… svelte.dev/blog/virtua…
将来のvueの発展には2つの可能性がありますはvirtual domもするかもしれませんが、virtual domが実際にレンダリングされるとweb componentになり、現在vueのscoped cssもshadow domに取って代わられます. ですが、もう一つの可能性があります.virtual domの存在の意味は,操作domのオーバーヘッドが大きいことを考慮して,domに対してmergeを操作することである.しかし、shadow domを操作するのはずっと速くて、すべての私は未来のvirtual domに対してまだ疑いを持つ必要があるかどうか.
著者のその他の文章 ES 6類継承原理及び欠陥 転載先:https://juejin.im/post/5cbc7a06f265da03587bfad0
私たちがvueを使うのは、現在の業界で最も優れたソリューションの一つであるためですが、先端技術案の反復と工業標準化の発展の波は、vueでゴールすることはありません.
jqueryは死んでいません.その遺伝子はブラウザの基準に注入されています.Webcomponent shadow domのインスピレーションは、vueとreactのvdom技術にも啓発されている.もちろんvueも進化していますが、vueのライバルはreactではなく、ブラウザの標準化プロセスであることを知っておく必要があります.Webcomponentが主流になると、私たちは今喜んでいるvdom技術も移行の使命を果たしました.
だから私たちは危機感と好奇心を持って、vueに依存してはいけません.Vueのブラックボックスで何をしたのかを明らかにする必要があります.同時に,tdd,エージェントモード,オブザーバーモード,パッケージング,デカップリングなどの多くの現代ソフトウェアエンジニアリングの方法と設計モードも学ぶことができる.
Vueソースはなぜ読みにくいのか
なぜ0からvueを書くのか
vueの実装を学ぶ以上、vueのソースコードにはノイズが多く含まれており、整理しにくい.ネット全体を見渡すと、ソース分析の文章やチュートリアルが次々と出ているが、構想の多くはvueコードの複雑な細部に埋もれている.では、私たちはなぜ興味のない機能をやらず、careブラウザの互換性を持たず、最新の技術だけで、霧をかき分けて最も簡略化されたVueを書かないのでしょうか.
この項目はVue 3を押す.0公开のアイデアは、开発の方法をテストして、一歩一歩最も简単なVueを书いて、私はできるだけすべてのcommitが理解しやすいことを确保します.次の手順に従うことをお勧めします.Vueについてはっきり理解します.
テストドライバ開発~why?
ソフトウェアエンジニアリングでは、私の理解では、完全に上から下への設計(滝モデル)は、もう時代遅れの方法です.オペレーティングシステムレベルのエンジニアリングのような超大型コンピュータプロジェクトでも、マクロ上から下へ、ミクロ上下結合(敏捷開発)です.TDDは上下結合のプログラミング実践であり、各モジュールに対して、まずテスト用例を設計し、コードを書いて実現する.次のメリットがあります.
ステップ
tddは強力なtest case、すなわちドキュメントの遺伝子を持っているため、各ステップで何をしたかを理解するには、対応するtest caseコードを見るだけでよい.
次のステップはdiff形式で与えられ、必要なところはコメントが追加されます.大段全体の説明はdiffページの下部のコメントエリアに書かれ、あるコードに対するコメントが挿入されます.コメントとissueへようこそ.
ステージ1:Basic
この部分、私達は0から始めて、いくつかの基礎のfeatureを実現して、完備を求めません
フェーズ2:mvvmの整備
この部分では、vue 2を実現するためにmvvmを改善します.xのすべてのfeatureを実現し、vue 3を実現する.0公開の重要なfeatureは、vue 2で「Detection of property addition/deletion」という公式の言い方です.xでは$setが必要です.
フェーズ3:サポートコンポーネント
ステージ4:Computed&watch
複数のdataを変更すると複数回renderがトリガーされる問題を解決するために
var cb = jasmine.createSpy('cb');
var vm = new Vue({
data () {
return {
a:1,
b:2,
}
},
render (h) {
cb()
return h('p', null, this.a + this.b)
}
}).$mount()
expect(cb).toHaveBeenCalledTimes(1)
vm.a = 10
vm.b = 11
setTimeout(_ => {
expect(cb).toHaveBeenCalledTimes(2) // change 'a' and 'b' only trigger one render
done()
})
Todo list
補足
virtual dom vs shadow dom
virtual domとshadow domが混同されているので、誤解しないように2つの文章をお勧めします
将来のvueの発展には2つの可能性があります
著者のその他の文章