Node Express EJS动态模板渲染

时间:2015-05-06 20:37:06

标签: node.js express pug ejs

您好我正在尝试在express中创建动态模板系统,我将从数据库中获取动态内容,然后在单个index.ejs文件中呈现输出。

这是我的index.js

router.get('/', function(req, res, next) {

var dataFrmDB = {
       pageContent: "<%= data.pageTitle %>",
       pageTitle: "home"
   };

res.render('index', {data:dataFrmDB} );
});

index.ejs包含:

<%= data.pageContent %>

我应该做什么,以便我可以渲染&#34; home&#34;作为输出。这可能吗?

2 个答案:

答案 0 :(得分:0)

当我们从drupal迁移到nodejs时,我正在研究类似的东西,我使用ect来渲染而不是jade,它更快更容易处理,但是,如果你使用设计模式要好得多有一个很大的动态网站

js控制器文件

model.homepage(function(data)
{
    res.render("homepage.ect",data,function(err,html)
            {
               // Do something before you send the response such as minification, or error handling
                res.send(html);
            });         
});

ECT文件

<html xmlns="http://www.w3.org/1999/xhtml" lang="ar" xml:lang="ar">
<head>
     <%- @page.title.body %>
     <%- @page.headerScript.body %>
     <style type="text/css">#homepage-container{min-height:300px;color:#353535;float:right;width:100%}</style>
</head>
<body>
    <% include 'upper_bar.ect' %>
    <%- @page.headerAd.ads %>
    <%- @page.notifications.body %>
    <%- @page.autocomplete.body %>
    <%- @page.redirect.body %>
    <%- @page.navigation.body %>
    <%- @page.overlayAd.ads %>
</body>
</html>

答案 1 :(得分:0)

为什么这么麻烦?

您可以使用templatesjs轻松完成此操作 没有任何模板引擎。

让我告诉你如何使用templatesjs 完成你的工作 html文件

<html>
<head>
    <title> <%title%> </title>
</head>
<body>
    your content goes here
</body>
</html>

现在在node.js文件中使用templatesjs

var tjs = require("templatsjs");

router.get('/', function(req, res, next) {
    var data = fs.readFileSync("./index.html");
    tjs.set(data); // invoke templatesjs 
    var output = tjs.render("title","home"); 

    /* this will replace the <%title%> tag 
       in the html page with actual title*/
    res.write(output);
    res.end()
});

我已经使用fs.readFileSync来保持代码的简单性,如果你想要(fs.readFile)可以使用asynchronus函数。

可以找到一个好的推荐here

安装:     $ npm install templatesjs