在 ember 计算属性中使用反引号
Posted
技术标签:
【中文标题】在 ember 计算属性中使用反引号【英文标题】:Use of backtick in ember computed properties 【发布时间】:2016-04-05 08:09:35 【问题描述】:指南show a computed property 用反引号编写。我不确定它们是否有必要。
这样可以吗:
fullName: Ember.computed('firstName', 'lastName', function()
return `$this.get('firstName') $this.get('lastName')`;
)
改写成这样:
fullName: Ember.computed('firstName', 'lastName', function()
return this.get('firstName') + ' ' + this.get('lastName');
)
?
对我来说,这不那么晦涩难懂。每种方法的优缺点是什么?
【问题讨论】:
【参考方案1】:后面的记号与 Ember 无关。它们是 ES6 的一部分,称为模板字符串。它们只是使字符串插值更容易。您可以在花括号中包含任何有效的 js 语句并对其进行评估。它们还允许多行字符串。
我知道的一个要点是模板字符串会立即得到评估。因此不能通过将其分配给变量来重用。变量只会得到评估结果。
Here is more info about them in MDN.
【讨论】:
感谢 MDN 链接。我知道它们与 Ember 无关,但这是我第一次看到它们被广泛使用。 确实,Ember 团队的一些核心成员参与了 ecmascript 标准,因此 Ember 试图为 JS 的未来做规划,并尽可能地拥抱即将推出的功能。 es6 模块,自定义元素,…… @gonvaled Ya ember 几乎推动了早期采用模块等较新的 es6 功能。我认为此链接可能有助于了解有关模板字符串和 YDKJS 书中的任何陷阱的更多信息。 github.com/getify/You-Dont-Know-JS/blob/master/…【参考方案2】:它们基本相同。事实上,目前,反引号语法或 es6 template strings 正在被转换回最终代码中的第二个版本。
有些人可能会争辩说第一种形式更合乎逻辑,并且当使用更简单的变量名时,更具可读性。它还允许对 i18n 库进行代码扫描,例如基于 gettext 的库,以便轻松找到它们。在浏览器广泛支持反引号语法之前,我怀疑他们是否可以对此有所帮助。它来了。 Chrome、Firefox、Safari、Edge 都支持。
最后,如果你喜欢就使用它们,如果你不喜欢它们就不要使用它们。没关系。
(specs 中的正式定义)
【讨论】:
以上是关于在 ember 计算属性中使用反引号的主要内容,如果未能解决你的问题,请参考以下文章
Ember 数据模型中的计算属性不适用于 ember-cli-mirage 模型