流星:哪个第一个html文件将铁路由负载

时间:2015-03-04 18:27:47

标签: meteor iron-router

我正在创建一个Meteor应用程序。首次创建应用程序时,Meteor已将此示例代码放在hello.html

<head>
  <title>hello</title>
</head>

<body>
  <h1>Welcome to Meteor!</h1>

  {{> hello}}
</body>

<template name="hello">
  Hello World Template
</template>

我安装了Iron-Router个包。那么这是我的lib/Router.js文件:

Router.route('/', function () {
    this.render('post_template');
});

这是我的client/templates/posts/post_template.html

<template name="post_template">
   Example Template
</template>

我不知道为什么我运行这个应用程序。结果是:

HelloWorld Template
Example Template

换句话说,Meteor的配置中哪一部分加载hello.html作为默认页面,然后在路由中附加所有其他模板?

谢谢:)

2 个答案:

答案 0 :(得分:3)

在这种情况下,第一个Meteor加载是

<body>
  <h1>Welcome to Meteor!</h1>

  {{> hello}}
</body>

因为您在那里调用了hello模板,这就是屏幕上的第一个模板。

我建议在这个案例中使用layout模板并删除<body>代码

所以第一次声明路线。

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

删除<body><head>代码并改为放置layout template

<template name="layout">
 <navbar>
 <!-- This stuff will be available on all routes since you are declaring on the layout template -->
 </navbar>
   {{> yield}} <!-- this yield helper will render the post_template or any other -->
</template>

例如

如果你有这2条路线。

Router.route('/', function () {
    this.render('post_template');
});
Router.route('/example', function () {
    this.render('example');
});

这里发生了什么,当你通过/路线时,铁路由器将呈现&#39; post_template&#39; html进入布局模板,当你导航到/example时,铁路由器将删除post_Template html并在/example模板中呈现内容,如果你想在所有页面上拥有相同的内容,请声明它在<layout>模板上footersnavbars

布局模板就像&#34; master&#34;模板在这里。

答案 1 :(得分:1)

如果<body>存在,则会附加到<body>(否则为您添加一个),因此建议您删除整个hello.html代码。

您完全可以完全删除hello(因为您也不需要head模板)。如果您想保留<head> <title>hello</title> </head> 标记,则可以将文件修改为:

hello.html

要了解为什么要包含<head>,请参阅文档的Structuring your application部分:

  

Meteor应用程序中的HTML文件与服务器端框架的处理方式略有不同。 Meteor会扫描目录中的所有HTML文件,以获取三个顶级元素:<body><template>和{{1}}。头部和主体部分分别连接成一个头部和主体,在初始页面加载时传送给客户端。

因此,所有的html文件都包含在内。如果您不想包含它们,则需要将其从应用中删除。