周末的整理
require-----------接收数据
首先引入自定义模块(相对路径写完整)
设置变量连接require
module.exports----发送数据
设置module.exports发送某个变量或数据
引入内置的fs模块
异步读取方式
fs.readFile
// 异步
fs.readFile(filePath,'utf8',(err,data)=>{
if(err){
console.log('读取文件内容失败:'+err.message)
return
}
console.log('文件内容是:'+data)
})
同步的读取方式
fs.readFileSync
// 同步读取内容时如何处理错误信息,避免导致后面代码不执行 try...catch
try{
//有错误时执行catch
let content = fs.readFileSync(filePath,'utf8')
console.log('====================',content)
}catch{
console.log('发送错误:'+e.message)
}
如果路径没有改文件,会自动新建一个
覆盖式的写入------fs.writeFile(写入的路径,写入的内容,回调函数)
const fs = require('fs')
let filePath = './data.txt'
let filePath1 = './收获.txt'
fs.readFile(filePath,'utf8',(err,data)=>{
if(err){
console.log('读取失败')
return
}
fs.writeFile(filePath1,data,(err)=>{
if(err){
console.log('写入失败'+err.message)
return
}
console.log('写入成功')
})
})
追加式写入--------fs.writeFile(写入的路径,写入的内容,{flag:'a'},回调函数)
fs.writeFile(filePath1,data+'\n',{flag:'a'},(err)=>{
if(err){
console.log('写入失败:'+err.message)
return
}
console.log('写入成功')
})
删除功能------fs.unlink(路径。回调函数)
const fs = require('fs')
fs.unlink('./1.txt',(err)=>{
if(!err){
console.log('删除成功')
return
}
console.log('删除失败:'+err.message)
})
该方法不能删除文件夹
// 读取文件夹中的内容
const fs = require('fs')
fs.readdir('./文件传递',(err,data)=>{
if(err){
console.log('读取文件夹失败:'+err.message)
return
}
for(let a in data){
console.log(data[a])
fs.writeFile('./文件传递/2.txt',data[a]+'\n',{flag:'a'},(err)=>{
console.log('写入成功')
})
}
console.log(data)
})
只能读取一层
fs.mkdir(路径,回调函数)
const fs = require('fs')
// 创建文件夹
let dirPath = './config'
fs.mkdir(dirPath,(err)=>{
if(err){
console.log('创建失败了:'+err.message)
return
}
console.log('创建成功了')
})
})
fs.rename(要修改的文件夹路径,新的路径,回调函数)
const fs = require('fs')
let today = new Date()
let newName = './'+today.getFullYear()+(today.getMonth()+1)+today.getDate()+today.getSeconds()
fs.rename('./2019102610',newName,(err)=>{
console.log('修改成功')
})
创建服务器
读取用户传过来的数据
app.get('/user/info',(req,res)=>{
console.log('当前客户端传递的参数有:',req.query)
res.send('请求用户详情信息,用户id是'+req.query.userId)
})
post请求中:body-parser -----通过此模块将用户post的数据封装到req.body上
配置bodyParser
app.use(bodyParser.json())//用于接收用户是json方式传递的数据
app.use(bodyParser.urlencoded({extended:false}))// 用于接收表单方式以x-www-form-urlencoded方式传递的数据
全局中间件:过滤用,一切网址都先通过中间件
// 全局中间件
app.use((req,res,next)=>{
// req请求对象
// res响应对象
// next是一个函数----调用它则进入到下一个环境
console.log('这是全局中间件,请求任意一个路径之间将执行此函数')
if(userLogin){
next()
}else{
res.send({code:-1,msg:'请先登录'})
}
})
局部中间件:过滤用,一切该接口的网址都先通过中间件
// 局部中间件
app.use('/article',(req,res,next)=>{
console.log('这是一个局部中间件,当请求路径以/article开头时则执行此函数')
// 在req对象上添加了一个自定义属性
req.types = [{
id:1,
name:'IT'
}]
next()
})
路由
建立服务端模块化
使用路由将模块和服务端连接
const router = require('express').Router()
module.exports = router-----------------将路由的数据发送给server.js