在没有节点的情况下使用 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 读取文件。已经有一些实现了吗?
另外,对于这个应用程序来说,每个会话每个文件编译一次所花费的时间并不是真正的问题。
我实际上找到了完全在客户端执行此操作的方法:
- 使用 browserify CDN 获取节点包的客户端包。
- 在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());
}
}},{}]
tl;博士
有没有办法像任何其他 JavaScript 模板引擎(例如 Mustache、Handlebars 或 Nunjucks)一样完全在客户端使用 Jade,以便它通过 ajax 加载包含?
更多信息:
我有一个不在 Node 上 运行 的 Web 应用程序(不幸的是,由于各种供应商还没有为 Node 提供库),我真的开始喜欢 Jade 的语法和功能。不幸的是,无论是在开发流程中还是在服务器端,Jade 中的所有内容似乎都需要 Node 的某种能力。我绝对不能在服务器端使用它,并且不想将它引入开发周期只是为了模板。
似乎只需要打包依赖项(这可以通过 browserify 完成)并实现 fs 以使用 ajax 读取文件。已经有一些实现了吗?
另外,对于这个应用程序来说,每个会话每个文件编译一次所花费的时间并不是真正的问题。
我实际上找到了完全在客户端执行此操作的方法:
- 使用 browserify CDN 获取节点包的客户端包。
- 在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());
}
}},{}]