您好我正在尝试在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;作为输出。这可能吗?
答案 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