Express 中虚拟路径前缀的用途

Ant*_*tiz 5 express

在 Express 中,在服务器端提供静态服务的方式似乎非常简单:

要提供静态文件(例如图像、CSS 文件和 JavaScript 文件),请使用 Express 中的express.static 内置中间件函数。

将包含静态资产的目录名称传递给express.static中间件函数以直接开始提供文件服务。例如,使用以下代码在名为 public 的目录中提供图像、CSS 文件和 JavaScript 文件:

app.use(express.static('public'))
Run Code Online (Sandbox Code Playgroud)

现在,您可以加载公共目录中的文件:

http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html
Run Code Online (Sandbox Code Playgroud)

Express 查找相对于静态目录的文件,因此静态目录的名称不是 URL 的一部分。

要使用多个静态资产目录,请多次调用express.static中间件函数:

app.use(express.static('public'))
app.use(express.static('files'))
Run Code Online (Sandbox Code Playgroud)

Express 按照您使用express.static 中间件函数设置静态目录的顺序查找文件。

我明白了虚拟路径前缀的想法,但为什么要使用它呢?

要为express.static函数提供的文件创建虚拟路径前缀(该路径实际上并不存在于文件系统中),请指定静态目录的安装路径,如下所示:

app.use('/static', express.static('public'))
Run Code Online (Sandbox Code Playgroud)

现在,您可以从 /static 路径前缀加载 public 目录中的文件。

http://localhost:3000/static/images/kitten.jpg
http://localhost:3000/static/css/style.css
http://localhost:3000/static/js/app.js
http://localhost:3000/static/images/bg.png
http://localhost:3000/static/hello.html
Run Code Online (Sandbox Code Playgroud)

小智 3

我知道有点晚了,但希望这可以帮助你。顺便说一句,我不相信答案,只是更深入地了解您的担忧并发现了这一点。

当提供多个目录来提供静态文件时,此技术会派上用场。前缀用于帮助区分多个目录。

如果你想深入挖掘。我在此链接上找到了它: https: //guide.freecodecamp.org/nodejs/express/