只从Express静态目录服务.js文件?

我正在查找是否有可能从Express.js静态目录中只提供一种types的文件(通过扩展名筛选)。

例如,假设我有以下静态目录:

Static FileOne.js FileTwo.less FileThree.html FileFour.js 

并说,我只想使任何给定的请求只有扩展名为.js文件,所有其他请求将得到一个500响应(或类似的东西)。

我将如何去实现这一目标? Express是否具有我无法find的烘焙filter,还是我需要使用正则expression式?

在我看来,你不能以这种方式configuration“静态”中间件。 在“服务静态”模块中 ,replace为Express 4.0(目前处于RC阶段)的“静态”模式,有一些选项,但不是过滤。

如果你只想提供* .js文件,你可以自己创build一个路线。 如果请求的文件是.js,那么创build一个app.get('/static/*')来响应文件内容和适当的MIMEtypes。

另一种方法是分叉“静态”模块,或更好的新的“服务静态”,所以它适合您的需求。 例如,你可以创build一个新的库,复制这个文件的内容,并在该行之后

 var originalUrl = url.parse(req.originalUrl); 

你可以添加类似的东西

 if(originalUrl.slice(-3) != '.js') return next(); 

这应该忽略(调用下一个中间件)对不以“.js”结尾的静态文件的所有请求。 (未经testing,但受上述代码的启发)

使用上面的代码,创build一个新的库(例如保存在“lib / my-static.js”)并包含它:

 app.use(require('lib/my-static')) 

我用

 app.get(/static\/.*js$/, function(r, s){ 

要么

 app.get('*', function(r, s){ if(r.url.match(/.*js$/)) // then serve })