Node.js中的Express

_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/'))

image-20210208133358253

//当省略第一个参数的时候,则可以通过省略url的方式来访问
app.use(express.static('./public/'))

image-20210208133427947

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数据时内存存储的,服务器一旦重启就会丢失,真正生产环境进行持久化存储

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值