_node中的Express
Express是什么?
第三方Web开发框架(基于原生node),高度封装了 http
模块
更加专注于业务,而非底层细节。
修改完代码自动重启
使用一个第三方命名航工具:nodemon
来帮我们解决频繁修改代码重启服务器问题,nodemon是一个基于Node.js开发的一个第三方命令行工具,我们使用的时候需要独立安装:
# 在任意目录执行该命令都可
# --global全局安装
npm install --global nodemon
安装完毕之后,使用:
node app.js
# 使用nodemon
nodemon app.js
nodemon --version
1.Express
原生的http在某些方面表现不足以应对我们的开发需求,所以我们就需要使用框架来加快我们的开发效率,框架的目的就是提高效率,让我们的代码更高度统一
在node中,很多Web开发框架,我们这里以学习express
为主
npm install express --save
2.使用Express
2.1 安装
# 跳过向导快速生成
npm init --yes
# npm install express --save
npm i -S express
2.2 引用Express
//1.引入包
var express = require('express')
//2.创建服务器
//express()相当于原来的http.createServer
var app = express()
//3.监听事件
app.listen(3000, function () {
console.log('Server is Running');
})
3. 基本路由
路由器(router)
请求方法,请求路径,请求处理函数
get:
//当你以GET方法请求/的时候,执行对应的处理函数
app.get('/',function(req,res){
res.send('hello World!')
})
post:
//当你以POST方法请求 / 的时候,指定对应的处理函数
app.post('/',function(req,res){
res.send('Go a POST request')
})
4. 静态服务
去这个目录中查找资源
//当以'url'开头的时候,去'.url'目录中找对应的资源
app.use('/public/', express.static('./public/'))
//当省略第一个参数的时候,则可以通过省略url的方式来访问
app.use(express.static('./public/'))
5.Express中配置art-template模板引擎
1.安装
npm install --save art-template express-art-template
npm i -S art-template express-art-template express
2.配置
app.engine('html',require('express-art-template'))
配置使用art-template
模板引擎
第一个参数表示当渲染以.art结尾的文件的时候,使用art-template
模板引擎,虽然外面这里不需要记载art-template
但是也必须安装,原因就在于express-art-template
依赖了art-template
3.使用
Express为Response相应对象提供了一个方法:render
render方法默认时不可以使用,但是如果配置了模板引擎就可以使用了
res.render( ‘html模板名’ ,{模板数据} )
第一个参数不能写路径,默认回去项目中的views目录查找该模板文件(视图文件都放到views目录中)
app.get('/', function (req, res) {
//express默认会去项目中的views目录去找index.html
res.render('index.html',{
title:'use express-art-template'
})
})
如果要修改默认views
视图渲染存储目录,可以
//注意:
//第一个参数views是默认目录
//第二个参数是修改后的目录
app.set('views',目录路径)
6.router路由
//router.js
var express = require('express')
//引入router
var router = express.Router()
router.get()
router.post()
module.exports = router
return module.exports
//app.js
var epxress = require('express')
//导入路由文件
var router = require('./router.js')
var app = express()
//挂载路由
app.use(router)
app.listen(3000,function(){
console.log('Server is Running');
})
7.body-parser
7.1安装
npm install body-parser
7.2使用
var epxress = require('express')
var app = express()
//引入body-parser
var bodyParser = require('body-parser')
//配置body-parser
//只要加入这个配置,则在req请求对象上会多出来一个属性:body
//直接通过req.body属性
app.use(bodyParser.urlencoded({ express }))
app.use(bodyParser.json())
app.get('/',function(req,res){
//此方法通常用来解析 POST 请求中的数据
//包含了提交数据的键值对在请求(Object)
console.log(req.body)
//req.query只能拿到get请求的参数
//此方法多适用于GET请求,解析GET里的参数
//包含在路由中每个查询字符串参数属性的对象(Object)
console.log(req.query)
})
8. express-session
session
默认在内存中存取,服务器重启状态消失,所以要实现持久化session
8.1 安装
npm install express-session
8.2 配置(要在挂载路由之前)
app.use(session({
//配置加密字符串,他会在原有加密基础上和这个字符串拼接起来去加密
//增加安全性,防止客户端恶意伪造
secret: 'itcast',
resave: false,
//true无论你是否需要Session,都默认分配一把钥匙🔑
//false只有当Session存储时才会分配钥匙🔑
saveUninitialized: true
}))
8.3 使用
当把这个插件配置好之后,我们就可以通过req.session
来访问和设置Session
成员
//添加`Session`数据
req.session.foo = 'bar'
//访问`Session`数据
req.session.foo
提示:默认Session数据时内存存储的,服务器一旦重启就会丢失,真正生产环境进行持久化存储