【问题标题】:How would I create a .js file that contains all of my .html templates in Express & Node.js?如何在 Express 和 Node.js 中创建包含所有 .html 模板的 .js 文件?
【发布时间】:2011-07-20 12:46:45
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: javascript file node.js jquery-templates express


    【解决方案1】:

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

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

    如果可能的话,代码示例会很震撼。

    【讨论】:

      【解决方案2】:

      我正在寻找的是 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 而不仅仅是数据。

      【讨论】:

        猜你喜欢
        • 2012-08-11
        • 2012-04-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多