handlebars.js - 在 Assemble 中使用模板继承

标签 handlebars.js template-engine gruntjs assemble

是否可以在模板中定义区域,从页面中提取内容?

假设我的模板中有以下结构:

<div class=sidebar></div>
<div class=content></div>

从页面内容中,我想将一些 html 内容拉到侧边栏,将其他内容拉到内容 div。

这可能吗?

最佳答案

以 Swig 作为引擎

是的,这是可能的。参见 https://github.com/assemble/boilerplate-swig,特别是 this example ,它展示了如何使用 {% macro %} 标记来完成您所询问的内容。

如果您想使用 Swig,请务必查看自述文件作为 assemble-swig repo 也是如此。您必须在 assemble 中将 swig 注册为当前引擎:

assemble: {
  options: {
    engine: 'swig'
  }
}

以 Handlebars 为引擎

如果侧边栏内容总是相同的,那么在每一页上你都可以使用部分内容。即使每个页面上的 URL 或事件类发生变化,这也应该有效。

但是,使用模板或“ block ”继承的动态内容,例如extend 可以用 Handlebars helpers 实现.

但是自layoutsassemble 一起使用这对于“开箱即用”的助手来说有点棘手。澄清一下,除了这个——特别是因为布局的工作方式,我能想到的几乎所有助手都可以很好地与开箱即用的 assemble 一起工作。

我的建议是,您在 assemble 和/或 handlebars-helpers 项目上为此添加现有功能请求,以添加您的用例和对您想要实现的目标的想法:

关于handlebars.js - 在 Assemble 中使用模板继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18015532/

相关文章:

javascript - 无法使用 handlebars 和 assemblefile.js 呈现部分

meteor 火焰 HTML : conditional templates inside each loop

node.js - 如何在不重启服务器的情况下将expressjs静态模板部署到AWS?

node.js - 在构建服务器上预构建事件 grunt,但未找到 grunt

node.js - express-handlebars、express-hbs 和 hbs 模块有什么区别,

java - 在带有自定义标签的android中使用 block 模板引擎

java - Google App Engine 是否有 HTML 模板引擎(Java 版本)?

html - 无法使用 Nunjucks 覆盖最终文件中的变量值

javascript - 使用 Grunt 动态生成 RequireJS "bundles"配置

gruntjs - Grunt 构建在 travis 中失败 - "Cannot find any-promise implementation"