没有节点使用Jade模板的简单方法?

时间:2015-10-19 02:57:52

标签: node.js pug

TL;博士

有没有办法像任何其他JavaScript模板引擎一样完全使用Jade客户端(例如,Mustache,Handlebars或Nunjucks),以便它通过ajax加载?

更多信息:

我有一个没有在Node上运行的Web应用程序(不幸的是由于各个供应商还没有为Node提供库),我真的开始喜欢Jade的语法和功能。不幸的是,似乎Jade中的所有内容都需要Node,无论是在开发流程还是在服务器端。我绝对不能在服务器端使用它,并且不想仅仅为了模板而将它引入开发周期。

似乎所有必要的是打包依赖项(这可以使用browserify完成)并实现fs以使用ajax读取文件。是否已经实现了这一点?

此外,每个文件每个文件编译一次所需的时间并不是这个应用程序的关注点。

1 个答案:

答案 0 :(得分:2)

我实际上已经找到了完成此操作的方法,完全在客户端:

  1. 使用browserify CDN获取节点包的客户端包。
  2. 在bundle中的'fs'模块中实现'readFileSync'函数以使用同步XmlHttpRequest并从服务器检索文件(它当前为空,因此不存在任何函数)
  3. 中提琴!

    <强>更新

    这是我的实施:

    2:[function(require,module,exports){
    module.exports = {
    cache: { },
    readFileSync: function(path){
      return this.cache[path] || (this.cache[path] = (function(){
        var request = new XMLHttpRequest();
        request.open('GET', path + '?_=' + $.time(), false);
        request.send();
        if (request.status === 200) {
          return request.responseText;
        }
        else {
          throw 'Unable to load template: ' + path;
        }
      }).call());
     }
    }},{}]