首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >只提供来自Express静态目录的.js文件?

问只提供来自Express静态目录的.js文件?
EN

Stack Overflow用户
提问于 2014-03-13 23:29:21
回答 2查看 2.4K关注 0票数 6

我想知道是否可以在Express.js静态目录中只提供一种类型的文件(通过扩展名过滤)。

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

代码语言:javascript
复制
Static
    FileOne.js
    FileTwo.less
    FileThree.html
    FileFour.js

并且假设我只想使具有.js扩展名的文件对任何给定的请求可用,那么所有其他请求都会得到500个响应(或者类似的响应)。

我怎样才能做到这一点呢?Express有一个我无法找到的内置过滤器,还是需要使用正则表达式?

EN

回答 2

Stack Overflow用户

发布于 2014-03-14 00:20:43

我使用

代码语言:javascript
复制
app.get(/static\/.*js$/, function(r, s){

或

代码语言:javascript
复制
app.get('*', function(r, s){
  if(r.url.match(/.*js$/)) // then serve
})
票数 5
EN

Stack Overflow用户

发布于 2014-03-14 00:08:47

在我看来,您不可能以这种方式配置“静态”中间件。在“服务-静态”模块中,它取代了Exchange4.0的“静态”(目前处于RC阶段),有一些选项,但没有过滤。

如果您只想提供*.js文件,您可以自己创建一个路由。如果请求的文件为.js,则创建一个具有文件内容和适当mime类型的响应的.js。

另一种选择是分叉“静态”模块,或者更好地使用新的“服务静态”,这样它就能满足您的需要。例如,您可以创建一个复制这个文件内容的新库,并在行之后创建

代码语言:javascript
复制
var originalUrl = url.parse(req.originalUrl);

您可以添加这样的内容

代码语言:javascript
复制
if(originalUrl.slice(-3) != '.js') return next();

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

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

代码语言:javascript
复制
app.use(require('lib/my-static'))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22393187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档