Node Express EJS动态模板渲染

问题描述 投票:0回答:2

您好我正在尝试在快递中创建动态模板系统,我将从数据库中获取动态内容,然后在单个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 %>

我应该做什么,以便我可以将“家”作为输出。这可能吗?

node.js express pug ejs
2个回答
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>

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)。

一个很好的参考资料可以找到qazxsw poi

安装:here

© www.soinside.com 2019 - 2024. All rights reserved.