您好我正在尝试在快递中创建动态模板系统,我将从数据库中获取动态内容,然后在单个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 %>
我应该做什么,以便我可以将“家”作为输出。这可能吗?
当我们从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>
为什么这么麻烦?
您可以使用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