创建http服务的实例
node工具的安装
可以通过百度node进行安装
node -v检测安装的版本号
node自动启动工具 supervisor
第一步 进行安装 npm i -g supervisor
第二步 执行代码 supervisor app.js
第三步 如果显示不是内部命令vscode关闭再打开
创建实例
var http = require(‘http’)
http.createServer(function(req,res)=>{
// 设置响应头
res.writeHead(200,{‘Content-Type’:‘text/plain’})
// 显示在页面中的数据
res.end(‘hello word’)
// 设置端口号8000
}).listen(8000)
给浏览器进行响应
var http = require(‘http’)
http.createServer(function(req,res)=>{
// 设置响应头
res.writeHead(200,{‘Content-Type’:‘text/plain’})
// 显示在页面中的数据
res.write(‘this is Node’)
// 结束响应
res.end()
// 设置端口号8000
}).listen(8000)
设置响应头 解决中文乱码的问题
var http = require(‘http’)
http.createServer(function(req,res)=>{
// 设置响应头
res.writeHead(200,{‘Content-Type’:‘text/html;charset=“utf-8”’})
res.write(‘你好,node.js’)
// 显示在页面中的数据
res.write(‘this is Node’)
// 结束响应
res.end()
// 设置端口号8000
}).listen(8000)
URL解析
url.parse() 解析url地址
url.format() 是url.parse的逆向操作
url.resolve(from,to) 添加或者替换地址
// 获取get参数 url.parse解析出了路径地址是一个对象
let params = url.parse(‘https://www.baidu.com?age=12’,true).query
console.log(params.age) // 12
关于fs内置模块的使用
-
fs.stat 检测是文件还是目录
fs.stat(‘./html’,(err,data)=>{
if(err){console.log(err) return }
console.log(data.isFile()) // 如果是文件为true否false
console.log(data.isDirectory())目录为true否false
}) -
fs.mkdir 创建目录
fs.mkdir(‘./css’,(err)=>{
if(err){console.log(err) return }
console.log(‘创建成功’)
}) -
fs.writeFile 创建文件
fs.weiteFile(‘./index.txt’,‘向文件中追加的内容’,(err)=>{
if(err){console.log(err) return }
console.log(‘创建成功’)
}) -
fs.appendFile 追加文件
fs.appendFile(‘./css/base.css’,‘body{color:‘red’}’,err=>{
if(err){console.log(err) return }
console.log(‘body为追加的内容’)
}) -
fs.readFile 读取文件
fs.readFile(‘./index.html’,(err,data)=>{
if(err){console.log(err) return }
// 这里的data是buffer格式需要转化为字符串
const strData = data.toString()
console.log(strData)
}) -
fs.readdir 读取目录
fs.readdir(‘./html’,(err,data)=>{
if(err){console.log(err) return }
console.log(data)
}) -
fs.rename 重命名
fs.rename(‘./css/index.css’, ‘./css/base.css’,(err)=>{
if(err){console.log(err) return }
console.log(‘重命名成功’)
})
fs.rename(‘./css/index.css’, ‘./html/index.css’,(err)=>{
if(err){console.log(err) return }
console.log(‘移动文件成功’)
}) -
fs.rmdir 删除目录
fs.remdir(‘./html’,(err)=>{
if(err){console.log(err) return }
console.log(‘删除成功’)
}) -
fs.unlink 删除文件
fs.remdir(‘./html/index.css’,(err)=>{
if(err){console.log(err) return }
console.log(‘删除成功’)
})
node模块的分类
第一类 node内置模块:fs path url http等
第二类 文件模块也就是我们编写的js文件通过require进行导入的文件。
模块的导出方式按需导出exports和默认导出modules.exports两种方式。
案例:
exports.get = ()=>{console.log(‘方法一’)}
exports.post = ()=>{console.log(‘方法二’)}
module.exports = {name:‘zs’,age:12}
fs中的管道流
// 读取数据流
const fs = require(‘fs’)
var readStream = createReadStream(‘./html/index.txt’)
var count = 0
var str = ‘’
readStream.on(‘data’,(data)=>{ // 不断的读取数据
str+=data
count++
})
readStream.on(‘end’,()=>{ // 读取数据结束
console.log(str)
console.log(count)
})
readStream.on(‘error’,()=>{ // 读取数据结束
console.log(err)
})
// 写入数据流
var fs = require(‘fs’)
const data = ‘我是从数据库获取的数据 我要保存起来’
wrterStream = fs.createWriteStream(‘./html/index.txt’)
wrterStream.write(data,‘UTF8’) // 使用utf8写入数据
wrterStream.end()
wrterStream.on(‘finish’,function(){
console.log(‘写入完成’)
})
wrterStream.on(‘error’,function(){
console.log(error)
})
// 将可读流写入可写流
var fs = require(‘fs’)
var readerStream = fs.createReadStream(‘input.txt’)
var writerStream = fs.createWriteStream(‘output.txt’)
readerStream.pipe(writerStream)
console.log(‘程序执行完毕’)
关于路由
const http = require(‘http’)
const url = require(‘url’)
const path = require(‘path’)
http.createServer(function(req,res){
// 获取地址
let pathname = url.parse(req.url,true).pathname;
pathname = pathname==‘/’?‘/index.html’:pathname
let extname = path.extname(patname) 获后缀名
if(!pathname!=‘/favicon.ico’){
fs.readFile(‘./static’+pathname,(err,data)=>{
if(err){
res.writeHead(404,{‘Content- Type’:‘text/html;charset=“utf-8”’})
res.end(‘404页面不存在’)
}
// 根据传递进来的方法 获取content-type类型
let mime = common.getFileMime(extname)
res.writeHead(200,{‘Content-Type’:‘’+mime+‘;charset=“utf-8”’})
res.end(data)
})
}
})
getFileMime(extname){
var data = fs.readFileSync(‘./data.mine.json’) 同步
let mimeObj = JSON.parse(data.toString())
return mimeObj[extname]
}
mime.json = {‘.gif’:“audio/x-aiff”,“.html”:“text/html”}