Node.js笔记
1.express Web 应用程序
Express 是一个保持最小规模的灵活的 Node.js Web 应用程序开发框架,为 Web 和移动应用程序提供一组强大的功能
npm install express --save
命令行进入指定目录,创建项目
npm init (项目名称不能有大写字符)
数据库
npm install mysql2 --save
如果需要POST请求参数,可以使用body-parser解析
npm install body-parser --save
如果有需要加密,比如登录密码 使用md5
npm install md5 --save
cookie登陆 解析cookie - cookie包 生成随机sessionId 登陆之后sessionId的存储
’实现需要登录后才能访问的接口,请求处理函数中判断cookie
npm install cookie --save
.使用自定义管线函数实现验证登录逻辑,封装isLogin管线函数
需要登陆后才能访问的接口,使用中间件函数(在路由和处理函数中间添加的额外的处理请求的函数)isLogin,判断是否登录
userRouter.get("/center", isLogin, (req,res)=>{
res.send({
msg:"登录过了,访问成功"
})
})
也可以使用session登录
npm install express-session --save
2.express-generator脚手架的使用
npm install -g exptess-generator
创建express项目
express 项目名 --view=ejs(模板语法)
cd 项目名
npm install 加载nodejs环境
npm start 启动项目 localhost:3000 访问项目
文件上传 multer
npm install multer --save
// nodejs中用于对文件上传处理的一个中间件
var multer = require("multer")
// 创建upload上传文件对象
var upload = multer({
// 配置图片上传后存放的路径
// dest: "./public/images/head"
// 自定义图片存储
// 配置图片存储名称及路径
storage:multer.diskStorage({
destination:function(req, file, cb){
cb(null, "./www/images/head")
},
filename:function(req, file, cb){
// 获取当前时间
let date = new Date()
let year = date.getFullYear()
let month = date.getMonth()+1
let day = date.getDate()+1
let hour = date.getHours()
let second = date.getSeconds()
let minutes = date.getMinutes()
// 拼接图片存储名称
// MD5 加密图片名称 时间戳拼接图片名称 MD5+时间戳拼接图片名称
// extname 获取文件扩展名
// 拼接图片名称
let filename = file.fieldname + '-' + year + month + day + hour + second + minutes + path.extname(file.originalname)
cb(null, filename)
}
})
})
// upload.single(上传图片字段key)
// uoload.array() 上传多张图片可以使用array
userRouter.post("/upload", isLogin, upload.single("head") , (req, res)=>{
// 文件件保存成功后,会把文件的存储名称放在req.file.filename中
console.log(req.file.filename)
console.log(req.file.path)
// 获取图片名称,拼接一个完整的存放路径,把文件存放路径存入数据库
filepath = "images/head/" + req.file.filename
// req.user.moblie = req.body.moblie
userDAO.Edit({
moblie:req.body.moblie,
address:req.body.address,
nickname:req.body.nickname,
image:filepath,
uid:req.user.id
})
.then(()=>{
res.send("修改成功!")
})
.catch(err=>{
res.send(err.toString())
})
})
编程五分钟,调试两小时...