当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《为什么省略行app.use(express.static(__dirname,'public'))会阻止我的html页面加载css文件?》经验,为你挑选了1个好方法。

我正在学习使用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'怎么办?



1> Madara Uchih..:

对,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.

推荐阅读
路人甲
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有