发布了文章5 月 29 日
diff发生在render阶段(“递”和“归“)递: 从顶层节点,向下遍历(深度优先),有子节点就遍历子节点,没有再查询兄弟节点归: 如果没有子节点就进行当前节点的“归操作”,然后查询是否有兄弟节点,没有进行当前节点父节点的“归”过程,有兄弟节点进行兄弟节点的“递”。...
发布了文章5 月 23 日
事件循环就是主线程何时去执行异步队列。node将事件循环分成六个队列,它们分别是:timmer (用于存储定时器的回调函数 setlnterval,setTimeout)pending callbacks (操作系统相关的函数回调,比如启动服务器端口监听的回调)idle,prepare (系统使用的)poll (I/O...
发布了文章5 月 22 日
从结果可以看出,后面两种声明方式可以在函数声明之前直接调用,然而第一种方式,变量只会在声明之前被初始化为undifined,不能直接调用。所以结论:1.第一种方式只会触发var的变量提升,在代码解析阶段var被初始化为undifined,执行阶段才会被赋值,所以第一种方式...
发布了文章5 月 22 日
app.use中传入的异步函数及中间件,app.use是注册中间件的过程,use的过程会将中间件函数push进入,koa的中间件队列上面的中间件过程注册完之后,就如下面的样子维护在中间件队列中:
发布了文章2022-03-22
redux作为react生态圈中最常见的状态库,从源码来探究一下redux是如何做状态管理的。redux源码并不复杂,了解源码之前,我们先看看我们会怎么使用redux。
发布了文章2022-03-14
之前的react更新模式同步模式:这就好比单线程模式,处理react任务就只有一个线程,上一个任务没有被处理掉,下一个任务就会等待。假设我们在渲染一个列表,比如一个需要条件搜索出来的列表。如果很长,需要渲染的过程很长,这时候用户同时去做搜索框的操作,那么操...
提出了问题2022-03-01
发布了文章2022-03-01
最近在做把graphql融入项目中。使用graphql的优势:前端把握查询的主动权,可定义你需要查询的字段过滤冗余,另外减少两端的沟通接手bff层前端可作为空间更大,包括做一些鉴权请求合并更加便利(以前初始化多个请求需要一起返回都是使用promise.all,graphql可以更加...
发布了文章2022-02-25
注意视频必须播放才能截取到视频帧作为封面,可以监听播放进度来截取封面。不播放截取出来是黑屏,你可以监听vedio的timeupdate事件在事件处理中去完成截图。另外注意将vedio标签的crossOrigin属性设置为"anonymous",防止跨域无法截取
发布了文章2021-12-28
设计阻塞队列的缘由是因为在做业务时遇见庞大的资源列表加载问题,我们的业务主要是媒体资源的加载。http 1.0的时候大部分浏览器支持最大并行数量是6个,http 2.0的时候有所提升,HTTP/2.0理论上可以在一个TCP连接上发送无数个HTTP请求。如果我们一次加载100张图片,...
发布了文章2021-12-10
这一节我们将组件的打包配置,也就是使gulp同时任务的第三个compileTypescript: {代码...} 这一步gulp的工作就是找到所有需要参与rollup编译的文件打包输出,当然一些测试脚本还有样式脚本需要排除在外: {代码...} globArray是自己找了一个匹配函数,需要匹配到目...
发布了文章2021-12-10
前面我们已经说了我们的样式目录结构,回顾一下:编码目录是这样子:生成目录这样子:为什么编码结构和生成结构要这样子可以看上篇文章react组件库搭建(一)这部分其实是gulp实现的:首先建立gulp执行入口文件夹gulpfile.js,然后建index.js作为gulp入口(build后面...
发布了文章2021-12-10
基于rollup+typescript+gulp+less搭建react前端组件库。输出esm,umd,cjs三种格式,支持服务端渲染,cmd引入以及es6规范。使用rollup编译输出格式(方便好用代码比webpack干净点),gulp做构建,考虑到三种规范又需要支持服务端渲染。cjs与es规范的组件我们需要按照...
发布了文章2020-07-20
react create app脚手架使用的是dotenv控制环境。默认情况下create app有三个命令配置,他们对应三个环境变量: npm run start ---> development npm run test ---> test npm run build ---> production 在脚手架中定义环境变量通过.env文件实现,那么通常我...
发布了文章2019-12-10
Babel是一个多功能的javascript编译器,你能使用babel创建多种有用的工具。比如:typescript,各种跨平台编译。如果你也想要造一个自己的轮子那是时候了解一下babel了。babel是javascript编译器,也叫"转换编译器",意思就是你编写javascript代码,babel更改这些代码...
发布了文章2017-09-01
git add * 将我们提交的文件添加到索引库中(添加到缓冲区),*可以是路径也可以是.符号,git add . 代表将当前目录下的所有文件都添加到索引库中,如果指定路径则代表将制定路径的文件添加到索引库中。