- 博客(19)
- 收藏
- 关注
原创 react18 并发更新
本文不介绍并发更新原理,只介绍用法和用处。react并发更新指的是让组件的render流程从同步的变成异步可中断的,即使是单次render时间过长,也不会一直占着主线程阻塞渲染。
2023-08-31 12:40:40
316
1
原创 TS 类型来源和模块语法
declare关键字用于声明在其他地方定义的变量、类、函数、命名空间或模块,但不提供具体的实现。通常在编写类型声明文件(.d.ts文件)时使用,.ts文件内也可以编写。
2023-08-31 12:36:39
345
1
原创 TS部分特性和内置类型(持续更新)
这里的 A 显然不是 B 的子集,但条件判断依然成立(依然可以分配),可以理解为如果 A 是在 B 上扩展了一些属性,比如。是一个可以被分解成几个部分的类型,比如数组类型、元组类型、函数类型、字符串字面量类型等。T 表示源对象类型,类型参数 K 提供了待选取的属性名类型,它必须为类型 T 中存在的属性。需要强调的是,**A 可以分配给 B,不等于 A 是 B 的子集。从已有对象类型中选取给定的属性及其类型,然后构建一个新的对象类型。构建一个新的对象类型,键的类型是 K (in K),值的类型是 T。
2023-02-21 21:56:06
508
翻译 node启动或编译项目内存溢出
问题记录,答案来自https://stackoverflow.com/questions/53230823/fatal-error-ineffective-mark-compacts-near-heap-limit-allocation-failed-javas由于node基于V8引擎构建,所以node在运行时会受到内存限制,这本质上是V8的限制。对于非 Angular 一般答案:每次遇到此错误时,可能是由于内存泄漏或 Node.js 10 管理内存的方式之间存在差异。...
2022-06-21 16:23:16
2033
原创 微前端架构和主流框架的使用
微前端的好处是不言而喻的,有效的拆分应用,实现敏捷开发和部署。相比较于微服务的概念,微服务的重点大概有两点:微前端也是一样,我们可以把数据库的概念换成dom,加上前端应用的特点,可以得出微前端的重点:该架构落地的方式有iframe、npm包、WebComponent以及现有成熟框架等。现有框架有single-spa、qiankun、MicroApp,qiankun是基于single-spa开发的,将这两者合并讲解。这两个框架的基本思路有较大区别:github上有个mini版微前端教学项目,实现方式虽不完全等
2022-06-16 15:47:43
1056
原创 BFC(margin折叠和高度塌陷)
FC全称Formatting Context格式化上下文,元素在标准流里都是属于一个FC的。块级元素的布局属于Block Formatting Context(BFC):block level box都是在BFC中布局的。行内级元素的布局属于Inline Formatting Context(IFC):inline level box都是在IFC中布局的。BFCMDN是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。有如下特点:在BFC中,box会在垂直方向上一个挨着一个的布
2022-05-13 15:09:29
160
原创 mini Vue的实现 Vue工作原理简析
Mini Vue,顾名思义是一个丐版Vue,本篇将根据Vue的原理去简单的写一下其中的几个核心api思路,就像是伪代码一样,这里只写核心思路不处理任何边缘情况。代码是跟着coderwhy老师写的。原理在实现之前,先来说一下Vue的原理。事实上Vue包含三大核心:Compiler模块:编译模版系统;Runtime模块:或称之Renderer模块,渲染模块;Reactive模块:响应式系统。编译系统和渲染系统合作:编译系统会将template编译为render函数和creat
2022-05-13 15:01:29
873
原创 react-router6源码阅读
本篇记录react-router6的核心内容:从Router到Routes到Route再到渲染为React组件的过程。具体的记录都体现在代码的注释上,每一块代码前的记录为总结。在此之前有必要先阅读history库的源码。BrowserRouter创建browserHistory对象,给Router组件提供来自该对象的值。然后在history.listen中更新所提供的值,触发路由组件的更新。/** * 用于Web浏览器的<Router>,提供最干净的URL。 */export f
2022-05-05 16:25:34
1612
原创 防抖节流 JavaScript版
throttle节流:基于时间的频率来进行抽样更改。一个函数执行一次后,只有大于设定的执行周期后才会执行第二次。debounce防抖:一段时间的不活动之后发布更改。一个需要频繁触发的函数,在规定时间内,只让最后一次生效,前面的不生效。requestAnimationFrame 节流:基于requestAnimationFrame来进行抽样更改。该页面查看节流防抖区别节流throttle节流利用闭包和时间戳或定时器Note:以下第一段代码考虑了this和上下文对象,再往下的代码均不考虑,只关.
2022-04-29 23:08:41
813
原创 React Router缓存路由
本篇算是读书笔记,书是《深入理解React Router:从原理到实践》以下代码实现基于react-router5在React Router中,一般情况下原生Route所负责渲染的组件在命中路由时进行挂载,而在导航时离开,路由未命中时组件将被销毁,分别对应了组件的componentDidMount与componentWillUnmount生命周期。如果想在导航后页面得到缓存呢?在Vue或Angular中,有对应的keep-alive与路由复用策略可以实现页面缓存,React Router没有提供。一般
2022-04-25 18:06:00
6065
6
原创 React Hooks学习笔记
分两部分,第一部分官方hook,第二部分为各种库和自己写的自定义hooks,这个文章会持续更新。官方Hook官方Hook这部分不记录各Hook的基本使用方式,重点是记录一些特性。大部分内容来源于React官网。useEffect(useLayoutEffect)React的函数组件应该是是纯函数,在函数组件主体内(这里指在 React 渲染阶段)改变 DOM、添加订阅、设置定时器、记录日志以及执行其他包含副作用的操作都是不被建议的,因为这可能会产生莫名其妙的 bug 并破坏 UI 的一致性。这些副作
2022-04-25 02:55:17
896
1
原创 Mac下MongoDB安装
官网下载mongodb安装包(压缩包),解压到某个目录,例如/usr/local下配置环境变量:终端根目录输入命令open .bash_profile打开的文件里添加export PATH=${PATH}:/usr/local/mongodb/bin保存关闭,终端输入命令使配置生效source .bash_profile输入mongodb -version查看是否安装成功在某路径下创建data和log文件夹,我在/usr/local/mongodb下创..
2022-04-25 02:53:03
1239
原创 文件下载_上传_分片上传 JavaScript Node.js
文件下载a.download文件下载一般使用a标签,当给a标签download属性时,在点击时就会下载访问href请求的文件,但是只有在href指向的地址是同源时才会下载,不同源时只会常规跳转。download的值就是下载的文件名。URL.createObjectURL会创建一个 DOMString,其中包含一个表示参数中给出的对象的URL。这个 URL 的生命周期和创建它的窗口中的 document 绑定。这个新的URL 对象表示指定的 File 对象或 Blob 对象。以下代码会下载一个
2022-04-25 02:51:33
305
原创 【React】深入理解setState
setState为什么是异步的?一般使用setState()时,React并不会保证state会立刻更新,这些操作将延迟批量调用。这两个词很重要,批量就是延迟的原因。事实上,我们应该将setState() 视为更新组件的请求而不是立即更新的命令,这一点与Vue不同,不论是Vue2的Object.definedProperty还是Vue3的Proxy,都拦截了对象的setter,所以在数据被改变时会被立刻拦截并命令组件开始更新。为什么React要设计成这样?为了性能(并不是说Vue性能不好,只是框架思
2022-04-25 02:48:26
788
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人