1. Some commonly used plug-ins and middleware
const sd = require('silly-datetime') // 格式化时间插件
// parse()将url请求地址后的参数转化为对象,stringify()把对象转化为url后的参数
const querystring = require('querystring')
// bodyparser模块配置 处理post请求获取参数 req.body就是传进来的参数对象
const bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({
extended: false })) // parse application/x-www-form-urlencoded
app.use(bodyParser.json()) // parse application/json
// 作用:解析表单 可以对文件上传的二进制文件做处理, body-parser模块无法对文件处理
const formidable = require('formidable')
const form = new formidable.IncomingForm();
form.uploadDir="./uploads"; //设置上传图片地址
form.parse(req,function(err,fields,files){
// err错误对象 如果解析失败包含错误信息 解析成功nan
// fields 存储普通请求参数 对象类型 {属性:值} 保存除了二进制文件外的其他表单数据
// files 对象类型 存储上传的文件信息
console.log(err,fields,files)
})
// cookie-parser是一个用于cookie签名和签名解析的中间件
const cookieParser = require('cookie-parser')
app.use(cookieParser())
// app.use((cookiePaser('传入的密钥')) // 有签名
app.get('/', function (req, res) {
// 没有签名的cookie值从请求的cookies获取
console.log('cookies: ', req.cookies)
// 签名的cookie值从请求的signedCookies里获取
console.log('signed cookies: ', req.signedCookies)
// 需要签名singed为true
res.cookie('name','jll',{
maxAge: 30*1000,
signed:true // 这个设为true即可对该cookie签名
})
// 不需要签名不传signed
res.cookie('age', '22')
})
2. Start the server
const express = require('express');
const app = express();
app.listen(3000,'127.0.0.1', () => console.log('请访问:http://127.0.0.1:3000'))
3. Some details of using express
// 静态文件加载
app.use(express.static("./public"));
// 使用html做模板渲染需要这一步骤, ejs则不需要
app.engine("html",ejs.__express);
app.set('view engine', 'html')
// 固定模板存放文件夹views.文件后缀为ejs
app.set("view engine","ejs");
// use() 所有路由都可以经过 get() post() delete()
app.use((req,res,next)=>{
// 过滤
console.log("use路由");
// next() 跳出当前路由,可执行下一个路由
next();
})
app.get("/",(req,res)=>{
// app.get() app.post() ...
res.render('form') // 到view文件夹寻找form.ejs文件渲染到页面上
// res.send()渲染在网页上,res.json({name:''})想接口一样返回一个对象
res.send("请打开http://127.0.0.1:3000/add.html")
})
4. mongodb database
const mongodb = require('mongodb')
const mongoClient = mongodb.MongoClient
const url = 'mongodb://127.0.0.1:27017'
// 连接数据库
mongoClient.connect(url, {
useNewUrlParser: true }, (err, db) => {
if (err) throw err
db.db('test') // 连接test数据库
.collection('user') // 操作test数据库的user集合
.find() // 操作数据方法
.toArray((err, data) => {
// 查询需要使用这个方法查看数据
if (err) res.send('插入失败!')
res.send(data)
db.close() // 关闭链接数据库
})
})