【问题标题】:T4 equivalent for node.js [closed]node.js的T4等效项[关闭]
【发布时间】:2016-04-03 16:51:02
【问题描述】:

我是 node.js 新手。我需要在运行时从静态 sn-ps 和服务器烹制的数据生成动态 js 输出,控制块使用服务器数据。在 DOT NET 中,我使用 T4 来实现这一点,但在我看来,好像所有 node.js 模板引擎都只知道如何生成 HTML。 node.js 是否有任何 T4 等效项,例如一种可以输出非 HTML 纯文本并使用服务器控制块的软件?

【问题讨论】:

  • 模板引擎未绑定到一种类型的文件。快速搜索给了我mustache(仅限变量替换)和nunjucks(逻辑块、继承和其他一些很酷的东西)。
  • @ShanShan,我认为您的评论并不完全正确,例如查看 node-blade,以及所有基于 haml.js 的模块,如 jam 和 haml-coffee。他们明确知道如何解析 html 指令以生成 html。还没有测试,但是从代码示例来看,nunjucks、swig 和 ejs 或车把可以满足我的要求。
  • 我不明白为什么我的问题被搁置了。我不是在征求关于哪个模块更大更好的意见。我实际上是在问哪个模块具有适合首先满足我的要求的设施,因为看起来大多数都没有。
  • 基于答案中的来回,看起来你在问什么并不是很清楚。如果您编辑问题并添加更多详细信息,该问题将返回到审核队列中,可能会重新打开。

标签: node.js template-engine t4


【解决方案1】:

大多数模板引擎可以像生成 HTML 一样轻松生成 Javascript。但是,在大多数情况下,最好不要动态生成 Javascript。相反,请使用由动态生成的数据控制的静态 Javascript,例如嵌入在呈现的 html 中的 JSON 对象。

这有几个优点:

  • 安全。您不太可能意外生成无效的 javascript,或者更糟的是,将用户生成的内容错误地嵌入到您的脚本中,从而使您容易受到 XSS 攻击。
  • 速度。您希望将静态和动态内容分开。静态内容可以是单个已编译的 Javascript 包,托管在为提供静态内容而优化的单独域上,动态内容可以是由您的 node.js 服务器生成的相对较小的文件。

【讨论】:

  • 请参阅我对 iblancasa 回答的评论。我没有呈现的 HTML,也无法控制或了解客户端上发生的事情,因为我提供的是第 3 方组件。
【解决方案2】:

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

您可以使用服务器和客户端工作: 您可以将静态模板和数据分别返回给客户端,然后将其加入客户端。然后,当您需要更改视图中的某些内容(任何类型的数据)时,您可以使用动态数据和静态模板再次生成它(或者简单地使用任何库,如 jQuery 来编辑 DOM)。

您可以使用 Moustache.js 等客户端模板引擎来实现。

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

【讨论】:

  • 我想我的描述不够明确。我的动态 js 输出是未绑定到任何标记的第 3 方组件。它被提供并缓存在 CDN 服务器上,经过烹制和密封。客户收到最终产品,因此没有留胡子的空间。
  • 所以你需要编写一个离线程序来接受一些输入并生成一个 Javascript 文件吗?像 mustache.js 这样的模板语言仍然是正确的解决方案。您将使用它纯粹是为了在程序中方便地呈现字符串;您碰巧正在生成 Javascript 文件这一事实无关紧要。
【解决方案3】:

也许 Powershell 它不是特定于 .net 的,所以您可以将它用于 nodejs 吗?见https://danielbrannstrom.wordpress.com/2012/01/18/powershell-as-a-t4-text-template-alternative/

【讨论】:

    猜你喜欢
    • 2011-08-30
    • 2012-09-03
    • 2012-01-10
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2014-11-19
    • 2010-12-04
    相关资源
    最近更新 更多