// 1.自动重启插件
npm i -S nodemon
node XXX.js => nodemon XXX.js
// 2.配置模版引擎
(1)下载
npm i -S art-template
npm i -S express-art-template
(2)配置
app.engine('html', require('express-art-template'))
(3)使用
app.get('/', (req, res) => {
res.render('index.html', {
title: 'hello world'
})
})
// 3.公开资源(中间件)
app.use('/node_modules/', express.static('./node_modules/'))
// 4.fs readFile 的第二个参数 说明
fs.readFile('./XXX', 'utf8', (err, data) => {
if (err) {
return XXX
}
console.log(data)
})
如果有第二个参数,将按照第二个参数的编码自动转换数据,也就是说不需要data.toString()可以直接拿到字符串数据
// 5.views文件夹
render('index.html', {})
会默认去views文件夹下寻找index.html
// 6.post请求插件
(1)下载
npm i -S body-parser
(2)配置
var bodyParser = require('body-parser')
// application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended : false}))
// application/json
app.use(bodyParser.json())
(2) 使用 -- 要在路由挂载之前使用 app.use(router) 之前
app.use((req, res) => {
console.log(req.body)
})
// 7.获取异步数据 -- 回调函数
function fn (callback) {
setTimeout(() => {
let data = 'abc'
callback(data)
}, 1000)
}
fn((data) => {
console.log(data)
})
// 8.模块化的标志 是require 和 export
js本身天生不支持模块化 (第三方库可以帮js做到模块化)
1)require.js AMD
2)sea.js CMD
node 才有模块化 (在node中有commonJS模块化规范)
// 9.package.json 与 package-lock.json
新版本node 会生成package-lock.json,老版本不会生成(npm 5 以后会有)
package-lock.json 会保存所有依赖信息(包括下载地址)加快重新下载速度
package-lock.json 会锁定版本,不会让依赖自动更新到最新版本
// 10.mongodb
1)开启
cd /usr/local/mongodb/bin
sudo ./mongod
2)连接
cd /usr/local/mongodb/bin
./mongo
3)离开
exit
4)基本命令
show dbs -- 查看数据库
db.dropDatabase() -- 删除当前数据库
use name -- 使用(切换)数据库,如果没有就新建(不是及时新建)
db -- 查看当前数据库(默认在test数据库)
db.[objName].insertOne({"name": "zhangsan"}) -- 添加数据
show collections -- 查看当前数据库下的集合
db.[objName].find() -- 查看数据库下集合里面的数据
// 11.express 数据返回
res.status(200).json({
success: true,
data: {}
})
// 12.session
1)下载
npm i express-session
2)配置
var session = require('express-session')
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitalized: true
}))
3)使用
req.session.XXX 获取
req.session.XXX = XXX 赋值
delete req.session.XXX 删除
// 13.关于重定向
1)服务器只能在同步重定向
a标签连接 -- 同步
form action -- 同步
2)异步需要客户端重定向跳转
// 14.node绝对路径
var path = require('path')
path.join(__dirname)
// 15. 404 与 错误
app.use((req, res, next) => {
console.log(404)
})
app.use((err, req, res, next) => {
res.status(500).json(err)
})