最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

handlebars.js中缺少(或“可选”)表达式?

IT培训 admin 9浏览 0评论

handlebars.js中缺少(或“可选”)表达式?

我正在节点中编写构建脚本。简而言之,脚本执行以下操作:

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

我正在尝试将Handlebars.js用于令牌替换步骤。

还有第二个部署阶段,它也涉及令牌替换。这是我的问题的根源。

[在某些文件中,包含在其中的所有标记将在初始化期间(克隆/重命名/替换部分)被替换。在其他文件中,这些标记中只有一些会在初始化时被替换,而其他的直到部署步骤运行后才会被替换(诸如部署日期,git commit hash等之类的东西)。考虑以下文件:

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

在此文件中,初始化时仅应替换{{name}};其他令牌应仅在部署时更换。但是,当我运行初始化步骤时,部署时令牌将替换为空字符串:

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

如果传递的对象中不存在令牌,有没有办法使它们不替换令牌?

回答如下:

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

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

});

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

handlebars.js中缺少(或“可选”)表达式?

我正在节点中编写构建脚本。简而言之,脚本执行以下操作:

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

我正在尝试将Handlebars.js用于令牌替换步骤。

还有第二个部署阶段,它也涉及令牌替换。这是我的问题的根源。

[在某些文件中,包含在其中的所有标记将在初始化期间(克隆/重命名/替换部分)被替换。在其他文件中,这些标记中只有一些会在初始化时被替换,而其他的直到部署步骤运行后才会被替换(诸如部署日期,git commit hash等之类的东西)。考虑以下文件:

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

在此文件中,初始化时仅应替换{{name}};其他令牌应仅在部署时更换。但是,当我运行初始化步骤时,部署时令牌将替换为空字符串:

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

如果传递的对象中不存在令牌,有没有办法使它们不替换令牌?

回答如下:

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

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

});

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

发布评论

评论列表 (0)

  1. 暂无评论