nest.js学习(3)静态资源配置和模板引擎+服务Service+cookie+session

nest.js配置静态资源

在这里插入图片描述
因为nest是基于express,我们得使用@nestjs/platform-express这个东西。
接着我们安装官网的示例敲一遍
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
配置成功,在这里插入图片描述
起别名
在这里插入图片描述

模板引擎配置

nest配置ejs跟express配置是差不多的
npm i ejs --save
配置:
官网
在这里插入图片描述
但我们使用的是ejs
在这里插入图片描述
在这里插入图片描述
建立视图联系。
然后只要控制器中使用
在这里插入图片描述
使用装饰器,传入index参数表示要找到该ejs模板,然后就会渲染该模板,return的对象会作为ejs的对象使用
在这里插入图片描述
在这里插入图片描述
模板引擎就配置好了。

简单总结一下

静态资源开放只需要使用app.useStaticAssets设置静态资源文件的位置,就可以访问到,
而模板引擎主要是使用了ejs模板,
使用app.setBaseViewsDir建立视图联系,
使用app.setViewEngine(‘ejs’)表明使用ejs模板,
在需要用到模板的地方只需要使用Render装饰器,并传入模板文件名即可渲染模板。

案例

使用表单ejs模拟发送请求
准备模板
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用Response装饰器获取res对象,可以使用res.direct进行路由跳转。

服务 Service

nest.js的服务可以是Service也可以是provider,他们都是通过constructor注入依赖关系,如
在这里插入图片描述
在这里注册,然后
在这里插入图片描述
在这里插入图片描述
在控制器的constructor注入依赖关系,这样就在该控制器使用服务。
服务的本质就是通过@Injectable装饰器注解的类
在这里插入图片描述
也可以说一个类经过Injectable装饰器装饰过后就变成了服务的类。
在nest.js中,服务就好比mvc的Model层,我们之前实现的数据处理都是在控制器中处理,控制器主要处理一些简单的逻辑,复杂的逻辑主要放在model层,也就是服务中去处理。

nest.js创建服务

nest g service news
在这里插入图片描述
在这里插入图片描述
如何使用呢,首先在app.module中配置该服务,已经自动配置好了,接着在控制器的构造函数中注入依赖,在这里插入图片描述

在这里插入图片描述
然后试下
在这里插入图片描述
访问成功。

总结:

Nest.js的服务本质就是一个通过装饰器Injectable装饰过的类,在这里处理复杂的逻辑处理,使用的话需要在model模块中注册,并在控制器的构造函数中去注入依赖,这样在控制器中就可以拿到该类,从而使用其中的一些方法。

cookie

nest中使用Cookie,因为我们是基于express框架的,所以使用cookie-parser这个库来帮助我们实现,
npm i -D @types/cookie-parser --save
npm instlal cookie-parser --save
在mian.ts中引入该模块,
在这里插入图片描述

在这里插入图片描述
他也是要一个中间件,使用的时候直接app.use就行
设置cookie
在这里插入图片描述
在这里插入图片描述
获取cookie
在这里插入图片描述
在这里插入图片描述
成功获取cookie。
cookie的一些参数
在这里插入图片描述
删除cookie只需要将其过期时间调为现在即可。

配置加密cookie

在这里插入图片描述
在这里插入图片描述
配置cookie的时候需开启signed
在这里插入图片描述
已经加密,获取cookie也不是通过req.cookies.name来获取,而是
在这里插入图片描述
在这里插入图片描述
cookie加密完成

session

sessin的功能与cookie很相似,不过cookie是保存在浏览器,而session是保存在服务器。
工作流程:
当浏览器访问服务器并发送第一次请求时,服务器端会创建一个session对象,生成一个类似于key,value的键值对, 然后将key(cookie)返回到浏览器(客户)端,浏览器下次再访问时,携带key(cookie),找到对应的session(value)。 客户的信息都保存在session中
在express中使用Session,
npm i express-session --save
npm i -D @types/express-session --save
在main.ts中配置
在这里插入图片描述
在这里插入图片描述
在配置中间件这里可以做其他的配置,因为session是基于cookie的。
secret作为服务器端生成session的签名。 ,cookie是过期时间
其他常用参数

secret	一个String类型的字符串,作为服务器端生成session的签名。 
name	返回客户端的key的名称,默认为connect.sid,也可以自己设置。 
resave	强制保存session即使它并没有变化,。默认为true。建议设置成false。 don't save session if unmodified 
saveUninitialized	强制将未初始化的session存储。当新建了一个session且未设定属性或值时,它就处于
未初始化状态。在设定一个cookie前,这对于登陆验证,减轻服务端存储压力,权限控制是有帮助的。(默认:true)。建议手动添加。
cookie	设置返回到前端key的属性,默认值为{ path:/, httpOnly: true, secure: false, maxAge: null }。
rolling	在每次请求时强行设置cookie,这将重置cookie过期时间(默认:false

设置session
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时cookie会存到浏览器,当发送时会携带这个cookie,通过这个cookie找到session,session通常保存着用户信息。

获取session

在这里插入图片描述

因为我们刚刚访问上个网址已经设置过session了,相当于登陆过,有了cookie,访问这个的时候就可以拿到该session的信息。
在这里插入图片描述
当我们删掉cookie后
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
此时便不能获取到原来的Name属性了。

该文某些部分参考与IT营的nest教程.(仅作笔记使用)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

coderlin_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值