gpt4 book ai didi

node.js - 为什么省略行 app.use(express.static(__dirname, 'public' )) 会阻止我的 html 页面加载 css 文件?

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

我正在学习使用 NodeJS 和 Express,并且刚刚使用“express”为项目生成脚手架。我不明白的目的:

app.use(express.static(path.join(__dirname, 'public')));

我对app.use()的理解是它作为中间件加载函数,所以app.use(express.static(path.join(__dirname, 'public')))必须加载一个功能,对吧?此函数是否加载我声明为静态的某些文件的路径?

在我的 layout.jade 文件中,头部有这一行:

link(rel='stylesheet', href='/stylesheets/style.css')

当我设置 app.use(express.static) 行时,我的应用程序如何知道以“/public”开始 href 链接(如果这是它正在做的)?因为当我去掉 app.use(express.static) 行时,即使我将 href 更改为 '/public/stylesheets/style.css,它也会给出 404 来查找 css 文件'.

它怎么知道我正在尝试访问该静态文件?如果我有一个名为“root/stylesheets/style.css”的文件以及“root/public/stylesheets/style.css”怎么办?

最佳答案

对了,app.use() 加载了一个函数作为中间件。在此上下文中,它加载 express.static(path.join(__dirname, 'public')) 的结果。

express.static(path.join(__dirname, 'public')) 的结果是一个函数(在 JavaScript 中,函数可以返回函数),一个函数表达理解为中间件(即它具有以下签名:function(request, response, next) {

express.static() 是一个函数,它接受一个路径,并返回一个中间件,该中间件为该路径中的所有文件提供服务到 /。 (如果你想在它前面加上 /public 或其他什么,你会写 app.use('/public', express.static(path.join(__dirname, 'public') )),其中第一个 /publicweb 路径,第二个是正在提供的文件的 文件系统路径) .


为了更清楚,以下内容:

app.use('/a', express.static(path.join(__dirname, 'b')));

将提供 b 目录中的所有文件,并通过 http://example.com/a/FILE 访问它们。

关于node.js - 为什么省略行 app.use(express.static(__dirname, 'public' )) 会阻止我的 html 页面加载 css 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34174133/

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