jump-and-jump

Results 72 issues of jump-and-jump

> 中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。 在实际的项目中,程序由许多对象组成,对象间的交流错综复杂。 ![中介者对象](https://raw.githubusercontent.com/wsafight/personBlog/master/design-pattern/mediation-obj.jpeg) 随着应用程序的规模增大,对象越来愈多,他们之间的关系也越来复杂。对象间很容易出现相互引用而导致程序无法运行。同时开发者需要改变或者删除某一个对象时候,需要查找并且改造所有引用到它的对象。这样一来,改造的成本会变的非常高。 但中介者模式可以让各个对象之间得以解耦。 ![中介者对象](https://raw.githubusercontent.com/wsafight/personBlog/master/design-pattern/mediation-middle.jpeg) 之前的场景下,如果 A 发生了改变,开发者需要修改 B、D、E、F 4 个对象,而通过中介者模式,我们只需要修改中介者这一个对象即可。 中介者的好处是简化了对象之间的交互,坏处则是中介类有可能会变成大而复杂的“上帝类”(God Class)。所以,在使用中介者模式时候,设计上一定要非常克制。 ## 实际使用 在前端项目开发的过程中,有很多业务无关的功能,但这些功能会散落在各个业务中,难以管理,我们利用中介者模式的思想来构建一个的控制器。 ### 基础控制器 ```typescript // axios 请求工具 import axios from "axios"; // mitt...

在项目开发和运行的过程中,总是少不了各类升级。例如某个功能组件需要更高的依赖库、数据项需要进行兼容等等问题。遇到此类问题开发者需要使用版本号来解决。今天我们就来分析一下项目迭代过程中会遇到的各类升级问题以及如何使用版本号来解决。 通常来说升级会涉及到三个点: - 向下兼容 - 协商升级 - 拒绝服务 ## 依赖升级 开发者在产品演进的过程中会不断的升级工具依赖,以 npm 版本为例。版本号通常由三部分组成: 主版本号、次版本号和修订版本号。 ``` Major.Minor.Patch ``` 其中,Major 表示主版本,当你做了不兼容的 API 修改时,就需要升级这个版本号。Minor 表示次版本,当你做了向下兼容的功能性新增时,就需要升级这个版本号。而 Patch 表示修订版本,当你做了向下兼容的问题修正时,就需要升级这个版本号。 每次在使用 npm install 时都会下载 package.json 中的依赖。而在在依赖中有...

众所周知,MySQL 的 InnoDB 存储引擎使用了 B+ 树作为索引实现,那么为什么不使用其他的数据结构呢?数组、链表或者哈希表。实现存储引擎究竟需要什么条件呢? 我们现在先以存储最简单的数据为例,这里的数据类似于 json 对象。有 key 和 value。 ```json { "0": "value1", "1": "value2" } ``` 最简单的存储引擎必须实现以下三个方法: - read: (key: number) => value 查找 key 并返回...

[Million.js](https://million.dev/) 是一个非常快速和轻量级的 ( ( )} ); } ``` ## Block Virtual DOM Million.js 引入了 Block Virtual DOM 来进行优化。 Block Virtual DOM 采用不同的方法进行比较,可以分为两部分: - 静态分析(分析虚拟 DOM 以将 DOM 动态部分搜集起来,放入 Edit Map...

在项目开发的过程中,为了减少提高性能,减少请求,开发者往往需要将一些不易改变的数据放入本地缓存中。如把用户使用的模板数据放入 localStorage 或者 IndexedDB。代码往往如下书写。 ```ts // 这里将数据放入内存中 let templatesCache = null; // 用户id,用于多账号系统 const userId: string = '1'; const getTemplates = ({ refresh = false } = { refresh: false...