javascript - handlebars.js 中缺少(或 "optional")表达式?

标签 javascript node.js handlebars.js

我正在 node.js 中编写构建脚本。简而言之,该脚本执行以下操作:

  • 提示用户输入信息(项目名称、描述等)
  • 克隆一个模板 git repo
  • 根据模板名称重命名文件(例如 com_foo_template.js --> com_foo_myproject.js)
  • 根据步骤1中的输入替换一些模板文件中的标记

我正在尝试使用 Handlebars.js 进行 token 替换步骤。

还有第二个部署阶段,其中还涉及 token 替换。这是我问题的根源。

在某些文件中,其中包含的所有标记都将在初始化期间被替换(克隆/重命名/替换部分)。在其他文件中,这些标记中只有一部分会在初始化时被替换,而其他标记在部署步骤运行之前不会被替换(比如部署日期、git 提交哈希等)。考虑以下文件:

<zimletConfig name="{{name}}" version="{{deploy_version}}">
  <global>
    <property name="allowedDomains">*.foo.com</property>
    <property name="gitCommit">{{gitcommit}}</property>
    <property name="deployDate">{{deploydate}}</property>
  </global>
</zimletConfig>

在这个文件中,只有 {{name}} 应该在初始化时被替换;其他 token 应仅在部署时替换。但是,当我运行初始化步骤时,部署时标记被替换为空字符串:

<zimletConfig name="com_foo_myproject" version="">
  <global>
    <property name="allowedDomains">*.foo.com</property>
    <property name="gitCommit"></property>
    <property name="deployDate"></property>
  </global>
</zimletConfig>

如果传入的对象中不存在 Handlebars ,有没有办法让 Handlebars 不替换 token ?

最佳答案

我想我有一个解决方案;我实现了一个 helperMissing 助手,它似乎像我认为的那样工作。

handlebars.registerHelper('helperMissing', function(token) {
    return '{{'+token+'}}';

});

我很好奇这是否是解决问题的最佳方法。

关于javascript - handlebars.js 中缺少(或 "optional")表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8949987/

相关文章:

javascript - 如何使用选择更改字段值?

javascript - 如何在子窗口的父窗口中运行脚本?

javascript - 获取/监听 channel 中的新消息

javascript - Handlebars +=,-= 如果满足条件

javascript - Firefox 中的 Handlebars XML 解析错误

javascript - 如何添加 key :value pair in an order in javascript

javascript - 将参数从中间件传递到 express 路由器

regex - 防止危险的正则表达式停止应用程序

jquery - 使用 Chart.js 时 $(...).getContext ("2d") 不是函数

javascript - NODEJS 和 HEROKU : I can't serve the static files once the server is deployed