express的基本使用

node框架 express

初始化和get请求

初始化项目
yarn init -y
安装框架
yarn add express 
创建主js对象文件一个app.js
引入express
const express = require("express")
创建项目对象
const app= express()
监听是否有请求
					 端口
app.listen(3000,()=>{
		//服务器启动执行一次的函数
		console.log("服务器启动啦")
})
请求处理
				路径 处理函数方法
app.get("/",(req,res)=>{
		res.send(req.body)
  body是get方法中页面传递过来的参数
})

post请求

我们使用第三方的包更简便的处理post请求参数(目前已经弃用,可以直接获取,不过我不会直接获取)

安装body-parser
yarn add body-parser
由于express中已经引用下载这个包了,我们则可以单独引用
const bodyParser = require('body-parser')
body-parser功能注册到项目app中
app.use(bodyParser.urlencoded({extended:false}))
解析json格式
app.use(bodyParser.json())

重定向

当我们在一个请求中跳转到另一个请求时,比如注册好点提交后转到登录时,我们可以用重定向来转换请求路径,在请求处理中
res.redirect("重定向路径")

all方法合并路径

当我们用相同的路径但请求的方法不一样时,我们可以用all方法来处理使代码更简洁
app.all('/register',(req.res)=>{
	if(req.mother=='GET'){
    
  }else if(req.mother=='POST'){
  
  }
})

art-template模板引擎

首先安装包
yarn add art-template 然后 yarn add express-art-template

这个是express-art-template模板引擎
然后模板引擎的初始化和注册
app.engine('html',require('experss-art-template'))//引入引擎并采用html模板
项目环境设置,生产环境production  开发环境 develpoment
app.set('view options',{
	debug:process.env.NODE_ENV !== 'development'
})
设置在哪个目录下查找模板文件
app.set('view',path.join(_dirname,'views'))
设置模板文件的的后缀名为html
app.set('view engine','html')

let data= {
	num1=20.
  num2=30
}

然后就可以简便的引用html文件了
app.get('/',(req,res)=>{
	res.render("index",data)   //返回index页面到浏览器并传递data数据给它
})
在index.html里
我们则可以使用art-template解析数据
<p> num1 = {{num1}} </p>
<p> num2 = {{num2}} </p>

num1 = 20
num2 = 30

express 中的路由对象

新建routes文件夹,在里面新建一个js文件
引入express
const express = require("express")
引入router
const router= express.Router()

然后我们之前用的app.get('/',(req,res)=>{})
现在全部改为让router管理
router.get('/',(req,res)=>{
	console.log('改为router管理')
})\
导出router
module.exports = router 
然后我们还需要注册到app.js里
假如我们之前创建的js文件叫做newroute
则需要在app.js里添加以下代码
const newrouter = require("./routes/newrouter")
app.use(newrouter)

请求预处理的钩子函数

在app.js里
const newrouter = require(./routes/newrouter)
function func(req,res,next){
  在这里就可以进行预处理,比如校验登录
	console.log("执行newrouter的路由接口函数之前先执行这个")
  if(true){
  	res.sent("登录校验没有通过")
    return 提前结束函数
  }
  next()		到这里去执行newrouter下一个函数,然后就去处理newrouter.js文件了
}
app.use(func,newrouter)

我们也可以把登录校验看成一个工具,把他单独封装到utils工具的包里

在根目录下创建utils文件夹,并创建登录校验的js文件
把函数放在这个js文件里并导出
function func(req,res,next){
  在这里就可以进行预处理,比如校验登录
	console.log("执行newrouter的路由接口函数之前先执行这个")
  	if(true){
  		res.sent("登录校验没有通过")
    	return 
 	 }
    next()	
 		app.use(func,newrouter)
}
  module.exports = {
  	checkLogin
  } 
  
  然后我们在原来的文件中导入
  const utils = require("./utils/index.js")
  并修改use文件
  app.use(utils.func,newrouter)
  

pathinfo参数获取

其实也就是动态路由
当我们在html中转发的路径是
/index/1
/index/2
/index/3
/index/4

我们在路由里面应该配置:号
app.get("/index:id",(req,res)=>{
  							{id:1}
  console.log(req.params)
  									1
  console.log(req.params.id)
})

art-template过滤器

html页面
<p>{{num | timeramp  }}</p>
js
const template = require("art-template")
													过滤器名字	 这个value就算html | 前面的值
template.defaults.imports.timestamp = function(value){
  return value * 1000  这里过滤器返回值
};

art-template模板继承

模板继承就是一个html文件可以继承另一个html文件的全部内容,然后自己再在里面写自己的内容。
常见于网页中比如说菜单侧边栏,侧边栏不变,也就是继承的父类不变,继承的页面子类发生改变

我们现在写一个父类
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>firstviev</title>
</head>
<body>
    <p>父类</p>
  {{block 'newviev'}}
  这里是子类显示的地方
  {{/block}}
</body>
</html>
再写一个子类
{{extend './firstviev'}}

  {{block 'newviev'}}
  <p>这里是子类</p>
  {{/block}}

设置获取cookie

引入模块
const cookieParase = require('cookie-parser');
使用模块
app.use(cookieParase())

app.get("setcook",(req,res)=>{
	设置cookie  健			值				设置let过期时间 单位毫秒 
	res.cookie("name","node",{maxAge:60*60*2*1000})
	res.cookie("age",11)  这里没有设置时间,则关闭浏览器时cookie失效。
	res.send("设置了cookie")
})
app.get("getcook",(req,res)=>{
	let name = req.cookies["name"]
  let age = req.cookies["age"]
  console.log(req.cookies["name"]);
  console.log(req.cookies["age"]);
  res.send(`获取到的cookie信息为:${name},${age}`);
})

设置获取session

引入模块
const cookieSession = require('cookie-session');
使用模块
app.use(cookieSession({
	name:"my_session"  //起个名字
  keys:["OANSOJDNOBOWIBAOISBJDBNNWJANOSD"] 随便敲 他对你这个进行加密进行加工使用
  maxAge:60*60*24*1000  //时间
}))

app.get("setcook",(req,res)=>{
	设置cookie  健			值				设置let过期时间 单位毫秒 
	req.session["name"]="nodesession"
	req.session["age"]=12;  这里没有设置时间,则关闭浏览器时cookie失效。
	req.send("设置了session")
})
app.get("getcook",(req,res)=>{
	let name = req.session["name"]
  let age = req.session["age"]
  res.send(`获取到的session信息为:${name},${age}`);
})

session和cookie的关系
![image.png](https://img-blog.csdnimg.cn/img_convert/91802ac017e35dcfe3f3a2c4e1891ea4.png#clientId=u329e2a42-74e0-4&crop=0&crop=0&crop=1&crop=1&from=paste&height=375&id=u989b2ebd&margin=[object Object]&name=image.png&originHeight=750&originWidth=1697&originalType=binary&ratio=1&rotation=0&showTitle=false&size=290528&status=done&style=none&taskId=u222a47e4-7b48-4bf8-927a-b6fb077b4b5&title=&width=848.5)

CORS跨域

yarn add cors
const cors = require("cors")

在路由之前调用
app.use(cors())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值