javascript - Ember 2,使用 ember-truth-helpers 等插件进行表演,而不仅仅是 Ember 默认方式

标签 javascript performance ember.js ember-data computed-properties

如果我使用这个插件:https://github.com/jmurphyau/ember-truth-helpers

比方说,有很多,

{{#if (eq model.beautiful true) }}

{{#if (或 (eq model.beautiful true) (eq model.crazy true) ) }}

Ember 在后台创建什么?相同的 javascript 也可以像下面这样计算属性:

isBeautiful: Ember.compulated.equal('model.beautiful', true); 等等?

如果我有 30 个计算属性(Ember 宏和自定义宏),最好使用此插件还是默认的 Ember 方式?

我想知道,因为在某些模板中我可以多次出现类似的内容!:

{{#if (或 (eq model.beautiful true) (eq model.crazy true) ) }}

而不仅仅是这个:

{{#if isBeautifulOrCrazy }}

就性能而言,最佳解决方案是什么?

最佳答案

我认为用户不会注意到任何差异。我的选择是尽可能减少代码和更好的可维护性。就您而言,如果您有超过 3 条相同的行 {{#if (or (eq model.beautiful true) (eq model.crazy true) ) }},我建议您计算属性(property)。它将使模板变得更加简单, Controller 也变得更大。如果您在几个模板中具有完全相同的行,则可以在模型上创建计算属性,因此它将是 {{#if model.isBeautifulOrCrazy }}。或者模板助手。

what is Ember creating in background?

任何助手都只是一个返回某个值的函数。 eq 帮助器将如下所示:

function eq([l, r]) {
  return l === r;
}

当 ember 渲染模板时,它会评估此函数,然后使用它的值。如果参数之一发生更改,则会发生重新渲染。我认为在幕后它与 CP 类似。

关于javascript - Ember 2,使用 ember-truth-helpers 等插件进行表演,而不仅仅是 Ember 默认方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45143207/

相关文章:

javascript - 在绑定(bind)属性更改时保留模型

javascript - 简单的 Ember.js 测试方法

rest - 如何强制ember-data从服务器重新加载记录的数据

html - 如何禁用 Ember.js 选择菜单中的第一个选项

javascript - AngularJs ng-repeat 中所选项目的切换功能

javascript - 如何在浏览器中使用 Babel 6 外部助手?

javascript - 复制当前网址按钮 - Javascript

c++ - 如何加速这个 Rcpp 函数?

performance - Tomcat 对比 Websphere 的 Web 容器性能

javascript - 在 AngularJS 中放置 Cordova/Phonegap 事件的最佳位置