node.js - 在没有 Node 的情况下使用 Jade 模板的简单方法?

标签 node.js pug

tl;博士

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

更多信息:

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

看起来所需要做的就是打包依赖项(这可以使用 browserify 完成)并实现 fs 以使用 ajax 读取文件。已经有一些实现了吗?

此外,每个文件、每个 session 编译一次所花费的时间并不是此应用程序真正关心的问题。

最佳答案

我实际上找到了做到这一点的方法,完全在客户端:

  1. 使用 browserify CDN 获取 Node 包的客户端 bundle 。
  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());
 }
}},{}]

关于node.js - 在没有 Node 的情况下使用 Jade 模板的简单方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33205938/

相关文章:

node.js:使用系统调用将文件写入/tmp 目录时遇到问题

pug - Jade block 的工作原理 - Jade

templates - Pug/Jade 获取给定模板中的所有变量

javascript - Angular 嵌套对象 - TypeError : Cannot read property 'app' of undefined

javascript - 如何在 Pug 中对当前对象进行分组后访问它们的索引

json - 如何包含静态 JSON 文件以使用 Jade 和 Grunt 进行编译

node.js - 如何在 OpenShift 环境中运行 npm 模块 node-inspector?

sockets - 从 NodeJS 在 TCP 服务器上实现简单的身份验证

node.js - 为什么每次关闭浏览器时我的 session 都会过期?

JavaScript:使用今天的日期将 .csv 保存在文件夹中