只从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 })