javascript - Jade 与 Handlebars 的混淆

标签 javascript node.js backbone.js pug

尝试使用 Jade 作为默认模板来主干+express。

遵循教程 here (很棒的教程)

困惑:

许多关于backbone的教程都使用下划线模板或句柄来编译和渲染 View 。

我使用 Jade 作为默认模板引擎。我的问题是,如果我使用 Jade,那么我是否必须使用其他模板,例如 Handlebar 或下划线。如果不是,我怎样才能在 Jade 中实现以下目标

render: function() {
  var template = $("#booktemplate").html();
  var compiled = Handlebars.compile(template);
  var html = compiled(this.model.attributes);
  this.$el.html(html);
  return this;
},

我的假设:我认为 Jade 和 Handle bar 都是模板系统,可以交替使用。是这样吗?

为什么不同时使用 Jade 和 Handlebar?我不想使用两种不同的语法

#{} from jade / {{}} from Handlebar

最佳答案

在浏览器上使用 Jade 并不是一件简单的任务。问题是 Jade 是为服务器端构建的,不支持浏览器。

这就是为什么您经常会看到人们使用两个模板引擎(如果他们使用 Jade)。其他一些人只是在任何地方使用 Handlebars 或 Underscore - 这更容易,因为在浏览器中工作的模板引擎应该在服务器上工作。但反过来并不总是正确的。

这里要注意的一点是,在开始使用模板引擎之前,请确保它支持您希望定位的环境。发动机方面有很多选择,这个网站可以帮助您找到您需要的配件:http://garann.github.io/template-chooser/

如果你真的喜欢 Jade,那么,你可以使用像 Browserify 这样的堆栈。和一些middleware (Jadeify)使其在预编译后工作。但是您需要接受 browserify 概念并接受每次都预编译所有内容。您可以查看此相关问题以了解更多详细信息:https://stackoverflow.com/a/6623561/1024223

关于javascript - Jade 与 Handlebars 的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19451554/

相关文章:

javascript - 如何在Ember应用程序中输出多个css文件

javascript - 在 Canvas 中使用 JS 倒计时器和 requestAnimationFrame

javascript - 如果存在则更新多个,否则为每个不存在的 LeadId 创建一个新文档

javascript - 困惑为什么我在 Node.js (require.js) 中得到这个错误

javascript - 在 Backbone.js 路由器中定义一个基本 url

backbone.js - 当我更改某些属性的值或从列表中删除时如何通知 View ?

javascript - MongoDB:尚未为模型 "User"注册架构

javascript - 尝试将多对多表与sequ​​elize一起使用时出现聚合错误

Backbone.js 多次触发 Collection 更改事件

javascript - 如果鼠标在 div 上移出 5 秒后未返回鼠标悬停,则更改 div 颜色,然后更改 div 的颜色