Node.js 以编程方式将dir中的所有javascript文件作为脚本插入Jade中

Node.js 以编程方式将dir中的所有javascript文件作为脚本插入Jade中,node.js,pug,Node.js,Pug,我有一个Jade文件index.Jade和一个dir public\js,其中包含一些js脚本文件 views index.jade public js a.js b.js ... 是否有一种方法可以自动并以编程方式将它们全部作为脚本包含在index.jade中 是的,你能做到。在讨论解决方案之前,让我们先谈谈为什么不这样做更好 Jade/pug将所有模板编译成内存中的JavaScript函数,因此当用户请求页面时,速度非常快,因

我有一个Jade文件index.Jade和一个dir public\js,其中包含一些js脚本文件

views
    index.jade
public
    js
        a.js
        b.js
        ...
是否有一种方法可以自动并以编程方式将它们全部作为脚本包含在index.jade中


是的,你能做到。在讨论解决方案之前,让我们先谈谈为什么不这样做更好

Jade/pug将所有模板编译成内存中的JavaScript函数,因此当用户请求页面时,速度非常快,因为不需要磁盘访问。磁盘访问通常是web请求中最慢的部分,这就是为什么有这么多缓存和CDN解决方案的原因。当您读取这些文件的文件系统时,该页面中的每个请求都将扫描磁盘多次,首先读取目录,然后将文件插入输出

这些脚本文件真的会经常更改,以至于每次请求都需要进行磁盘访问吗?如果您有太多的脚本文件,不方便单独添加它们,那么您可以将脚本标记分组到单个模板中,并使用或帮助您

有了这个,我说如果你真的还想这样做的话,这里有一些方法

您需要读取路由中的文件并将数组传递给模板:

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)
each script in scripts
  script(src= script)