在之前的文章中我们用 node.js http-server 实现目录浏览服务,本文我们将通过编码的方式来实现目录浏览服务,前提是你已经按照好 Node.js。
编码实现
1、创建项目
找个自己喜欢的位置,创建个目录,起名为dirService
2、初始化项目
npm init
3、安装相关插件
npm install connect@3.7.0 http@0.0.1-security st@2.0.0 --save-dev
因为用到了connect.static,所以需要指定版本。
4、编写脚本 index.js
var connect = require('connect');
var http = require('http');
var st = require('st');
var port = 8081;
var mount = st({
path: 'static',
cache: true
});
var app = connect().use(mount);
http.createServer(app).listen(port);
console.log('server start done.');
console.log('port is ' + port);
5、启动脚本 index.js
node index.js server start done. port is 8081
6、查看效果

第二种写法
var http = require('http');
var st = require('st');
var port = 8081;
var mount = st({
path: 'static',
cache: true
});
http.createServer(function (req, res) {
if (mount(req, res)) return;
}).listen(port);
console.log('server start done.');
console.log('port is ' + port);
第三种写法
var connect = require('connect');
var st = require('st');
var port = 8081;
var mount = st({
path: 'static',
cache: true
});
var app = connect().use(mount);
app.listen(port);
console.log('server start done.');
console.log('port is ' + port);
第四种 express 的写法
var express = require('express');
var st = require('st');
var port = 8081;
var app = express();
var mount = st({
path: 'static',
cache: true
});
app.use('/', mount);
app.listen(port);
console.log('server start done.');
console.log('port is ' + port);
注意:
这个写法需要安装 express 组件 : npm install express@4.17.1 --save-dev
关于错误 Cannot GET /
尝试获取静态资源时,使用了下面的方式:
connect组件的connect.static(directory)(需要换用 connect 2.x 版本)serve-static组件的serveStatic("./")express组件的express.static(__dirname + '/public')
均在访问时出现错误 Cannot GET /。
目前看 st 组件好用。
关于版本
不同的版本会有实现上的变动,比如 connect 组件在 3.0 时去掉了 connect.static()。因此,取最新版本的组件不能保证代码顺利执行,尽量指定组件的版本。
关于空目录
空目录打开异常(无响应)。
非空目录打开正常。