0

我在服务器端和客户端都使用 jquery 模板。我将 Node.js 上的 jqtpl 和 express 模块用于服务器,我有 jquery 及其用于客户端的模板插件。

客户端尽可能接收 JSON 而不是 html,并自行构建模板,使用 HTML5 历史 API 更改 url 并允许会话导航。如果这不可行,则服务器会改为执行模板并发送 html。

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

每次更改或添加模板时,我都必须将客户端 .js 文件更改为相同,这有点痛苦。

我想做的是让 .js 文件动态获取模板文件夹中的所有 .html 文件并将它们编译成一个对象。一旦我完成开发,这个文件就会被缓存,因为它不再需要寻找变化。

4

2 回答 2

0

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

关于客户端上的 12 个 html 文件与 1 个对象,您能否更清楚地了解您在做什么?

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

于 2011-03-30T04:51:31.193 回答
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 而不仅仅是数据。

于 2011-05-26T19:45:43.793 回答