Node.js的T4等效工具是什么?

3
我是一名node.js新手。我需要在运行时从静态片段和服务器处理的数据中产生动态js输出,并使用控制块来控制服务器数据。在DOT NET中,我使用T4来实现此功能,但对我来说似乎所有的node.js模板引擎都只能生成HTML。是否有适用于node.js的类似T4的工具,例如可以输出不是HTML的纯文本并使用服务器控制块的工具?

一个模板引擎不仅限于一种文件类型。快速搜索给我带来了mustache(仅变量替换)和nunjucks(逻辑块、继承和其他一些很酷的功能)。 - Shanoor
@ShanShan,我认为你的评论并不完全正确,例如可以看看node-blade和所有基于haml.js的模块,比如jade和haml-coffee。它们明确知道如何解析HTML指令以生成HTML。我还没有测试过,但从代码示例看,nunjucks、swig,可能是ejs或者handlebars都能够满足我的要求。 - Dondey
我不明白为什么我的问题被搁置了。我并不是在询问哪个模块更大更好的意见。实际上,我正在询问哪个模块具有适合满足我的要求的设施,因为看起来大多数模块都没有。 - Dondey
根据回答中的来回,看起来并不清楚你在问什么。如果你编辑问题并添加更多细节,那么问题将返回到审核队列,有可能再次被开放。 - ArthurDenture
3个回答

1
大多数模板引擎可以像生成HTML一样轻松地生成JavaScript。然而,在大多数情况下,最好不要动态生成JavaScript。相反,使用由呈现的HTML中嵌入的JSON对象控制的静态JavaScript。
这有几个优点:
- 安全性。你不太可能意外地产生无效的javascript或者更糟糕的是,以一种方式错误地嵌入用户生成的内容到你的脚本中,从而使你面临XSS攻击。 - 速度。你希望保持静态和动态内容分开。静态内容可以是单个编译后的JavaScript捆绑包,托管在一个专门为服务静态内容而优化的不同域上,而动态内容可以是由你的node.js服务器生成的相对较小的文件。

请查看我对iblancasa答案的评论。我没有渲染的HTML,也无法控制或了解客户端发生的情况,因为我提供的是第三方组件。 - Dondey

0

我不确定你是否可以在NodeJS中做同样的事情(我认为不行)。

你可以使用服务器和客户端: 你可以将静态模板返回给客户端,然后将数据分开并在客户端中合并。然后,当您需要更改视图中的某些内容(任何类型的数据)时,您可以再次使用动态数据和静态模板生成它(或者只需使用任何类似于jQuery的库来编辑DOM)。

您可以使用像Moustache.js这样的客户端模板引擎来完成此操作。

希望我的回答对您有所帮助!


我猜我的描述不够明确。我的动态JS输出是一个第三方组件,它没有绑定到任何标记。它被提供和缓存在CDN服务器上,经过加工和封装。客户端接收到的是最终产品,所以没有空间给“胡子”们。 - Dondey
所以你需要编写一个离线程序,接受一些输入并生成一个Javascript文件?像mustache.js这样的模板语言仍然是正确的解决方案。您将在程序中纯粹使用它进行方便的字符串渲染;您生成Javascript文件的事实并不重要。 - ArthurDenture

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接