今回はカスタムライブラリの開発方法と、カスタムライブラリを開発する際の注意点を紹介します。実際のケースを見てみましょう。
もちろん、このライブラリはまだ初期段階にあり、関数の実装は比較的単純です。これを改善するための基礎として使用してください。プロジェクトのアドレス: Hoz.js、誰でも開始、フォーク、問題提起を歓迎します。式の特徴
redux、fluxなどの考え方に学び、状態管理を導入
state
<p id = "app"> <p> <img src="{{moveImage}}" /> <p>{{moveName}}</p> </p> </p>
var hoz = new Hoz('app', state, changeStore) var state = { moveName: '', moveImage: '' } function changeStore (state, action) { switch (action.type) { case 'SET_NAME': { state.moveName = action.data break } case 'SET_IMAGE': { state.moveImage = action.data break } } } hoz.store.dispatch({ type: 'SET_NAME', data: '后来的我们' })
var state = { moveName: '', moveImage: '' }
function changeStore (state, action) { switch (action.type) { case 'SET_NAME': { state.moveName = action.data break } case 'SET_IMAGE': { state.moveImage = action.data break } } }
そこで、hoz は仮想 dom アルゴリズムを導入し、ネイティブ JavaScript オブジェクト を使用して dom オブジェクトをマッピングしました。これは、ネイティブ JavaScript オブジェクトの操作がより高速かつ簡単であるためです。
地図を作成するには?たとえば、hoz.store.dispatch({
type: 'SET_NAME',
data: '后来的我们'
})
コンストラクター
で渡されたidが指す要素をルート要素として仮想domツリーを構築します。データが変更されると、domは直接操作されず、仮想domツリーが変更されます。次に、diff アルゴリズムを使用して新旧の仮想 DOM ツリーを比較し、実際の DOM を最小単位で変更します。 hoz はどのようにしてデータ応答性を実現しているのでしょうか?パブリッシュ/サブスクライブ モードは、主に Object.defineProperty メソッドを使用して実装されます。状態内のデータのゲッター プロパティとセッター プロパティは、初めてレンダリングするときに、対応するサブスクライバーがトピックに追加されます。データが変更されたときに、setter のデータに対応するトピック オブジェクトの Notice メソッドを呼び出して、各サブスクライバーに更新を通知するメッセージをパブリッシュします。view -> dispatch -> action -> changeStore -> state -> view
Webkit-font-smoothing font anti-aliasing rendering use caseの詳しい説明
以上がカスタムライブラリの開発方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。