blog icon indicating copy to clipboard operation
blog copied to clipboard

博客,记录平常的所学所想

Results 31 blog issues
Sort by recently updated
recently updated
newest added

一般业务流程是:验证用户登录信息没问题后,会签发一个 token 给用户 用于之后的接口请求。 ## 给用户签发 JWT nest 中使用 @nestjs/jwt 来给用户签发 jwt ```shell yarn add @nestjs/jwt ``` 在 auth 模块中引入 jwt 模块 ```typescript // auth/auth.module.ts import { Module } from...

gRPC 是谷歌开源的一套多语言 RPC 框架,用官网的一句话来概括就是: > A high-performance, open-source universal RPC framework 翻译过来就是:一个高性能、开源通用的 RPC 框架。gRPC 也是一个遵循**server/client模型**的框架 ## gRPC 使用 先安装 grpc 和 @grpc/proto-loader ``` yarn add grpc @grpc/proto-loader ``` 由于 gRPC...

## RPC 指远程过程调用 常见调用,比如 web 端和远程服务器交互,这是客户端与服务器之间的交互 RPC 是指服务器和服务器之间的调用 ## 服务器之间的交互形式 ![](https://tva1.sinaimg.cn/large/008i3skNly1gqw3a4is8xj30om0c8mza.jpg) **依赖中间件做数据交互**,比如 MySQL、RabbitMQ、Redis 等作为中间依赖的调用方式,A 服务器向 B 服务器发送请求时 需要经过中间件,这类交互形式不需要 B 服务器立刻给出处理结果,一般适合处理数据挤压类型的架构,比如双十一订单量巨大,B 服务器处理能力有限,先把订单数据积压在中间件中,然后 B 服务器慢慢去处理。 **直接交互**,没有中间件,通过 HTTP、RPC、WS 等方式进行通信,这类架构的特点就是快速相应,A 服务器发送请求到 B 服务器,并会一直等待 B...

## 介绍 这是一种行为设计模式,它允许对象根据对其内部状态的更改来更改其行为。状态模式类返回的对象似乎更改了其类。它为一组有限的对象提供特定于状态的逻辑,其中每种对象类型代表一种特定的状态。 状态模式的核心是: - 一个对象有状态变化 - 每次状态变化都会触发一个逻辑 ## 示例 状态模式需要一个主题类 Context 用来作为状态的载体,这个类记用于 get 和 set 状态; 状态模式需要状态类 State ,里面包含具体的状态变化的逻辑; 在生活中,红绿灯就是状态模式的体现,灯颜色的变化会触发汽车或行人的行为 先定义 State 类,它用于红绿灯颜色变化和相应的逻辑处理: ```javascript class State { constructor(color){ this.color...

它属于**行为设计模式**,定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换 一个基于策略模式的程序至少由两部分组成: - 一组策略类,策略类封装了具体的算法,并负责具体的计算过程 - 环境类 Context, Context 接受客户的请求,随后把请求委托给某一个策略类 要做到这点,说明 Context 中要维持对某个策略对象的引用; ## 示例 条条大路通罗马,现在人们出去旅游会选择各种方式,这里通过策略模式来完成不同需求下的旅游 先建立几组策略类,这些策略是旅游出行的方式,有的人有时间选择徒步,有的人旅游地方远或时间紧就选飞机,有的人享受自驾: ```javascript /** * 定义多个策略类 每个策略算法不同 */ class Foot { trigger() { console.log('时间很长 徒步旅行'); }...

这是一种至关重要的行为设计模式,它定义了对象之间的一对多依赖关系,以便当一个对象(发布者)更改其状态时,所有其他依赖对象(订阅者)都将得到通知并自动更新。这也称为PubSub(发布者/订阅者)或Event Dispatcher / Listeners Pattern。发布者有时称为主题,订阅者有时称为观察者。 如果您已经使用addEventListener或jQuery编写事件处理代码,那么您可能已经有点熟悉此模式了。它也对反应式编程(RxJS)有影响。 在示例中,我们创建了一个简单的`Subject`类,该类具有用于`Observer`从订户集合中添加和删除类的对象的方法。另外,一种`fire`将`Subject`类对象中的任何更改传播到订阅的Observers的方法。的`Observer`类,在另一方面,有其内部状态和基于从传播的改变更新其内部状态的方法`Subject`它已经预订。 ***Observer.js*** ```javascript class Subject { constructor() { this._observers = []; } subscribe(observer) { this._observers.push(observer); } unsubscribe(observer) { this._observers = this._observers.filter(obs => observer !==...

![](https://docs.nestjs.com/assets/Modules_1.png) 要想使用 nest 开发,你必须了解 module ,否则无法下手,也搞不懂模块间的引用逻辑。 如果你不懂 nest 里的模块,可以这样理解:它类似组件化概念里的组件,比如在写 React 时,我们有一个根组件,一个 React 应用由多个组件构成的; 在 nest 应用中,也有一个根模块( app.module, 即上图中的 Application Module ),整个 nest 应用由多个模块和一个根模块构成; 来看一个模块: ```typescript import { Module } from...

# es6-design-patterns ## 在EcmaScript 6中实现的软件设计模式 ------ 在这个项目中,我们介绍EcmaScript 6中的软件设计模式。 图像由[StarUML](http://staruml.io/)从[staruml-design-patterns](https://github.com/loredanacirstea/staruml-design-patterns)项目中的.mdj文件生成。 ### 内容 - [创作模式](#creational-patterns) - [抽象工厂模式](#abstract-factory) - [创造者模式](#builder) - [工厂方法模式](#factory-method) - [原型模式](#prototype) - [单例模式](#singleton) - [结构模式](#structural-patterns) - [适配器模式](#adapter) - [桥接模式](#bridge) -...

babel 在转译时,会将源码分为两个部分来处理,分别是: syntax 和 api - syntax:类似对象展开、optional chain、let、const 等语法 - api:类似数组的 includes 等函数、方法 ### @babel/preset-env ```json { "presets": [ ["@babel/preset-env"] ] } ``` `preset-env`可以使用最新的 JavaScript Api ,它是许多 preset 的集合(es2015+),通过配置来智能使用 JavaScript。...