【问题标题】:specify one file for handlebars compiler为车把编译器指定一个文件
【发布时间】:2013-08-31 18:42:25
【问题描述】:

我正在尝试在 webstorm 中设置监视文件。

我想将一个文件预编译到我的主 templates.js 聚合文件中。

这可能吗?

如果我使用/path/to/hello.tpl -f templates.js 选项,它只会覆盖templates.js 文件中的所有其他模板。

如果我使用/path/to/templates > templates.js,这意味着当我只修改一个模板时,我必须在我的文件观察器中预编译每个模板。

编辑:

如果您传递一个目录,并将其输出重定向到一个文件,您可以在一个文件中获取所有预编译的模板。 handlebars -e tpl ./templates/ > ./js/templates.js

这将预编译所有./templates/*.tpl 文件并将它们保存到./js/templates.js,然后您可以将其包含在您的页面中。

以下是有关该技术的更多信息: http://berzniz.com/post/24743062344/handling-handlebars-js-like-a-pro

【问题讨论】:

  • 我有一个疑问,通常我使用的是一对一映射模板和js。但是,您使用的是不同的方法,例如 多对一 模板和 js。您能否分享一些教程/博客以深入了解。
  • 谢谢,自从开始学习handlebar.js以来,我标记为fav。看来我做的还不够。我会在几分钟内删除我的答案。

标签: javascript webstorm handlebars.js


【解决方案1】:

有一个 nodejs 插件可以完全满足您的需求以及更多功能。请尝试一下,看看它是否适合您。

https://github.com/cif/handlebar-rider

【讨论】:

  • 请注意 link-only answers 是不鼓励的,所以答案应该是寻找解决方案的终点(而不是另一个参考中途停留,随着时间的推移往往会变得陈旧)。请考虑在此处添加独立的概要,并保留链接作为参考。
【解决方案2】:

我对此的解决方案是稍微修改把手模块本身,以便在 node_modules\handlebars\bin\handlebars 中找到 processTemplate 函数并进行更改

if (extension.test(path) || fs.statSync(path).isDirectory()) {
    processTemplate(path, root || template);
  }

if (extension.test(path) || /\.hbr$/.test(path)|| fs.statSync(path).isDirectory()) {
    processTemplate(path, root || template);
  }

然后它会获取你所有的模板文件(我给了一个 hbr 扩展名)并将它们放在 -f 标志指定的文件中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多