下划线模板的自定义解析

Custom Parsing of Underscore Templates

我写了一个函数,它接受一个字符串,以及来自 backbone 模型的 returns 信息。不过,它不是直接从模型中提取属性,而是使用属性来形成更复杂的数据 - 例如,日期解析,或获取用于特定类型对象的正确图标 -

// returns a parsed date modified with format MM/DD/YYYY
parseString("dateProperty:MM/DD/YYYY:dateModified");
// returns the HTML needed to display an icon based on the model type.
parseString("icon:type");

现在我正在从模板本身内部调用我的解析函数 -

<div>Date modified <%= parseString("dateProperty:MM/DD/YYYY:" + dateModified) %></div>

但是 我希望能够将我的解析函数自动应用于每个值,而不是仅仅将我的 Backbone 模型推入并直接应用属性。

基本上,我希望能够使用我的模板执行此操作 -

<div>Date modified <%= dateProperty:MM/DD/YYYY:dateModified %></div>

并将 dateProperty:MM/DD/YYYY:dateModified 发送到 parseString

这是一个相当大的 Backbone 设置的一部分,parseString 函数在我用来构建模型和集合的整个 JSON 中使用;如果模板中字符串的行为相同,我会喜欢它。

如果你真的想要那种语法,我认为你最好的选择是 "copy" 下划线以外的 _.template 代码,并在其中添加对自定义语法的支持。

如果您有更适合 JavaScript 的语法,例如函数调用

<%= z$("dateProperty:MM/DD/YYYY:dateModified") %>

还有一些其他选项(全局、混合在模板 with 语句中的对象等)。就目前而言,您几乎必须自己实施它。

或者您可以采用更有特色的模板语言。