我有一个 Jade 文件 index.jade
和一个包含一些 js 脚本文件的目录 public\js
。
views
index.jade
public
js
a.js
b.js
...
有没有一种方法可以自动且以编程方式将它们全部作为脚本包含在 index.jade
中?
script(src='/js/a.js')
script(src='/js/b.js')
...
最佳答案
是的,你可以做到。在我们讨论解决方案之前,让我们先谈谈为什么最好不要这样做。
Jade/pug 将所有模板编译成内存中的 JavaScript 函数,因此当您的用户请求页面时,速度非常快,因为不需要访问磁盘。磁盘访问通常是 Web 请求中最慢的部分,这就是为什么有如此多的缓存和 CDN 解决方案的原因。当您读取这些文件的文件系统时,对该页面的每个请求都将多次扫描磁盘,首先读取目录,然后将文件插入到输出中。
这些脚本文件是否真的会经常更改,以至于您需要对每个请求进行磁盘访问?如果您有太多脚本文件,不方便单独添加它们,那么您可以将脚本标签分组到单个模板中并使用 inheritance或mixins来帮助你。
话虽如此,如果您仍然真的想这样做,这里是如何做到这一点......
您需要读取路由中的文件并将数组传递给模板:
var fs = require('fs');
fs.readdir(path, function(err, files) {
// you should use a loop with a regex like ([^\/]+$) here to strip out the directory names
// this will be specific to your server's file system setup
res.render('<viewname>', scripts);
}
然后在模板中:
each script in scripts
script(src= script)
关于node.js - 以编程方式将目录中的所有 javascript 文件作为脚本插入 Jade 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25358435/