我正在创建一个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
作为默认页面,然后在路由中附加所有其他模板?
谢谢:)
答案 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>
模板上footers
,navbars
等
布局模板就像&#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文件都包含在内。如果您不想包含它们,则需要将其从应用中删除。