React 架构的演变 - 更新机制

2020-10-12
阅读 19 分钟
5.5k
前面的文章分析了 Concurrent 模式下异步更新的逻辑,以及 Fiber 架构是如何进行时间分片的,更新过程中的很多内容都省略了,评论区也收到了一些同学对更新过程的疑惑,今天的文章就来讲解下 React Fiber 架构的更新机制。

React 架构的演变 - 从递归到循环

2020-09-30
阅读 10 分钟
4.7k
这篇文章是 React 架构演变的第二篇,上一篇主要介绍了更新机制从同步修改为异步,这一篇重点介绍 Fiber 架构下通过循环遍历更新的过程,之所以要使用循环遍历的方式,是因为递归更新过程一旦开始就不能暂停,只能不断向下,直到递归结束或者出现异常。

React 架构的演变 - 从同步到异步

2020-09-24
阅读 16 分钟
5.1k
写这篇文章的目的,主要是想弄懂 React 最新的 fiber 架构到底是什么东西,但是看了网上的很多文章,要不模棱两可,要不就是一顿复制粘贴,根本看不懂,于是开始认真钻研源码。钻研过程中,发现我想得太简单了,React 源码的复杂程度远超我的想象,于是打算分几个模块了剖析,今天先讲一讲 React 的更新策略从同步变为异...

Webpack5 跨应用代码共享 - Module Federation

2020-09-15
阅读 11 分钟
16.6k
Webpack 5 的消息尽管已经出来了许久,但是正式版一直还未发布。Webpack 5 的 ChangeLog 中,除了常规的性能优化、编译提速之外,有一个比较让人期待的功能就是 Module Federation。Module Federation 可以强行翻译成「模块联邦」,但是听起来很是怪异,我在某个前端群也抛出了这个问题,没想到大家的回复也是五花八门。...

面向未来的前端构建工具-vite

2020-09-08
阅读 17 分钟
6.8k
如果近期你有关注 Vue 的动态,就能发现 Vue 作者最近一直在捣鼓的新工具 vite。vite 1.0 目前已经进入了 rc 版本,马上就要正式发布 1.0 的版本了。几个月前,尤雨溪就已经在微博介绍过了 vite ,是一个基于浏览器原生 ESM 的开发服务器。

手把手教你实现 Promise

2020-09-02
阅读 15 分钟
9.6k
很多 JavaScript 的初学者都曾感受过被回调地狱支配的恐惧,直至掌握了 Promise 语法才算解脱。虽然很多语言都早已内置了 Promise ,但是 JavaScript 中真正将其发扬光大的还是 jQuery 1.5 对 $.ajax 的重构,支持了 Promise,而且用法也和 jQuery 推崇的链式调用不谋而合。后来 ES6 出世,大家才开始进入全民 Promise ...

你不知道的 TypeScript 高级类型

2020-08-28
阅读 8 分钟
21.4k
对于有 JavaScript 基础的同学来说,入门 TypeScript 其实很容易,只需要简单掌握其基础的类型系统就可以逐步将 JS 应用过渡到 TS 应用。

从零开始实现VS Code基金插件

2020-08-25
阅读 15 分钟
4.9k
随着7月一波牛市行情,越来越多的人投身A股行列,但是股市的风险巨大,有人一夜暴富,也有人血本无归,所以对于普通人来说基金定投是个不错的选择,本人也是基金定投的一枚小韭菜。

Vue模板编译原理

2020-08-21
阅读 16 分钟
4.2k
写过 Vue 的同学肯定体验过, .vue 这种单文件组件有多么方便。但是我们也知道,Vue 底层是通过虚拟 DOM 来进行渲染的,那么 .vue 文件的模板到底是怎么转换成虚拟 DOM 的呢?这一块对我来说一直是个黑盒,之前也没有深入研究过,今天打算一探究竟。

小程序自动化测试

2020-08-10
阅读 7 分钟
4.9k
近期团队打算做一个小程序自动化测试的工具,期望能够做到业务人员操作一遍小程序后,自动还原之前的操作路径,并且捕获操作过程中发生的异常,以此来判断这次发布是否会影响小程序的基础功能。

Node.js与二进制数据流

2020-06-30
阅读 10 分钟
10k
二进制是计算技术中广泛采用的一种数制。二进制数据是用0和1两个数码来表示的数。它的基数为2,进位规则是“逢二进一”,借位规则是“借一当二”,由18世纪德国数理哲学大师莱布尼兹发现。—— 百度百科

Node.js CLI 工具最佳实践

2020-02-23
阅读 8 分钟
5.5k
一个糟糕的 CLI 工具会让用户觉得难用,而构建一个成功的 CLI 需要密切关注很多细节,同时需要站在用户的角度,创造良好的用户体验。要做到这些特别不容易。

前端模块化的今生

2019-12-02
阅读 8 分钟
7.3k
众所周知,早期 JavaScript 原生并不支持模块化,直到 2015 年,TC39 发布 ES6,其中有一个规范就是 ES modules(为了方便表述,后面统一简称 ESM)。但是在 ES6 规范提出前,就已经存在了一些模块化方案,比如 CommonJS(in Node.js)、AMD。ESM 与这些规范的共同点就是都支持导入(import)和导出(export)语法,只是...

前端模块化的前世

2019-10-09
阅读 10 分钟
5.6k
随着前端项目的越来越庞大,组件化的前端框架,前端路由等技术的发展,模块化已经成为现代前端工程师的一项必备技能。无论是什么语言一旦发展到一定地步,其工程化能力和可维护性势必得到相应的发展。

深入理解 ESLint

2019-07-28
阅读 14 分钟
12k
小沈开始细细品味着同事们的代码,终于在他的不懈努力下,发现了老王 2 年前写的一个 bug,跟导师报备之后,小沈开始着手修改。年轻人嘛,容易冲动,不仅修复了老王的 bug,还把这部分代码进行了重构,使用了前两天刚刚从书里学会的策略模式,去掉了一些不必要 if else 逻辑。小沈潇洒的摸了摸自己稀疏的头发,得意的准...

虚拟 DOM 到底是什么?

2019-06-18
阅读 24 分钟
6.5k
虚拟 DOM (Virtual DOM )这个概念相信大家都不陌生,从 React 到 Vue ,虚拟 DOM 为这两个框架都带来了跨平台的能力(React-Native 和 Weex)。因为很多人是在学习 React 的过程中接触到的虚拟 DOM ,所以为先入为主,认为虚拟 DOM 和 JSX 密不可分。其实不然,虚拟 DOM 和 JSX 固然契合,但 JSX 只是虚拟 DOM 的充分...

基于虚拟DOM(Snabbdom)的迷你React

2019-05-01
阅读 13 分钟
5k
React 是 JavaScript 社区的新成员,尽管 JSX (在 JavaScript 中使用 HTML 语法)存在一定的争议,但是对于虚拟 DOM 人们有不一样的看法。

Vue.js 的注意事项与技巧

2019-03-31
阅读 6 分钟
10.8k
Vue.js 是一个很棒的框架。然而,当你开始构建一个大型 JavaScript 项目的时候,你将对 Vue.js 感到一些困惑。这些困惑并不是来自框架本身,相反 Vue.js 团队会经常调整一些重要设计策略。

在 React Hooks 中如何请求数据?

2019-03-26
阅读 18 分钟
19.6k
通过这个教程,我想告诉你在 React 中如何使用 state 和 effect 这两种 hooks 去请求数据。我们将使用众所周知的 Hacker News API 来获取一些热门文章。你将定义属于你自己的数据请求的 Hooks ,并且可以在你所有的应用中复用,也可以发布到 npm 。

深度神经网络原理与实践

2019-03-18
阅读 12 分钟
11.7k
我们知道深度学习是机器学习的一个分支,是一种以人工神经网络为架构,对数据进行表征学习的算法。而深度神经网络又是深度学习的一个分支,它在 wikipedia 上的解释如下:

Node.js的进程管理

2019-01-08
阅读 15 分钟
9.5k
众所周知Node基于V8,而在V8中JavaScript是单线程运行的,这里的单线程不是指Node启动的时候就只有一个线程,而是说运行JavaScript代码是在单线程上,Node还有其他线程,比如进行异步IO操作的IO线程。这种单线程模型带来的好处就是系统调度过程中不会频繁进行上下文切换,提升了单核CPU的利用率。

ElementUI的构建流程

2018-09-17
阅读 15 分钟
33.5k
最近一直在着手做一个与业务强相关的组件库,一直在思考要从哪里下手,怎么来设计这个组件库,因为业务上一直在使用ElementUI(以下简称Element),于是想参考了一下Element组件库的设计,看看Element构建方式,并且总结成了这篇文章。

Seajs源码解读

2018-08-14
阅读 12 分钟
2k
近几年前端工程化越来越完善,打包工具也已经是前端标配了,像seajs这种老古董早已停止维护,而且使用的人估计也几个了。但这并不能阻止好奇的我,为了了解当年的前端前辈们是如何在浏览器进行代码模块化的,我鼓起勇气翻开了Seajs的源码。下面就和我一起细细品味Seajs源码吧。

使用ESLint+Prettier来统一前端代码风格

2018-06-18
阅读 5 分钟
93.1k
想起自己刚入行的时候,从svn上把代码checkout下来,看到同事写的代码,大括号居然换行了。心中暗骂,这个人是不是个**,大括号为什么要换行?年轻气盛的我,居然满腔怒火,将空行一一删掉。但是关于代码风格,我们很难区分谁对谁错,不同的人有不同偏好,唯有强制要求才能规避争论。

初探webpack4

2018-06-09
阅读 13 分钟
11.5k
2018/2/25,webpack4正式发布,距离现在已经过去三个多月了,也逐渐趋于稳定,而且现在的最新版本都到了4.12.0(版本迭代快得真是让人害怕)。

【翻译】深入理解ES6的模块

2017-11-13
阅读 6 分钟
3.2k
回想2007年,那时候我刚加入Mozilla's JavaScript团队,那时候的一个典型的JavaScript程序只需要一行代码,听起来像个笑话。

babel到底该如何配置?

2017-10-22
阅读 12 分钟
15.1k
Babel is a JavaScript compiler. Use next generation JavaScript, today.

JavaScript中this关键字

2017-10-13
阅读 6 分钟
2.4k
this一直是js中一个老生常谈的东西,但是我们究竟该如何来理解它呢? 在《JavaScript高级程序设计》中,对this的解释是: this对象是在运行时基于函数的执行环境绑定的。 我们来逐字解读这句话: this是一个对象 this的产生与函数有关 this与执行环境绑定 说通俗一点就是,“谁调用的这个函数,this就是谁”。 一、函数直...

jQuery源码分析3-jQuery对象的扩展--extend

2017-01-19
阅读 4 分钟
1.7k
写过jquery插件的人都知道可以通过jquery提供的extend可以对jquery对象进行扩展,而且该方法不仅可以对jquery对象扩展,还能给一个对象添加新的属性和方法,这个在后面会介绍。

jQuery源码分析2-JQ对象添加一些方法和属性

2016-12-29
阅读 4 分钟
2.2k
上面是对jQuery初始化的一些方法和属性的介绍,前面初始化jQuery对象时,我们可以看到jQuery对象其实是一个实例化的jQuery.fn.init,所以这里主要看下init是如何实现,其余的方法在具体用到的时候再看。