2.5. 静态文件

未匹配的标注

利用 Express 托管静态文件

为了提供诸如图像、CSS 文件和 JavaScript 文件之类的静态文件,请使用 Express 中的 express.static 内置中间件函数。

此函数特征如下:

express.static(root, [options])

根参数指定为静态资产提供服务的根目录。有关options参数的更多信息,请参见 express.static.

例如,通过如下代码就可以将 public 目录下的图片、CSS 文件、JavaScript 文件对外开放访问了:

app.use(express.static('public'))

现在,你就可以访问 public 目录中的所有文件了:

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

Express 在静态目录查找文件,因此,存放静态文件的目录名不会出现在 URL 中。

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

app.use(express.static('public'))
app.use(express.static('files'))

访问静态资源文件时,express.static 中间件函数会根据目录的添加顺序查找所需的文件。

注意:为了达到最佳效果, 使用反向代理 高速缓存提高静态资产的表现。

要创建一个虚拟路径前缀(其中文件系统中实际上不存在路径)用于由 express.static 功能提供文件(其中的路径实际上并不存在文件系统), 指定安装路径对于静态目录,如下图所示:

app.use('/static', express.static('public'))

现在,你就可以通过带有 /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

但是,提供给 express.static f函数的路径是相对于启动node 进程的目录的,如果从另一个目录运行express应用程序,则使用要服务的目录的绝对路径更安全:

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

欲了解更多关于 serve-static 函数及其参数的知识,请参考 serve-static.


协助译者署名

用户名 头像 职能 签名
@matteao html>

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
wangchunbo
讨论数量: 0
发起讨论 只看当前版本


暂无话题~