在Meteor FAQs http://meteor.com/faq/how-do-i-package-a-new-templating-system中,有一些关于添加不同(比默认Handlebars)模板系统的信息。 Jade是文档中其他地方明确指出的唯一其他示例。
有人已经在研究Jade吗?如果没有,我开始可行吗?还是现在还为时尚早?例如:
软件包API正在快速变化,未记录,因此您不能 现在制作自己的包。即将推出。
我一直在尝试在我目前的Ember.js项目中爱上Handlebars,但对我来说没有什么比Jade更优雅。
答案 0 :(得分:22)
我们希望看到Jade整合。使用packages/handlebars
作为模板。
基本策略是将模板引擎的输出连接到Meteor.ui.render
,这是我们实现实时页面更新的方式。只要你的模板返回HTML,那就行了。每当Jade模板引用Meteor.Collection
文档或Session
变量时,Meteor都会注册该依赖项,以便在数据发生变化时知道重新呈现模板。
但更好的方法是使用Meteor.ui.chunk
和Meteor.ui.listChunk
。这些将限制Meteor在发生变化时必须重新计算的数量。例如,如果您使用Handlebars中的{{#each}}
来渲染文档列表,那么当新文档进入结果集时,没有理由重新计算整个模板。我们只为新文档渲染一个HTML块,然后将其插入DOM中。那是listChunk
在行动。
因此,您可能会发现在Jade中仅仅if
/ unless
和for
/ each
进行检测可以让您走得很远。
请注意,软件包开发并不像系统的其他部分那样有文档记录。所以,当你走的时候,不要犹豫,提出更具体的问题。
答案 1 :(得分:16)
使用mquandalle:jade包已officially recommended。
如果您不使用CoffeeScript,则应该查看jade-handlebars。在撰写本文时,存在一个问题,即CoffeeScript模板文件似乎需要包含在Meteor.startup
函数中,这会给我带来其他问题。
如果您使用的是CoffeeScript,则应该查看我的Cakefile。详细信息都在描述中,但简短版本是它会自动添加/删除/更新html文件和玉器文件。我最终将*.html
添加到我的.gitignore
,这只有在您不在同一项目中混合使用html和jade时才有效。这有点像黑客,但到目前为止它对我来说还不错。
答案 2 :(得分:10)
在Atmosphere上发布我的第一个流星智能包!
使用Jade + Handlebars代替HTML + 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