2

私は、大規模な js アプリケーションで使用したときに優れたパフォーマンスを発揮し、モバイル アプリケーションにも非常に適した JavaScript テンプレート エンジンを探しています。そのため、これらのさまざまな jsPerf-tests を実行しました。さまざまな結果を示すものがたくさんあるようで、どれが標準的なテストかを判断するのは混乱します。

参照できる標準の jsPerf を教えてもらえますか。これには、ダスト、アンダースコア、ホーガン、口ひげ、ハンドルバーのテンプレートも含まれている必要があります。

  1. 私が観察したことから、dot.js は優れたレンダリング速度を備えたコンスタントなパフォーマーですが、より大きなアプリケーションに対して十分に成熟していますか?

  2. jsPerf テストで表示される"with" および "no with" ( underscore.jsに固​​有) とは何ですか? 誰かが説明できますか。

  3. 私が見たすべてのテストで、口ひげ、ハンドルバー、ダスト、ホーガンなどの人気のあるテンプレートは、他のテンプレートよりもパフォーマンスが劣っているように見えます。

前もって感謝します

4

1 に答える 1

7

参照できる標準の jsPerf を教えてもらえますか。これには、ダスト、アンダースコア、ホーガン、口ひげ、ハンドルバーのテンプレートも含まれている必要があります。

私は手に負えないことを知っています。それは必要ですか?なんで?

アンダースコア

jsPerf テストで表示される "with" および "no with" (underscore.js に固​​有) とは何ですか? 誰かが説明できますか。

あり、便利、遅いパフォーマンス

_.template("<%= myvar %>", { myvar: "foo" });

ない、不便、速いパフォーマンス

_.template("<%= data.myvar %>", { myvar: "foo" }, { variable: "data" });

両方の長所

_.extend( _.templateSettings, { variable: "data" } ); // Do this once.
_.template("<%= data.myvar %>", { myvar: "foo" });
_.template("<%= data %>", "foo");
_.template("<%= override.myvar %>", { myvar: "foo" }, { variable: "override" });

また、テンプレート関数は、2 番目の引数が null、未定義、または指定されていない場合、コンパイル済みのテンプレートを返すことに注意してください。したがって、オーバーライド変数の場合:

var renderFn = _.template("<%= override.myvar %>", null, { variable: "override" });
renderFn({ myvar: "foo" });

パフォーマンスと可読性

私が見たすべてのテストで、口ひげ、ハンドルバー、ダスト、ホーガンなどの人気のあるテンプレートは、他のテンプレートよりもパフォーマンスが劣っているように見えます。

JavaScript のすべてがパフォーマンスに関係しているわけではありません。スケーラビリティ、保守性、読みやすさ、利便性のバランスが必要です。経験則は、読みやすさと利便性のためのコードであり、必要な場合にのみパフォーマンスを最適化します。このトピックについてよく議論されているSO スレッドがあります。

答えを言うと、他のテンプレート メソッドは、他のテンプレート メソッドよりも優先度の低いパフォーマンスで選択されることがよくあります。

于 2013-07-10T01:29:14.287 に答える