-
全部代码请看我的GitHub项目static server
-
相当于我们自己写了一个
http server -
只要加上文件路径就可以在网页中访问该文件
-
测试文件夹组成如下

-
新建
server.js这就是我们的静态服务器 -
用
node-dev server.js 8888启动服务器 -
粗糙的来说:只有content—type和响应体内容会变化,其他不会变化,所以修改他们就行
var http = require('http')
var fs = require('fs')
var url = require('url')
var port = process.argv[2]
if(!port){
console.log('请指定端口号好不啦?\nnode server.js 8888 这样不会吗?')
process.exit(1)
}
var server = http.createServer(function(request, response){
var parsedUrl = url.parse(request.url, true)
var pathWithQuery = request.url
var queryString = ''
if(pathWithQuery.indexOf('?') >= 0){ queryString = pathWithQuery.substring(pathWithQuery.indexOf('?')) }
var path = parsedUrl.pathname
var query = parsedUrl.query
var method = request.method
/******** 从这里开始看,上面不要看 ************/
console.log('有个傻子发请求过来啦!路径(带查询参数)为:' + pathWithQuery)
response.statusCode = 200
//第一步:确定文件路径
// 默认首页
const filePath = path === '/' ? '/index.html' : path
//第二步:确定文件类型
const index = filePath.lastIndexOf('.')
// suffix 是后缀
const suffix = filePath.substring(index)
//一一对应所以选哈希表
const fileTypes = {
'.html':'text/html',
'.css':'text/css',
'.js':'text/javascript',
'.png':'image/png',
'.jpg':'image/jpeg'
}
//第三步:确定Content-Type
response.setHeader('Content-Type',
`${fileTypes[suffix] || 'text/html'};charset=utf-8`)
//第四步:确定响应体内容
let content
try{
content = fs.readFileSync(`./public${filePath}`)
}catch(error){
content = '文件不存在'
response.statusCode = 404
}
response.write(content)
response.end()
/******** 代码结束,下面不要看 ************/
})
server.listen(port)
console.log('监听 ' + port + ' 成功\n请用在空中转体720度然后用电饭煲打开 http://localhost:' + port)