在回应AutumnLeonard here的评论时,我尝试了这个想法的简约实现。我首先通过" meteor add iron:router"添加铁路由器包。然后尝试了这段代码:
blogtest.html:
(b,n,m)
blogtest.js:
<head>
<title>blogtest</title>
</head>
<body>
<h1>This is really something, isn't it!?!</h1>
{{> thought}}
{{> anotherthought}}
</body>
<template name="thought">
<p>THis is a random thought.</p>
</template>
<template name="anotherthought">
<p>THis is another random thought.</p>
</template>
(前两行是我添加的唯一一行;其余的是多余但无害的&#34;样板&#34;默认流星应用程序留下的代码)
...但是在尝试运行它时,它失败了,从命令提示符发出悸动的蓝色和紫色咆哮,以及:
Router.route("/:blog_post_title", {template: "thought", name: "thought"});
Router.route("/:blog_post_title", {template: "anotherthought", name: "anotherthought"});
if (Meteor.isClient) {
// counter starts at 0
Session.setDefault('counter', 0);
Template.hello.helpers({
counter: function () {
return Session.get('counter');
}
});
Template.hello.events({
'click button': function () {
// increment the counter when button is clicked
Session.set('counter', Session.get('counter') + 1);
}
});
}
if (Meteor.isServer) {
Meteor.startup(function () {
// code to run on server at startup
});
}
(为什么它抱怨&#34; anotherthought&#34;但不是&#34;另一个&#34;如果我的IronRouter语法在这里错了?)
W20151007-09:25:00.634(-7)? (STDERR) Error: A route for the path "/:blog_post_ti
tle" already exists by the name of "anotherthought".
(第2行,第8行是&#34; r&#34;在&#34;在路由器路由中#34;在第二行...... ???)
W20151007-09:25:00.635(-7)? (STDERR) at blogtest.js:2:8
(blogtest.js中没有第37行...... ???)
好的,所以我将HTML更改为:
W20151007-09:25:00.635(-7)? (STDERR) at C:\Misc\blogtest\.meteor\local\build
\programs\server\app\blogtest.js:37:4
...以及路由代码:
<head>
<title>blogtest</title>
</head>
<body>
<h1>Here's a thought:</h1>
<!-- {{> thought}}
{{> anotherthought}} -->
</body>
<template name="thought">
<p>This is a random thought.</p>
</template>
<template name="anotherthought">
<p>This is another random thought.</p>
</template>
......它不再无法运行;事实上,当我进入&#34; http://localhost:3000/thought&#34;时,我确实看到了我的期望,即:
Router.route("/thought", {template: "thought", name: "thought"});
Router.route("/anotherthought", {template: "anotherthought", name: "anotherthought"});
......以及我对#34; http://localhost:3000/anotherthought&#34;的期望,即:
Here's a thought:
This is a random thought.
但是,我在localhost:3000(默认URL)中看到了这一点:
Here's a thought:
This is another random thought.
那么我需要输入什么以便&#34;哎呀&#34;消失了?需要什么Route.route()?
答案 0 :(得分:2)
你定义了两条相同的路线(&#34; /:blog_post_title&#34;),我猜不能相同。也许你可以尝试改变其中一个。也许你可以定义为另一个&#34; /:blog_post_title2&#34;。
只是我的2美分
答案 1 :(得分:1)
你听起来不高兴:-(流星是一种学习曲线,但对我来说它非常值得。
我在这里看到的一些事情可能会让你失望。
模板与路线:路线与模板之间的差异。
模板就像填写一些HTML的配方。在模板中嵌套模板有助于将应用程序分解为更小的部分。
路线就像擦除一切并重新开始。您基本上删除了所有HTML,并从一个新模板开始。
这种差异来自之前构建网络应用程序的方式,现在仍然非常有用。
模板包含:您不会使用这样的路线:{{> thought }}
。这是包含模板的语法
这将导入HTML模板(就像您要定义的那样)。你不需要一条路来完成这项工作。
路线:此处,路线正在定义顶部模板。他们擦除所有内容(例如会话变量等异常)并重新开始。
路径很重要,因为它标识了应用中的位置。这个用户可以在应用中为地点添加书签。
具有相同路径的两条路线肯定是错误的。哪个应该用于书签?删除其中一条路线以继续前进。
正文:您不能像处理HTML顶部那样填充正文。 (嗯,你可以,但它不是最佳做法:-) Meteor基本上将路线模板附加到标签上。它没有定义<body>
,但它是如何工作的。
将<body>
更改为<template name="main">
,然后修正</body>
然后将模板添加到路线:
Router.route("/", {template: "main"});
这可能不会100%有效,但它应该让你通过一些你已经拥有的这些块。
此外,放松,玩得开心!来自PHP和Angular / Express后,Meteor非常有趣!
您可以尝试Discover Meteor本书。这对我来说是一个很好的开始。刚花了几天才开始。
答案 2 :(得分:0)
事实证明,它比我尝试的更容易;大多数那种花哨的东西都是臭气熏天的。
* .js文件中我需要的只是:
Router.route('/');
Router.route('/thought');
Router.route('/anotherthought');
以下HTML按预期工作(仅显示“localhost:3000”的H1,并且当我将“/ thought”或“/ anotherthought”附加到该基本URL时,除了H1之外还显示相应的模板。< / p>
<head>
<title>blogtest</title>
</head>
<body>
<h1>Here's a thought:</h1>
</body>
<template name="thought">
<p>This is a random thought.</p>
</template>
<template name="anotherthought">
<p>This is another random thought.</p>
</template>
因此,要创建一个我可以添加内容的流星应用程序,我需要做的就是:
0)在命令提示符下,输入“ meteor create <projectName>
”,例如:“ meteor create ideas ”
1)按照指示cd'ing到目录(即projectName)后,输入“ meteor add iron:router ”
2)因此,您的“原始”网址不会引发铁异常,请将其添加到.js文件中:
Router.route('/');
3)每次我想公开一些东西时,都会在.html文件中添加一个新模板。
4)然后(每次),在.js文件中添加一个带有模板名称的路由指令;例如,如果您添加此模板:
<template name="thought">
<p>This is a random thought.</p>
</template>
...您可以将此行添加到.js文件中:
Router.route('/thought');
5)在命令提示符处输入“ meteor deploy ”,使您的流星应用程序公开;例如,您可以输入“ meteor deploy ideas ”或“ meteor deploy rompecabeza ”(部署的名称不必与项目名称匹配)。
6)建议任何你想看到它的人“将他们的浏览器指向”你的URL,例如“嘿,帮派!去捷克'<your URL, with the appended template name>
'!你可以给我一分钱后来!的“
这就是它的全部内容。
例如,我创建了一个静态网站,用于提供我的一些照片。他们可以通过以下链接看到:
http://dplatypus.meteor.com/pinnacles
http://dplatypus.meteor.com/garrapatabeach
http://dplatypus.meteor.com/garrapataturnout
http://dplatypus.meteor.com/mcwayfalls
http://dplatypus.meteor.com/pfeifferbeach
或者,您只需点击dplatypus.meteor.com上面的链接
即可