maodouio / meteor-master-classes

毛豆网Meteor在线师徒班
http://www."培养国内第一批Meteor布道者".com
15 stars 7 forks source link

在看https://github.com/meteoric/demo 没有搞明白那几个页面和模板的加载 #4

Closed seanjsong closed 9 years ago

seanjsong commented 9 years ago

client/templates/index.html应该是整个页面的外框了,包含所有其它模板,但它是由谁加载的呢?还是说因为它叫client/templates/index.html就自动被meteor当成首页了?

我看到both/router.js里面有

Router.configure({
  layoutTemplate: 'layout'
});

...

this.route('index', {path: '/'});

client/templates/layout.html 和 client/templates/index/index.html 应该就是被router里的这两行代码加载的吧?

看起来client/templates/layout.html应该是个框(有左右两个side menu和一个空着的side menu content),而client/templates/index/index.html(有header title和功能列表)看起来应该是包含在layout.html的side menu content里面,对吧?但这个包含关系是由哪段代码控制的呢?没看懂。

limingth commented 9 years ago

@seanjsong layout.html 的 {{> yield}} 就是 layout 如何 调用 index 之间的关联。

SollyTaylor commented 9 years ago

@Seanjsong 在discovermeteor里面专门讲解了{{>yield}}的技术细节,layout.html的关键是在route.configure函数完成的,全新的meteor工程,一般上来就看router.js

limingth commented 9 years ago

这个官方文档应该是讲得最清楚的了。 https://github.com/iron-meteor/iron-router/blob/devel/Guide.md#layouts

seanjsong commented 9 years ago

谢谢!理解了。那个layout是缺省的,所有route都在那个layout之中填内容。另外我知道为什么client/templates/index.html 会成为整个页面的tag框了,其实不管是叫index.html还是随便叫什么名字都一样,meteor会自己找出有<html>和<body>标记的文件

kevingzhang commented 9 years ago

meteor 里文件的名字和路径都无所谓. 还记得我第一次课程上说到过的. 所有代码都是 meteor 编译以后才发到 client 和 server 去执行的. 加载顺序是按照路径深度和字母顺序加载的, 最后编译成为一个大文件(HTML,或者 JS). 如果没有新的问题, 这个 issue 可以关闭了