react fiber 中的dom diff

2023-02-08
阅读 8 分钟
1.1k
两种节点类型我们可以从同级的节点数量将Diff分为两类:当newChild类型为object、number、string,代表同级只有一个节点当newChild类型为Array,同级有多个节点在接下来两节我们会分别讨论这两类节点的Diff,注意这里的单节点是指虚拟dom节点是个单或者多节点,可以简单看做是不是返回的数组单节点单节点比较还是比较简...

Promise 方法的实现

2023-02-08
阅读 3 分钟
598
Promise finally这是一个promise实例原型链上的方法 {代码...} Promise.All {代码...} 注意点入参必须是可迭代的参数转化为数组,且所有的项必须转化为Promise返回值永远是一个Promise入参如果长度是0 那直接返回Promise.resolve([]) 不然Promise.all([])返回的promise永远处于pending状态Promise.race {代码...} 注意 P...

emscripten学习

2023-02-07
阅读 8 分钟
1.1k
emscripten是一个c/cpp的编译器,可以将c/cpp代码用 LLVM,编译为 WebAssembly。其中emcc 是他的cli,类似于常用的makefile的作用。

dom-to-image的应用和踩坑

2020-05-22
阅读 4 分钟
12.2k
近期在项目中遇到了一个需求,需求大致就是把文字,贴纸和背景图合成一张图片产物。这个需求最后就用到了dom-to-image。过程中也踩了一些坑,本文就分析一下这个库的原理,及这个库的一些坑。

vue路由懒加载原理解析--第一部分

2019-12-05
阅读 4 分钟
13.3k
Vue Router中提供了解决整体JavaScript文件过大,影响页面加载的方案--路由懒加载。本文是希望从路由懒加载的实现去分析出懒加载整体的实现的原理细节。

网站性能优化--性能指标及采集

2019-11-11
阅读 3 分钟
3.9k
在平时工作中可能会遇到用户反馈:“哥们,你们的网站感觉很卡啊!”。这种来自用户的吐槽对前端同学可以说是直击心灵的冲击。此时就应该好好想想如何让用户不再出现这样的吐槽呢。首先就是指标化的了解自己的网站。

node后端服务保活

2019-11-10
阅读 2 分钟
2.9k
目前的项目中使用了node,作为一个简单的后端服务,随着承担着越来越多的线上业务的服务,就要求了服务端的稳定性,而其中最重要的一点就是服务保活。有进程终止后自动重启的能力。

webpack模块

2019-11-10
阅读 6 分钟
3.6k
这里可以说就和node的module部分非常相似了,包括缓存的处理,构造了一个module对象,模块实际代码的运行,注意module的l属性,这个是用来标记模块是否加载运行完毕了。

node模块化的源码解析

2019-10-24
阅读 4 分钟
1.7k
引言 首先说一下CommonJS 模块和ES6模块二者的区别,这里就直接先直接给出二者的差异。 CommonJS 模块输出的是一个值的拷贝,ES6 模块输出的是值的引用。 CommonJS 模块是运行时加载,ES6 模块是编译时输出接口。 ES6 模块之中,顶层的this指向undefined;CommonJS 模块的顶层this指向当前模块 commonJS模块化的源码解析...

一年的自我反思

2019-05-23
阅读 1 分钟
1.9k
在离开Qunar YMFE后到现在也已经一年,回顾这一年无遗自己在技术上的学习和追求降至了冰点。放弃了之前每天早上一篇技术博客或者一个知识点阅读的习惯,放弃了两周一篇原创文章的习惯,放弃了源码学习计划。这一年的技术成长是杂乱的,不成体系的,没有沉淀的。

JavaScript对象遍历

2019-05-23
阅读 3 分钟
984
引言 遍历对象是平常工作中很常见的一个操作,几乎是日常操作,但是遍历对象真的是一件很容易的事情么,显然不是的。 常用的方式 for...in for (variable in object) {...} 这个是一个很常见的用法,相信每个人顺手都可以写出来。但是这里需要主要的是一段这个遍历的定义 for...in语句以任意顺序遍历一个对象自有的、继...

EventEmitter的实现

2018-04-06
阅读 3 分钟
6.9k
事件在js中非常的常见,不管是浏览器还是node,这种事件发布/订阅模式的应用都是很常见的。至于发布/订阅模式和观察者模式是否是同一种设计模式说法都有,这里不做具体的讨论。在之前的项目中也曾自己实现过一个事件模块,核心还是一个EventEmitter。下文就要结合node中的event模块分析一下,一个EventEmitter应该如何实...

node端统一错误处理

2018-04-01
阅读 2 分钟
4.1k
当然这么写其实没有任何问题,甚至是一个很好的习惯,他保证了错误可以被正常的捕获,另外可以在catch里随便做处理,比如console,错误日志。一切都看起来那么完美

vue的diff算法学习

2018-03-29
阅读 8 分钟
4.3k
源码地址 虚拟dom diff算法首先要明确一个概念就是diff的对象是虚拟dom,更新真实dom则是diff算法的结果 Vnode基类 {代码...} 这个部分的代码 主要是为了更好地知道在diff算法中具体diff的属性的含义,当然也可以更好地了解vnode实例 整体过程 核心函数是patch函数 isUndef判断(是不是undefined或者null) // empty mou...

require源码阅读

2018-03-27
阅读 5 分钟
2.4k
require gitlab mudule对象化 require最终会把每个模块都转化为对象 {代码...} require方法 用assert断言输入的合法性并调用_load方法还有一个调用_load的是 {代码...} 这个我不是特别确定,但基本确定是给node xxx.js 这条命令调用的 load方法 这里有很多是关于处理main的,核心的一段是 {代码...} 这个佐证了上面runMa...

理解JSX

2018-03-20
阅读 4 分钟
4.3k
首先jsx绝不是一个新的语言,我觉得他仅仅是js的超集,或者只是一种语法糖。原本FB是有自己的jsx-transform来负责jsx的解析,不过现在已经停止更新,jsx语法完全依赖babel进行解析。

node异步非阻塞的杂谈

2018-03-17
阅读 4 分钟
3k
node作为服务器的优势就在于适合处理高并发的请求,对于web网站后台这种I/O密集型的后台尤其有优势,其核心就在于node是一个异步非阻塞模型。关于异步,同步,阻塞,非阻塞这些概念,本文不做讨论。

egg.js插件分析

2018-03-10
阅读 4 分钟
6k
之前对egg.js的整体设计有过自己的理解,在egg.js中方便的插件机制也是这个框架的一大亮点,本文主要就是从egg.js的插件开始,对node后台中的插件机制做一些分析和总结。

从egg.js重新认识node后端开发

2018-02-04
阅读 3 分钟
8.5k
node的后端的开发接触至今也不过4个月,在最近的开发中选用了之前没有接触过的egg.js。虽然还没有深入开发,但是在与之前的项目的node端比较后还是有了比较多的感想。

前端开发工程师在人工智能浪潮里的改变

2018-01-31
阅读 1 分钟
5.4k
作为一名在本科期间做过前端,研究生期间研究了深度学习,目前是一名前端开发工程师的我,应该说一下我作为前端开发工程师在人工智能浪潮里该做些什么。