tl;博士
有没有一种方法可以像任何其他 JavaScript 模板引擎(例如 Mustache、Handlebars 或 Nunjucks)一样完全在客户端使用 Jade,以便通过 ajax 加载包含内容?
更多信息:
我有一个未在 Node 上运行的 Web 应用程序(不幸的是,由于各个供应商尚未为 Node 提供库),并且我真的开始喜欢 Jade 的语法和功能。不幸的是,似乎 Jade 中的所有内容都需要 Node 具有某种能力,无论是在开发流程中还是在服务器端。我绝对不能在服务器端使用它,并且不希望仅仅为了模板化而将其引入开发周期。
看起来所需要做的就是打包依赖项(这可以使用 browserify 完成)并实现 fs 以使用 ajax 读取文件。已经有一些实现了吗?
此外,每个文件、每个 session 编译一次所花费的时间并不是此应用程序真正关心的问题。
最佳答案
我实际上找到了做到这一点的方法,完全在客户端:
- 使用 browserify CDN 获取 Node 包的客户端 bundle 。
- 在 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());
}
}},{}]
关于node.js - 在没有 Node 的情况下使用 Jade 模板的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205938/