gpt4 book ai didi

javascript - 模板引擎中的 "with"和 "no with"

转载 作者:行者123 更新时间:2023-12-04 19:44:23 26 4
gpt4 key购买 nike

我正在寻找一个在大型 js 应用程序 中使用时性能良好并且也非常适合移动应用程序 的 javascript 模板引擎。因此,我已经针对这些进行了各种 jsPerf 测试。似乎有很多显示不同的结果,很难找出哪个是标准测试。

有人可以指导我一个我可以引用的标准 jsPerf,它还应该包括以下模板 dust、underscore、hogan、mustache、handlebars。

  1. 据我观察,dot.js 是一个稳定的执行者,具有良好的渲染速度,但对于更大的应用程序是否足够成熟?

  2. jsPerf 测试中显示的“有”和“无”(特定于 underscore.js)是什么?谁能解释一下。

  3. 在所有测试中,我都看到了像 mustache 这样的流行模板, Handlebars 、灰尘、霍根等似乎落后于性能其他模板,那么为什么人们使用它们而忽略了顶部表演者,是因为这些模板引擎成熟了吗?

提前致谢

最佳答案

Can some one guide me a standard jsPerf that I can refer to and that should also include following templates dust, underscore, hogan, mustache, handlebars.

我知道非副手。那是必需的吗?为什么?

下划线

What is "with" and "no with" (specific to underscore.js) that is shown in the jsPerf tests? Can some one explain.

有,方便,性能较慢

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

Non-with,不方便,更快的性能

_.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" });

另请注意,如果第二个参数为 null、未定义或未给定,则模板函数会返回编译后的模板。所以在覆盖变量的情况下:

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

性能与可读性

In all the tests I have seen popular templates like mustache, handlebars, dust, hogan,etc seems to be behind performance than other templates, so why people are using them leaving out the top performers,is it because of maturity of these template engines?

并非 JavaScript 中的所有内容都与性能有关。必须在可伸缩性、可维护性、可读性和便利性之间取得平衡。经验法则是代码的可读性和便利性,然后只在需要时优化性能。有一个 SO thread对该主题进行了很好的讨论。

所以要回答,通常选择其他模板方法时性能优先级低于其他模板方法。

关于javascript - 模板引擎中的 "with"和 "no with",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11113909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com