gpt4 book ai didi

Node.js 模块特定的静态资源

转载 作者:搜寻专家 更新时间:2023-10-31 23:01:09 25 4
gpt4 key购买 nike

是否有一种优雅的方式将静态客户端文件资源(脚本、图像等)捆绑到 Express 模块中并系统地避免命名冲突?像这样注册静态对象的特定于模块的实例非常容易:

app.use(express.static(modulePath + '/public'));
app.use(express.static(__dirname + '/public'));

但是如果两个目录都包含一个“styles.css”文件,那么模块中的文件似乎会超过应用程序的文件。可以使用模块公共(public)目录中的子目录来避免这个问题,但我真正想要的是一种将模块资源映射到任意路径的方法,这样

http://localhost:3000/mymodule/styles.css => <modulePath>/public/styles.css
http://localhost:3000/styles.css => <appPath>/public/styles.css

有没有办法做到这一点?我已经用编码技巧完成了它,所以我真的在寻找推荐的方法来完成它。此外,如果我遗漏了一些使这完全没有必要的关键概念,我也想了解一下。

最佳答案

您可以创建另一个 connect.static 实例并在路由中使用它:

app = express.createServer()

app.configure(function(){
app.use(express.static(__dirname+'/public'))
})

// new static middleware
var myModuleStatic = express.static(__dirname+'/mymodule')

// catch all sub-directory requests
app.get('/mymodule/*', function(req, res){
// remove subdir from url (static serves from root)
req.url = req.url.replace(/^\/mymodule/, '')
// call the actual middleware, catch pass-through (not found)
myModuleStatic(req, res, function(){
res.send(404)
})
})

app.listen(5555)

关于Node.js 模块特定的静态资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7746180/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com