- 使用express实现静态资源托管还是挺简单的只需要使用express的static中间件即可
- 代码如下:
const express = require('express');
const app = express();
const path = require('path');
app.use('/', express.static(path.join(__dirname, 'public')));
const port = process.env.port || 3000;
app.listen(port, (error) => {
console.log(`server running at port ${port}`);
});
- 但是上面的实现存在着一个极大的问题,那就是一次只能访问一个文件,无法访问整个目录。并且每次访问文件都要手动在地址栏输入地址,这样太麻烦了,要是能像Tomcat服务器那样直接展示出整个目录下的文件就好了。
- 为了实现上面的需求,我们需要使用 node 的第三方包
serve-index
- serve-index npm资源链接
- express框架使用
serve-index
- 安装:
npm install serve-index --save
- 导入:
const serveIndex = require('serve-index');
- 作为express中间件使用
app.use('/', serveIndex(静态资源路径), {'icons': true}));
- 具体实现代码:
const express = require('express');
const app = express();
const path = require('path');
const serveIndex = require('serve-index');
app.use('/', serveIndex(path.join(__dirname, 'public'), {'icons': true}));
app.use('/', express.static(path.join(__dirname, 'public')));
const port = process.env.port || 3000;
app.listen(port, (error) => {
console.log(`server running at port ${port}`);
});
- 浏览器效果:
![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BZdTnhiR-1581321222996)(images/staticServe.png)\]](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/2/10/1702e1bc22cb8eb6~tplv-t2oaga2asx-jj-mark:3024:0:0:0:q75.awebp)
- 若需要查看其它目录,只需要改变
serveIndex和 express.static的路径即可,如想要查看根目录下的所有文件可以使用如下代码:app.use('/', serveIndex(__dirname, {'icons': true}));
app.use('/', express.static(__dirname));
- 浏览器效果:
![\[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Zme3eObt-1581321222999)(images/staticServe2.png)\]](https://p1-jj.byteimg.com/tos-cn-i-t2oaga2asx/gold-user-assets/2020/2/10/1702e1bc261b3f6f~tplv-t2oaga2asx-jj-mark:3024:0:0:0:q75.awebp)