我在服务器端和客户端都使用jquery模板。我在服务器上使用Node.js上的jqtpl和express模块,我有jquery及其客户端的模板插件。
客户端尽可能接收JSON而不是html,并构建模板本身,使用HTML5历史API来更改URL并允许会话导航。如果这是不可能的,服务器会执行模板化并发送html。
服务器和客户端都具有完全相同的模板,但服务器以12 .html文件的形式存在它们,客户端以.js文件中的对象形式存在它们。
每次我更改或添加模板时,我都必须将客户端.js文件更改为相同,这有点痛苦。
我想要做的是让.js文件动态获取我的templates文件夹中的所有.html文件,并将它们编译成一个对象。完成开发后,此文件将被缓存,因为它不再需要查找更改。
答案 0 :(得分:0)
不确定这是否能回答您的问题,但如果您对在客户端和服务器上使用相同的模板代码感兴趣,则应该查看weld,这样您就可以使用相同的代码客户端和服务器。
关于12个html文件与客户端上的1个对象有什么关系,你能不能更清楚一点?
如果可能,代码示例会摇摆不定。
答案 1 :(得分:0)
我在寻找的是Node的文件系统模块:
http://nodejs.org/docs/v0.4.8/api/fs.html
我使用fs.readdir查找文件夹中的所有模板文件,然后遍历生成的数组以读取其包含的所有文件。
var templates = {};
fs.readdir("./templates", function(err, files) {
for(var i = 0, len = files.length; i<len; i++) {
fs.readFile("./templates/" + files[i], function (err, data) {
if (err) {
throw err
}
templates[files[i]] = data;
});
}
}
然后在快递中:
app.get("/templates.js", function(req, res){
res.header("Content-Type", "text/javascript");
res.end("var templates = { " + JSON.stringify(templates) + " }; ");
});
但是,我发现服务器端模板更适合我的需求,并且在适当的情况下,我现在在我的JSON响应中发送呈现的HTML而不仅仅是数据。