http.cresteServer()
//引入http模块
const http = require('http');
const { ESRCH } = require('constants');
//创建web服务方法是http.creatServer(()=>()).listen(3000)
http.createServer((req,res)=>{
res.writeHead(200,{"Content-type":"text/html;charset='utf-8'"});
res.write('<head><meta charset="UTF-8"></head>')
res.write('内容')
res.end()
}).listen(3000)
console.log('http://127.0.0.1:3000')
//NodeJs创建一个web服务器(可以放置静态网站、下载web服务器上的文件)
//http://127.0.0.1:3000/index.html
// 1.获取网站地址
const http = require('http')
const fs = require('fs')
const path = require('path')
const url = require('url')
const common = require('./module/name.js')
http.createServer((req, res) => {
// res.writeHead(200,{"Content-type":"text/html;charset='utf-8'"})
//http://127.0.0.1:3000/index.html
// 1.获取网站地址
// let pathanme = req.url
let pathanme = url.parse(req.url).pathname
pathanme = pathanme == '/' ? '/index.html' : pathanme
//path内置模块中有一个path.extname()方法获取后缀名
let extanme = path.extname(pathanme)
// console.log(extanme)
//2. 通过fs模块读取文件
if (pathanme != '/favicon.ico') {
fs.readFile('./pack' + pathanme, (err, data) => {
if (err) {
res.writeHead(404, { "Conten-type": 'text/html;charset="utf-8"' })
res.write('<head><meta charset="UTF-8"></head>')
res.end('页面不存在')
} else {
let mime = common.getMime(extanme)
// res.writeHead(200,{"Conten-type":"text/html;charset='utf-8'"})
res.writeHead(200, { "Conten-type": '' + mime + ";charset='utf-8'" })
// res.write('<head><meta charset="UTF-8"></head>')
res.end(data)
}
})
}
}).listen(3000)
console.log('http://127.0.0.1:3000')
exports.getMime=function(e){
//e外部使用是传入的后缀名
switch(e){
case '.html':
return 'text/html';
case '.css':
return 'text/css'
case '.js':
return 'text/javascript'
default:
return 'text/html';
}
}
创建web服务器
//NodeJs创建一个web服务器(可以放置静态网站、下载web服务器上的文件)
//http://127.0.0.1:3000/index.html
// 1.获取网站地址
const http = require('http')
const fs = require('fs')
const path = require('path')
const url = require('url')
const common = require('./module/name.js')
common.getMimes('.png')
http.createServer((req, res) => {
// res.writeHead(200,{"Content-type":"text/html;charset='utf-8'"})
//http://127.0.0.1:3000/index.html
// 1.获取网站地址
// let pathanme = req.url
let pathanme = url.parse(req.url).pathname
pathanme = pathanme == '/' ? '/index.html' : pathanme
//path内置模块中有一个path.extname()方法获取后缀名
let extanme = path.extname(pathanme)
// console.log(extanme)
//2. 通过fs模块读取文件
if (pathanme != '/favicon.ico') {
fs.readFile('./pack' + pathanme, async (err, data) => {
if (err) {
res.writeHead(404, { "Conten-type": 'text/html;charset="utf-8"' })
res.write('<head><meta charset="UTF-8"></head>')
res.end('页面不存在')
} else {
// let mime = common.getMime(extanme)
let mimes = await common.getMimes(extanme)
// res.writeHead(200,{"Conten-type":"text/html;charset='utf-8'"})
res.writeHead(200, { "Conten-type": '' + mimes + ";charset='utf-8'" })
// res.write('<head><meta charset="UTF-8"></head>')
res.end(data)
}
})
}
}).listen(3000)
console.log('http://127.0.0.1:3000')
外部自定义模块/module/name.js
//异步的
const fs = require('fs')
exports.getMimes = function (a) {
return new Promise((resolve,reject)=>{
fs.readFile('data/Mime.json',(err,data)=>{
if(err){
console.log(err)
reject(err)
}else{
let site = JSON.parse(data.toString())
// return site[a] 这是异步的,如果直接返回会有问题的(需要做异步处理)
// console.log(site[a])
resolve(site[a])
}
})
})
}
// console.log(this.getMimes('.js'))
// this.getMimes('.js')
外部文件类型库的json文件Mime.json
{
".ai": "application/postscript ",
".eps": "application/postscript ",
".exe": "application/octet-stream ",
".doc": "application/vnd.ms-word ",
".xls": "application/vnd.ms-excel ",
".ppt": "application/vnd.ms-powerpoint ",
".pps": "application/vnd.ms-powerpoint ",
".pdf": "application/pdf ",
".xml": "application/xml ",
".odt": "application/vnd.oasis.opendocument.text",
".swf": "application/x-shockwave-flash ",
".gz": "application/x-gzip ",
".tgz": "application/x-gzip ",
".bz": "application/x-bzip2 ",
".bz2": "application/x-bzip2 ",
".tbz": "application/x-bzip2 ",
".zip": "application/zip ",
".rar": "application/x-rar ",
".tar": "application/x-tar ",
".7z ": "application/x-7z-compressed ",
".txt": "text/plain ",
".php": "text/x-php ",
".html": "text/html ",
".htm": "text/html ",
".js": "text/javascript ",
".css": "text/css ",
".rtf": "text/rtf ",
".rtfd": "text/rtfd ",
".py": "text/x-python ",
".java": "text/x-java-source ",
".rb": "text/x-ruby ",
".sh": "text/x-shellscript ",
".pl": "text/x-perl ",
".sql": "text/x-sql ",
".bmp": "image/x-ms-bmp ",
".jp": "image/jpeg ",
".jpeg": "image/jpeg ",
".gif": "image/gif ",
".png": "image/png ",
".tif": "image/tiff ",
".tiff": "image/tiff ",
".tga": "mage/x-targa ",
".psd": "image/vnd.adobe.photoshop",
".mp3": "audio/mpeg ",
".mid": "audio/midi ",
".ogg": "audio/ogg ",
".mp4a": "audio/mp4 ",
".wav": "audio/wav ",
".wma": "audio/x-ms-wma ",
".avi": "video/x-msvideo ",
".dv": "video/x-dv ",
".mp4": "video/mp4 ",
".mpeg": "video/mpeg ",
".mpg": "video/mpeg ",
".mov": "video/quicktime ",
".wm": "video/x-ms-wmv ",
".flv": "video/x-flv ",
".mkv": "video/x-matroska " }
```
和上面的唯一的区别是一个是上面是异步的(需要用到async await),这里是同步的
//NodeJs创建一个web服务器(可以放置静态网站、下载web服务器上的文件)
//http://127.0.0.1:3000/index.html
// 1.获取网站地址
const http = require('http')
const fs = require('fs')
const path = require('path')
const url = require('url')
const common = require('./module/name.js')
common.getMimes('.png')
http.createServer((req, res) => {
// res.writeHead(200,{"Content-type":"text/html;charset='utf-8'"})
//http://127.0.0.1:3000/index.html
// 1.获取网站地址
// let pathanme = req.url
let pathanme = url.parse(req.url).pathname
pathanme = pathanme == '/' ? '/index.html' : pathanme
//path内置模块中有一个path.extname()方法获取后缀名
let extanme = path.extname(pathanme)
// console.log(extanme)
//2. 通过fs模块读取文件
if (pathanme != '/favicon.ico') {
fs.readFile('./pack' + pathanme, (err, data) => {
if (err) {
res.writeHead(404, { "Conten-type": 'text/html;charset="utf-8"' })
res.write('<head><meta charset="UTF-8"></head>')
res.end('页面不存在')
} else {
// let mime = common.getMime(extanme)
let mimes = common.getMimes(extanme)
// res.writeHead(200,{"Conten-type":"text/html;charset='utf-8'"})
res.writeHead(200, { "Conten-type": '' + mimes + ";charset='utf-8'" })
// res.write('<head><meta charset="UTF-8"></head>')
res.end(data)
}
})
}
}).listen(3000)
console.log('http://127.0.0.1:3000')
//同步
const fs = require('fs')
exports.getMimes = function (a) {
var data = fs.readFileSync('./data/Mime.json');//同步方法
let site = JSON.parse(data.toString())
return site[a]
}