我只是想问,有没有可能用express.js路由来做基于文件系统的路由?像Next.js这样的东西。
a7qyws3x1#
我不建议这样做,因为这可能会成为一个安全问题。但是如果你真的想,这很容易做到。你可以只听app.get(“*”)。示例如下所示:
let path = require("path") let express = require("express") let app = express() let fs = require("fs") app.get("*", (req,res) => { let filePath = path.join(__dirname, "routes", req.path) if(!fs.existsSync(filePath)) return res.sendStatus(404) res.sendFile(filePath) }) app.listen(80)
字符串这将递归并加载“routes”文件夹(或任何子目录)中的任何文件。我用html做了这个,所以我做了sendFile(),但是我相信它也应该和.render()一起工作。我强烈建议不要这样做,因为它可能会让人们在你的目录结构中爬上爬下,在他们试图获取的路径上做一些手脚。
w6lpcovy2#
https://www.npmjs.com/package/express-file-routing试试这个。它列出了所有可用的文件并只为它们启用路由。这也支持路径参数。
2条答案
按热度按时间a7qyws3x1#
我不建议这样做,因为这可能会成为一个安全问题。但是如果你真的想,这很容易做到。你可以只听app.get(“*”)。示例如下所示:
字符串
这将递归并加载“routes”文件夹(或任何子目录)中的任何文件。我用html做了这个,所以我做了sendFile(),但是我相信它也应该和.render()一起工作。
我强烈建议不要这样做,因为它可能会让人们在你的目录结构中爬上爬下,在他们试图获取的路径上做一些手脚。
w6lpcovy2#
https://www.npmjs.com/package/express-file-routing
试试这个。它列出了所有可用的文件并只为它们启用路由。这也支持路径参数。