Javascript 如何保存已编译的下划线模板

Javascript 如何保存已编译的下划线模板,javascript,underscore.js,Javascript,Underscore.js,您可能知道,下划线模板在使用前需要编译。 现在,如果你有一个应用程序使用了很多,为了呈现一个由多个所谓的部分组成的特定UI,你需要编译所有的部分,这可能需要很多时间。(参考号:) 另一方面,dust框架有一个优化,它支持预编译模板。 (参考号:) 如果你想用下划线实现同样的效果,你必须找到自己的工具 到目前为止,我设法修改了以下代码(在Chrome中测试)。 此代码生成编译后的Templates源代码并将其打印到js控制台 你们知道更好的选择吗?约束条件是模板必须使用下划线。如果您使用的是re

您可能知道,下划线模板在使用前需要编译。 现在,如果你有一个应用程序使用了很多,为了呈现一个由多个所谓的部分组成的特定UI,你需要编译所有的部分,这可能需要很多时间。(参考号:)

另一方面,dust框架有一个优化,它支持预编译模板。 (参考号:)

如果你想用下划线实现同样的效果,你必须找到自己的工具

到目前为止,我设法修改了以下代码(在Chrome中测试)。

此代码生成编译后的Templates源代码并将其打印到js控制台


你们知道更好的选择吗?约束条件是模板必须使用下划线。

如果您使用的是require.js,您可以使用此插件编译并包含模板

假设所有源都位于一个称为“源”的数组(字符串)中, (这可以通过多种方式实现,但不是问题的主题)


我还没有尝试过CDN,但应该是可能的。当然,你可以按照你所做的去做,编译它们一次,然后缓存它们,这样你就不会每次都提取它们。因此,这种方法的问题是,如果你在CDN上有模板,你就不能通过AJAX请求来获取它。除非模板是JS,您可以在页面中动态包含它们。这是使用编译模板的另一个原因。您不需要所有的
.prototype.constructor
噪声:。因此,您可以简单地说
。.template(text).source
。这应该足以以通常的
JST
样式生成编译后的模板JavaScript对象(假设您在部署期间有可用的JavaScript运行时)。
sources = $('script').map(function(i, s){
    return _.template($(s).html()).prototype.constructor.source
})
console.log(sources.get().join("\n"))
var sources = [...];

var compiled_sources = sources.map(function(i, s){
    return _.template($(s).html()).prototype.source
})

console.log(sources.get().join("\n"))