Node.js 在ejsinclude上添加变量

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"

我正在尝试根据博客的名称使用include from ejs加载博客部分

Data.json中的数据:

"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 
<% } %>