流星中的翡翠模板

时间:2012-04-11 11:20:45

标签: meteor pug

在Meteor FAQs http://meteor.com/faq/how-do-i-package-a-new-templating-system中,有一些关于添加不同(比默认Handlebars)模板系统的信息。 Jade是文档中其他地方明确指出的唯一其他示例。

有人已经在研究Jade吗?如果没有,我开始可行吗?还是现在还为时尚早?例如:

  

软件包API正在快速变化,未记录,因此您不能   现在制作自己的包。即将推出。

我一直在尝试在我目前的Ember.js项目中爱上Handlebars,但对我来说没有什么比Jade更优雅。

5 个答案:

答案 0 :(得分:22)

我们希望看到Jade整合。使用packages/handlebars作为模板。

基本策略是将模板引擎的输出连接到Meteor.ui.render,这是我们实现实时页面更新的方式。只要你的模板返回HTML,那就行了。每当Jade模板引用Meteor.Collection文档或Session变量时,Meteor都会注册该依赖项,以便在数据发生变化时知道重新呈现模板。

但更好的方法是使用Meteor.ui.chunkMeteor.ui.listChunk。这些将限制Meteor在发生变化时必须重新计算的数量。例如,如果您使用Handlebars中的{{#each}}来渲染文档列表,那么当新文档进入结果集时,没有理由重新计算整个模板。我们只为新文档渲染一个HTML块,然后将其插入DOM中。那是listChunk在行动。

因此,您可能会发现在Jade中仅仅if / unlessfor / each进行检测可以让您走得很远。

请注意,软件包开发并不像系统的其他部分那样有文档记录。所以,当你走的时候,不要犹豫,提出更具体的问题。

答案 1 :(得分:16)

meteor> = 0.8.0

使用mquandalle:jade包已officially recommended

meteor< = 0.7.2

  1. 如果您使用CoffeeScript,则应该查看jade-handlebars。在撰写本文时,存在一个问题,即CoffeeScript模板文件似乎需要包含在Meteor.startup函数中,这会给我带来其他问题。

  2. 如果您使用的是CoffeeScript,则应该查看我的Cakefile。详细信息都在描述中,但简短版本是它会自动添加/删除/更新html文件和玉器文件。我最终将*.html添加到我的.gitignore,这只有在您不在同一项目中混合使用html和jade时才有效。这有点像黑客,但到目前为止它对我来说还不错。

答案 2 :(得分:10)

在Atmosphere上发布我的第一个流星智能包!

使用Jade + Handlebars代替HTML + Handlebars

https://atmosphere.meteor.com/package/jade-handlebars

答案 3 :(得分:3)

让玉石模板与我的Meteor项目合作!它是真正的玉石而不是玉石把手或一些半玉形式。它很棒但它需要Meteor UI,它目前处于名为blaze-rc1的开发版本中。所以它目前不适用于Meteor 0.7。

做'mrt add jade'

&安培;

使用'mrt --release blaze-rc1'

运行你的流星项目

https://github.com/mquandalle/meteor-jade/

如果您在同一文件夹中有coffeescript和jade文件,请将_添加到文件名的开头,以便在coffeescript文件之前加载jade文件,否则它将无法正常工作。

答案 4 :(得分:1)

mrt add jade

client/views/templates/hello.jade你可以这样做:

template(name="hello")
  h1 hello world!
  {{greeting}}

  input(type="button" value="click")

使用mrt

启动您的应用