自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(41)
  • 收藏
  • 关注

原创 Js实现二叉树

Js实现二叉树实现二叉树需要先知道二叉树的特征特征:1:若它的左子树不为空,那么左子树上所有结点的值都小于它的根结点2:如它的右子树不为空,那么右子树上的所有结点都大于跟结点的值上代码实现一个结点class Node { constructor(value) { this.value = value this.right = null this.left = null }}创建一个二叉树class Bina

2022-03-21 17:44:46 2152

原创 一文搞懂迪米特原则

迪米特原则,又称最少知识原则(Least Knowledge Principle, LKP),是面向对象设计和编程中的一项重要原则,其目标是降低类之间的耦合度,提高代码的可读性和可维护性。总之,迪米特原则是一种指导设计思路的原则,帮助开发者组织代码结构,促进良好的封装性,并努力减少因类间过度耦合而导致的问题。一个对象应当对其它对象有尽可能少的了解,即一个对象不应该直接访问非直接相关对象的方法或属性,而应通过其“朋友”或者代理进行间接交互。因此,通过这样的设计,各层之间的耦合度得以降低,实现了迪米特原则。

2024-04-20 12:00:56 779

原创 一文搞懂开放封闭原则

软件实体(如类、模块、函数等)应该对扩展开放,对修改关闭。这意味着当需求发生变化时,我们应该能够在不修改原有代码的基础上,通过新增代码的方式来满足新的需求。

2024-04-07 17:50:43 685

原创 一文搞懂里氏替换原则

如果一个类型T是一个父类型,那么对于任何类型的T的对象o1,都有一个类型SS是T的子类型)的对象o2,并且在所有T可以出现的地方,o2都可以替换o1并且程序的行为保持不变(正确性不受影响)。如果一个类型T是一个父类型,那么对于任何类型的T的对象o1,都有一个类型SS是T的子类型)的对象o2,并且在所有T可以出现的地方,o2都可以替换o1并且程序的行为保持不变(正确性不受影响)。

2024-04-07 13:38:41 1052

原创 Vite源码学习--调试源码

当我们开始构建越来越大型的应用时,需要处理的 JavaScript 代码量也呈指数级增长。包含数千个模块的大型项目相当普遍。基于 JavaScript 开发的工具就会开始遇到性能瓶颈:通常需要很长时间(甚至是几分钟!)才能启动开发服务器,即使使用模块热替换(HMR),文件修改后的效果也需要几秒钟才能在浏览器中反映出来。如此循环往复,迟钝的反馈会极大地影响开发者的开发效率和幸福感。

2024-04-07 11:33:59 925

原创 什么是依赖倒置原则

依赖倒置原则(Dependency Inversion Principle,DIP)是指高层模块不应该依赖于低层模块,它们都应该依赖于抽象。换句话说,具体类之间的依赖关系应该尽可能减少,而抽象类或接口之间的依赖关系应该尽可能增加。这个原则的核心思想是将依赖关系从具体的实现类转移到抽象类或接口上。通过这种方式,高层模块和低层模块都可以依赖于抽象,而不是依赖于具体的实现类。降低耦合性:具体类之间的依赖关系减少,可以降低代码之间的耦合性,使得代码更加灵活和可维护。

2023-11-27 19:56:05 870

原创 前端架构师需要解决那些问题

假设你是一个大型后台管理系统的前端架构师,你需要解决那些问题?

2023-11-06 21:55:12 466

原创 umi3配置qiankun文档

组件模式消费微应用,那么数据传递的方式就跟普通的 react 组件通信是一样的,直接通过 props 传递即可:在子应用的挂载组件页面。默认情况下沙箱可以确保单实例场景子应用之间的样式隔离,但是无法确保主应用跟子应用、或者多实例场景的子应用样式隔离。插件会自动为你创建好 qiankun 子应用需要的生命周期钩子,但是如果你想在生命周期期间加一些自定义逻辑,可以在子应用的。1、微应用中会自动生成一个全局 model,可以在任意组件中获取主应用透传的 props 的值。消费微应用,那么你需要在。

2023-11-05 09:37:54 765

原创 100行代码实现的React的useState

useState是react里面最重要的hook之一,本文我们主要是基于react原理,实现一个在改变state后能将最新的状态React渲染到页面这样一个功能。

2023-10-29 13:44:03 499

原创 npm install的详细过程

而当 foo 依赖 lodash@^2.0.0,bar 依赖 lodash@^1.1.0,则依据 semver 的规则,二者不存在兼容版本。会将一个版本放在 node_modules 中,另一个仍保留在依赖树里。比如 node-modules 下 foo 模块依赖 lodash@^1.0.0,bar 模块依赖 lodash@^1.1.0,则。获取到的是一棵完整的依赖树,其中可能包含大量重复模块。每个 semver 都对应一段版本允许范围,如果两个模块的版本允许范围存在交集,那么就可以得到一个。

2023-10-10 14:10:50 1092

原创 npm 常用命令

npm 常用命令npm install:根据项目中的package.json文件自动下载项目所需的全部依赖。npm install 包名 --save:安装的包需要发布到生产环境的,会出现在package.json文件中的dependencies属性中。npm list:查看当前目录下已安装的node包。npm list -g:查看全局已经安装过的node包。npm uninstall 包名:卸载指定包。npm config list:查看配置信息。npm init:初始化项目。npm p

2023-10-10 14:07:27 429

原创 git入门

git push --set-upstream origin newBranch(分支名)(newBranch需要自定义,就是当前分支在远程分支对应的名称)git branch --set-upstream-to origin/新分支名称。git branch --set-upstream-to origin/新分支名称。git commit -m “备注信息” --no-verify。git push --delete origin 旧分支名称。git branch -m 旧分支名称 新分支名称。

2023-08-21 14:36:11 89

原创 搞懂mobx只需要这一篇文章

(1) Mobx是一个功能强大,上手非常容易的状态管理工具。(2) Mobx背后的哲学很简单: 任何源自应用状态的东西都应该自动地获得。(3) Mobx利用getter和setter来收集组件的数据依赖关系,从而在数据发生变化的时 候精确知道哪些组件需要重绘,在界面的规模变大的时候,往往会有很多细粒度更新。(4)Mobx写法上更偏向于OOP 对一份数据直接进行修改操作,不需要始终返回一个新的数据 并非单一store,可以多store。

2023-08-20 22:04:09 276

原创 ts中的key!(非空断言)写法是什么意思

在 TypeScript 中,编译器有时会检查代码中的类型不匹配,例如将一个 null 值赋值给一个非空类型变量,此时编译器会发出错误提示。使用非空断言可以告诉编译器该变量的值不会是 null,从而避免编译错误。这种写法通常表示一个非空断言(non-null assertion),它用来告诉编译器该变量的值不会为 null。是否为 null,而会将其视为非空字符串。表示断言该值不会是 null,因此编译器不会检查。在 TypeScript 中,,因此编译器不会检查它的类型。,则整个表达式将返回。

2023-07-27 21:59:51 666

原创 linux的基本命令

这些实例可以帮助您更好地理解Linux基本命令的使用。请注意,实际操作中可能需要根据不同的系统和版本进行适当的调整。

2023-06-29 16:08:11 465

原创 浏览器的同源策略和跨域

如果两个 URL 的协议、域名和端口 (en-US)(如果有指定的话)都相同的话,则这两个 URL 是同源的。

2023-05-15 21:03:03 577

原创 从0开始搭建自己的脚手架

说白了,脚手架和一些脚本差不多,自己把命令写好了,到时候输入某个命令,就挨着执行。但是不是完全自动的,需要用户手动选择部分不同的命令。

2023-04-17 21:57:44 293

原创 前端单元测试入门

单元测试(unit testing)是指对软件中的最小可测试单元进行检查和验证1。它是一种软件测试方法,用于确保每个独立的软件模块(某个函数或者某个组件)都按照预期运行。

2023-04-03 20:33:56 904

原创 精通闭包原理和作用域原理

什么是闭包呢?我们先看一段代码仔细研究一下内部函数 innerFunction 中的代码,看看我们能否预测会发生什么。● 第一个断言肯定会通过,因为外部变量 outerValue 在全局作用域内,并且在任何地方都可见。但是第二个断言呢?● 外部函数执行后,我们通过将内部函数的引用赋值给全局变量 later,再通过 later执行该函数调用内部函数。● 当内部函数执行时,外部函数的作用域已经不存在了,并且在通过 later 调用内部函数时,外部函数的作用域已不可见了。

2023-03-18 11:26:55 443

原创 React源码分析-手动实现React库

这篇文章主要实现一个简单的React。主要争对下面8个点来实现。需要先使用npx create-react-app my-app来创建一个运行的环境Step I: 实现createElement函数Step II: 实现render函数Step III: 并发模式Step IV: Fibers (虚拟dom)Step V: Render and Commit 阶段(渲染和提交阶段)Step VI: Reconciliation 阶段(dom diff)Step VIIStep VIII。

2023-02-14 10:54:39 522

原创 antd Table 源码分析

antd的部分组件是基于封装而来的,今天我们要讲的antd table也是基于/**table**封装而来的,这次antd的源码解析,大部分也是基于rc-table,这次源码分析主要是讲一些特殊的知识点。如果想了解更多,可以评论一下,我看到评论后会添加。

2022-11-08 11:33:59 2127

原创 react antd实现一个树级的可编辑表格,并且可以合并表头

column?}}这样使用自定单元格确实一次就解决了每次render的问题。

2022-11-03 10:05:31 1622

原创 dependencies devDependencies的区别

我们引入的npm包dependencies里面引入的依赖会安装到node_modules里面该包目录下的node_modules里面,devDependencies里面引入的依赖不会安装到node_modules里面该包目录下的node_modules里面。我自己的项目也引入了loadsh,antd,那么看看我项目的node_modules里面是有lodash文件的,然后也有antd,并且antd目录的node_modules里面也是存在loadsh。这是一个访问量很高的博客给出的答案。

2022-10-21 12:41:34 390

原创 jest单元测试入门到进阶

使用faceBook公司开发的jest库写点自己ui库的测试用例。

2022-10-09 10:58:19 824

原创 less入门到进阶

less学习

2022-09-30 10:45:53 115

原创 CSS 组合选择符

css组合选择器

2022-09-29 11:27:56 470

原创 Ts中的泛型函数总结keyof

Ts中的泛型函数总结

2022-09-23 10:36:41 3755

原创 谈谈对js中import 和export的理解

export和import相关的用法

2022-09-22 17:23:15 2790

原创 umi3用法改动

umi3的用法

2022-07-28 11:19:32 1204

原创 如何发布自己的NPM包(模块)

创建发布npm

2022-07-26 17:55:16 699

原创 umi2升级到umi3

umi2升级umi3第一章

2022-07-18 16:57:16 2529 4

原创 前端策略模式

前端策略模式文章目录前端策略模式一、策略模式有什么用二、策略模式的定义二、策略模式有什么用1.引入库2.读入数据总结一、策略模式有什么用策略模式主要是为了实现开闭原则,减少面条代码里面大量的写if…else二、策略模式的定义定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。二、策略模式有什么用1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport

2022-04-25 21:19:18 1495 1

原创 如何写出优雅的代码

如何写出优雅的代码文章目录如何写出优雅的代码前言一、写出优雅代码的原则1.引入库2.读入数据总结前言优雅的代码有几个特征:1、可读性:代码是否容易看得懂2、可维护性:改bug是否容易3、可拓展性:是否容易添加新功能4、灵活性:添加新功能是否容易,老方法和接口是否容易复用5、简洁性:代码是否简单清晰6、可复用性:相同的代码不要写两遍7、可测试性:是否方便写单元测试和集成测试一、写出优雅代码的原则1.引入库代码如下(示例):import numpy as npimport p

2022-04-21 17:50:13 2018

原创 红黑树实现原理

Js实现红黑树前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考一、红黑树是什么?红黑树是一种平衡二叉树1.红黑树的特征1、包含二叉搜索树的基本规则2、结点是黑色或者红色3、根节点是黑色4、每个叶子结点都是黑色的空结点5、每个红色结点的两个子节点都是黑色的(就是说不存在连续挨着的两个红色结点)6、从任意结点到它的叶子结点

2022-04-01 18:03:10 1118

原创 MySQL基础命令

MySQL基础命令SQL的基本语法规范1、sql不区分大小写,但是习惯上关键字、系统保留字、函数名称大写,表名和列名小写;2、sql使用空格或者回车来分隔每个单词都一样,习惯上每个子句换行,WHERE子句中的每个条件占一行,子查询单独占一行;3、复杂的语句最好加上注释进行说明;4、sql语句中使用分号作为分隔符,系统读取到分号才会执行语句。数据定义语言(DDL)​ DDL是用于描述数据库中要存储的现实世界实体的语言,主要是用在定义或改变结构,数据类型,表之间的链接和约束等初始化工作上,大多在建

2022-03-30 14:48:35 3545

原创 Js实现哈希表

Js实现哈希表文章目录Js实现哈希表前言一、hashTable?二、Js代码实现hashTable1.核心代码2.测试代码总结前言提示:这里可以添加本文要记录的大概内容:哈希表的原理:https://zhuanlan.zhihu.com/p/95156642提示:以下是本篇文章正文内容,下面案例可供参考一、hashTable?“散列表(Hash table,也叫哈希表),是根据键(Key)而直接访问在内存存储位置的数据结构。也就是说,它通过计算一个关于键值的函数,将所需查询的数据映射到表

2022-03-30 14:41:52 2141

原创 Js实现栈

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Js实现栈数据结构一、栈的特征栈是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。二、代码实现1.使用Es6的class和Array来简单实现一下:class Stack{ .

2022-03-25 17:05:19 859

原创 Js实现链表

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档Js实现链表前言链表是一直非常基础的数据结构,想学习数据结构知识,我们必须要了解的提示:以下是本篇文章正文内容,下面案例可供参考一、使用步骤1.链表是什么?链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表主要是便于管理长度或数量不确定的数据,相对于数组,链表处理这种数据时比较节省内存。动态语言通常不大需要链表,因为动态语言的解释器帮你管理内存,但当你对空间效率或插入.

2022-03-24 17:58:25 2228

原创 git 关联远程仓库

本地git绑定到github仓库1、添加本地分支git checkout –b ‘’ 新分支名称‘2, 将本地分支关联到远端git push --set-upstream origin 新分支名称

2021-04-21 17:20:28 739

原创 webpack

WebPack打包过程1、读取配置文件和shell命令,对参数进行合并,得到最终的参数2、根据上一布得到的参数,来初始化compiler,得到配置项中的所有插件,运行run(),开始执行编译3、根据配置文件的entry,找到入口文件4、调用loader,对入口的模块进行编译,依次遍历,找到所有的依赖文件,调用loader进行编译5、得到loader编译后的模块,将入口文件和它相关的依赖模块生成一个个chunk文件,再把每个chunk转换成一个单独的chunk加入到输出列表6、在确定好输出内容后,

2021-04-20 21:42:25 391

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除