2011-03-22 72 views
0

我在服务器端和客户端都使用jquery模板。我在服务器上使用jqtpl和Node.js上的模块,并且我为客户端提供了jquery和它的模板插件。如何创建一个包含Express&Node.js中所有.html模板的.js文件?

尽可能客户端接收JSON而不是html,并使用HTML5历史记录api更改网址并允许会话导航来构建模板本身。如果这是不可能的,服务器代替模板并发送html。

服务器和客户端都有完全相同的模板,但服务器以12 .html文件的形式存在,客户端以.js文件中的对象形式存在它们。

每次我改变或添加一个模板,我必须改变客户端.js文件是相同的,这有点痛苦。

我想要做的就是让.js文件动态地将我的模板文件夹中的所有.html文件编译成对象。完成开发后,该文件将被缓存,因为它不再需要查找更改。

回答

0

我一直在寻找的是节点的文件系统模块:

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,而不是只是数据。

0

不确定这是否回答您的问题,但如果您有兴趣在客户端和服务器上使用相同的模板代码,则应该查看weld,这将允许您在客户端和服务器端都使用相同的代码服务器。

对于客户端上的12个html文件和1个对象,您能做些什么吗?

如果可能,代码示例会摇摆不定。

相关问题