Meteor开发平台入门 互动版

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

模板中的路径解析

模板标签中的标识符通常就是有效的JavaScript标识符,一系列以./连接的标识符, 称为路径。比如下面的模板标签中,foo, 'So wierd!', 12304, null都是有效的标识符, 而foo.bar, ./name都是有效的路径:

{{foo}}
{{foo.bar}}
{{./name}}
{{'So wierd!'}}
{{12304}}
{{null}}

路径的第一个标识符,被Meteor用来在helpers中搜索同名的helper,以便将helper函数 的结果运用到模板中。这个搜索过程称为路径解析

≡ 路径解析

以模板标签{{title}}为例,Meteor优先使用标识符title对应的helper。如果找不到 helper,就使用当前数据上下文对象的title属性。对标识符title的解析流程如下图:

id-resolve

在路径解析时,从第二个标识符开始,后面的标识符将被视为前一个标识符的属性。 以模板标签{{person.name}}为例,name将被视为person的属性,因此,这个标签可能会 被转化为以下调用:person().name, person().name(), person.name 或者 person.name()

≡ 特殊标识符

Spacesbars支持在模板标签中使用以下特殊标识符

  • this. - 表示当前的数据上下文对象。例如下面的两个模板标签都将最终被 替换为当前数据上下文的name属性值:{{this.name}}, {{./name}}
  • .. - 表示外层/父模板的数据上下文对象。例如下面模板标签将最终被 替换为父模板的数据上下文的name属性值:{{../name}}

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

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

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

~/test$ cp ~/demos/tpl-path-resolve/* .↵ ~/test$ meteor↵

理解并修改tpl-path-resolve示例代码,通过练习理解模板中的特殊标识符和路径解析过程。