Node.js 在ejsinclude上添加变量
我正在尝试根据博客的名称使用include from ejs加载博客部分 Data.json中的数据:Node.js 在ejsinclude上添加变量,node.js,express,ejs,Node.js,Express,Ejs,我正在尝试根据博客的名称使用include from ejs加载博客部分 Data.json中的数据: "blogs" : [{ "title" : "Git Basics", "name" : "git_basics", "date" : "February 8, 2015", "category" : "git", },{ "title" : "Javascript Basics", "name" : "javascript_basics"
"blogs" : [{
"title" : "Git Basics",
"name" : "git_basics",
"date" : "February 8, 2015",
"category" : "git",
},{
"title" : "Javascript Basics",
"name" : "javascript_basics",
"date" : "December 31, 2014",
"category" : "javascript"
},{
"title" : "Html5 Communication",
"name" : "html5_communication",
"date" : "November 25, 2014",
"category" : "html5"
}]
路线:
/* GET blog page. */
router.get('/blog', function(req, res) {
var blogswithDetail = [];
for(var i=0; i<appdata.blogs.length && i<4; i++){
blogswithDetail.push(appdata.blogs[i]);
}
res.render('blog', {
title: 'Blog',
blogswithdetail: blogswithDetail
});
});
第页:
这行代码不正确。我的问题是如何在include中插入item.name,以便根据item.name的变化包含不同的部分。我想您误解了ejs的工作原理。 EJ接受提供的参数,并用参数替换标记: node.js:
res.render('test.ejs', {a: 'hello', b: 'world', c: 42});
test.ejs:
<%= a %><%= b %><br>
The answer to life, universe and everything else is <%= c %>
但不能使用对象的属性,只能使用整个对象
在您的情况下,您应该:
节点:
ejs:
我想你错过了这里的诀窍。当我们开发任何web应用程序时,我们应该尝试使其动态化。过去我们使用100个HTML并基于路由加载它们的日子已经一去不复返了,这基本上被称为静态web 我从您的问题中了解到的是,您正在尝试基于param值加载特定的EJS模板。试想一种情况,随着时间的推移,您的项目越来越大,您的参数值也越来越大,对于每个特定的参数,您将创建一个新的EJS模板,它与其他模板没有太大区别。将有100个难以管理的文件 因此,我建议您使用正确的模板方法。只需包含一个EJS模板和一个使用表达式区分b/w item.name并根据需要呈现视图的内部模板。当然,您必须明智地使用它,如果您认为有机会简化使用,则应将模板拆分为更小的模板,并重新使用现有模板 例如:
<%if (item.name == 'xyz') { %>
// Do something
<% } %>
你能提供更多的细节吗。你想问什么还不太清楚。@NarendraSoni谢谢。我已经详细说明了我的问题。你知道吗?@NarendraSoni我又补充了更多细节。请帮帮我。谢谢,非常感谢。但实际上我可以使用对象的属性。当我删除这行代码时,页面可以正确呈现。所以我认为这行代码的语法是错误的。问题是我不知道如何在include中插入item.name我添加了有关该问题的更多详细信息。你能多花点时间帮我解决这个问题吗。谢谢我正在建立一个小网站来管理我自己的科技博客。因为科技博客有很多代码和不同的结构,我不知道如何将它们存储到数据库中。因此,我将每个博客的内容放入了部分,我认为这是一种更容易实现的方法。我想不出更好的办法来管理它们。如果你有什么好主意。请告诉我。感谢您正在研究Node和EJS,我建议您选择MEANMongo、Express、Angular和Node。对于所有前端布线和视图逻辑,使用express作为Rest引擎和Angular JS。我相信你会喜欢的。例如,看起来。谢谢。这就是我想学的。这样,我应该将我的博客内容存储到MongoDB中,对吗?但在科技博客中,有一些代码应该以原始形式存储,我如何在数据库中做到这一点?
helloworld<br>
The answer to life, universe and everything else is 42
res.render('test.ejs', {a: {a: 'a', b: 'b'}});
var item = {name: 'name', title: 'title', date: 'date', details: 'details'};
res.render('test.ejs', item);
//Or
//res.render('test.ejs', {name: item.name, title: item.title...
<% blogswithdetail.forEach(function(item){ %>
<article id="<%= name %>">
<h2><%= title %></h2>
<p><%= date %></p>
<%= detail %>
</article>
<% include partials/content/blog_(<%= name %>).ejs %>
<% }); %>
<% blogswithdetail.forEach(function(){ %>
var item = JSON.parse(<%= item %>);
<article id="item.name">
<h2>item.title</h2>
<p>item.date</p>
item.detail
</article>
<% include partials/content/blog_(item.name).ejs %>
<% }); %>
res.render('test.ejs', {item: JSON.stringify(item)});
<%if (item.name == 'xyz') { %>
// Do something
<% } %>