在没有节点的情况下使用 Jade 模板的简单方法?

Simple Way to Using Jade Templates Without Node?

tl;博士

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

更多信息:

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

似乎只需要打包依赖项(这可以通过 browserify 完成)并实现 fs 以使用 ajax 读取文件。已经有一些实现了吗?

另外,对于这个应用程序来说,每个会话每个文件编译一次所花费的时间并不是真正的问题。

我实际上找到了完全在客户端执行此操作的方法:

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

中提琴!

更新:

这是我的实现:

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());
 }
}},{}]