Serving static files in Express

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

函数签名为:

express.static(root, [options])

root参数指定用于从其提供静态资产的根目录. 有关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使用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函数的路径是相对于您启动node进程的目录的. 如果从另一个目录运行express app,则使用要提供服务的目录的绝对路径更为安全:

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

有关serve-static函数及其选项的更多详细信息,请参见serve-static .

Previous: Basic Routing     Next: More examples

by  ICOPY.SITE