2

ノックアウト.jsコンポーネントを使用すると、単一のビューモデルではなく複数のビューモデルをコンポーネントに渡すときにパフォーマンスが影響を受けるかどうか疑問に思っています。

以下を有する:

function masterViewModel(){
    this.demo = new demoViewModel().init();
    this.demo2 = new demo2ViewModel().init();
    this.demo3 = new demo3ViewModel().init();
    this.demo4 = new demo4ViewModel().init();
    this.demo5 = new demo5ViewModel().init();
    this.demo6 = new demo6ViewModel().init();
}

var mm = new masterViewModel();
ko.applyBindings(mm, $(':root').get(0));

コンポーネントからすべてのビューモデルにアクセスできるようにするために、 masterViewModel 変数全体をコンポーネントに渡すことを考えていました。

ko.components.register(element, {
    viewModel: { instance: mm },
    template: { require: 'text!views/myComponent.html' },
});

単一のビューモデルを渡す代わりにそれを行うと、パフォーマンスに悪影響が及ぶでしょうか?

ko.components.register(element, {
    viewModel: { instance: mm.demo3 },
    template: { require: 'text!views/myComponent.html' },
});
4

1 に答える 1

2

registerオプション 1 と 2の間に顕著なパフォーマンスの違いはありますか? いいえ。あなたが提示したコードだけでは、2 つのオプションは、演算子の 1 つのインスタンスを除いてほぼ同等です。.無視できる。

ノックアウトは、ビューモデルオブジェクトグラフ全体を調べてアクションを実行するわけではありません(たとえば、監視可能な変更をサブスクライブします)。ビューモデルインスタンスへの参照を保持するだけです。

質問に対する非常に直接的な答えは別として、パフォーマンスはコンテキストに依存します。どちらのオプションが速いか疑問がある場合:馬と競い合いましょう。

于 2016-06-02T05:25:28.983 に答える