Meteor开发平台入门 互动版

在线工具推荐: Three.js AI纹理开发包 - YOLO合成数据生成器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器

UI计算过程

尽管Meteor平台体贴地为我们隐藏了UI计算的编写环节,看一眼Meteor生成的代码 还是很有好处的。下面的图揭示了Meteor打包期间对模板文件demo.html进行的处理:

ui-compution

你看到,Meteor根据我们的模板定义,创建了一个Template对象:Template.demo。 请注意Template构造函数的第二个参数,被称为渲染函数/RenderFunc,这就是我们 提到的UI计算过程

渲染函数要完成的工作就是构造DOM元素组。HTML.H1()返回的是一个h1节点的 等价对象,HTML.P()返回的是一个p节点的等价对象。很显然,声明式的模板在这里 已经转化为命令式的计算过程了。

注意下对Blaze.View()的调用,它对应于模板标签{{price}},创建了一个子视图。 Blaze.View()的第二个参数也是一个函数,事实上,这个参数函数也是一个渲染函数/RenderFuncview.lookup("price")用来在当前模板的helpers中查找名为price的helper函数, 而Spacebars.mustache()则基本等价于对price helper函数的调用。最终,调用Blaze.View() 将返回price helper函数的执行结果。

≡ 启动反应式UI —— Meteor.render(template,parentNode)

启动反应式UI就是启动反应式UI计算过程。使用Meteor.render()方法将模板对象渲染 到DOM树中指定父元素之下,例如下面的示例将模板对象Template.demo返回的DOM元素组, 追加到document.body节点内:

Meteor.render(Template.demo,document.body);

在Meteor.render()内部,会通过Tracker来启动反应式计算。这样,当数据变化 时,UI就将自动得到更新。

执行以下命令复位test应用、删除源文件:

~/test$ meteor reset↵ ~/test$ rm -rf \*↵

执行以下命令拷贝frp-blaze示例代码、运行并查看运行结果:

~/test$ cp ~/demos/frp-blaze/* .↵ ~/test$ meteor↵

阅读frp-blaze示例代码,理解Meteor的反应式UI渲染原理。