babel源码分析之一:AST生成

2019-04-28
阅读 7 分钟
7.7k
babel是javaScript编译器,主要用于将ECMAScript2015+版本的代码转化为具有兼容性的较低版本,从而让代码适用于各种环境。它的早期代码从acorn项目中fork出来,后续提供了acorn不具备的一整套的代码解析,转换,生成的功能。

webpack源码分析之六:hot module replacement

2018-12-31
阅读 7 分钟
3.7k
在web开发中,webpack的hot module replacement(HMR)功能是可以向运行状态的应用程序定向的注入并更新已经改变的modules。它的出现可以避免像LiveReload那样,任意文件的改变而刷新整个页面。

webpack源码分析之五:sourcemap

2018-09-24
阅读 10 分钟
6.1k
经过webpack打包压缩之后的javascript, css文件和原有构建之前的文件相差比较大,对于开发者而言比较难在客户端上调试定位问题。为了解决这类问题,webpack引入了source maps。

webpack源码分析之三:loader

2018-06-07
阅读 3 分钟
3.1k
在webpack特性里面,它可以支持将非javaScript文件打包,但前面写到webpack的模块化打包只能应用于含有特定规范的JavaScript文件。本次介绍的loader则是用来解决这类问题的。本文章loader的实现基于code-splitting

webpack源码分析之二:code-splitting

2018-05-26
阅读 3 分钟
3.3k
code-splitting是webpack最引人瞩目的特性之一,此特性将代码分离到不同的bundle文件中。详细介绍官网code-split,这次实现则在笔者上次文件打包之上做开发。

webpack源码分析之一:文件打包

2018-05-03
阅读 4 分钟
3.7k
自动化打包工具webpack,相信很多人和我一样尝试着研究下它,但是繁杂的功能以及高度抽象的代码实在是很难理解,所以笔者只能通过github的webpack的第一次提交进行分析,实现,并将实现的一些心得分享一下。

web前端mvc库实现

2017-04-20
阅读 5 分钟
4.2k
随着前端应用日趋复杂,如今如angular,vue的mvvm框架,基于virtual dom的react等前端库基本成为了各个公司的首选。而以当初最流行的头号大哥backbone为代表的mvc库基本退出了历史舞台。

简易mvvm库的设计实现

2016-12-18
阅读 6 分钟
4.4k
mvvm模式即model-view-viewmodel模式简称,单项/双向数据绑定的实现,让前端开发者们从繁杂的dom事件中解脱出来,很方便的处理数据和ui之间的联动。本文将从vue的双向数据绑定入手,剖析mvvm库设计的核心代码与思路。

js对象监听实现

2016-09-14
阅读 5 分钟
7.7k
随着前端交互复杂度的提升,各类框架如angular,react,vue等也层出不穷,这些框架一个比较重要的技术点就是数据绑定。数据的监听有较多的实现方案,本文将粗略的描述一番,并对其中一个兼容性较好的深入分析。

react-router 2.7.0源码深度分析

2016-09-02
阅读 3 分钟
5.5k
react-router为react提供路由管理,为基于jsx格式的app系统提供了方便的切换页面功能。它在前端提供给了2种方式,通过hashchange或者浏览器原生的history api进行地址更新,上一篇介绍了hash的方式,本文则以history api的形式切入分析。

简易的前端路由实现

2016-08-28
阅读 3 分钟
18.2k
在前端单页面应用里面,路由是比较重要的部分,现有的路由系统从简易的director.js到backbone,react等内置路由,功能一步步增强。那么这些系统原理是什么呢,本文将分析并实现一份简易的路由,以阐述其工作原理。

如何更有效的在中大型项目中管理ajax请求

2016-08-10
阅读 6 分钟
4k
如要改整个项目的url前缀(后端把接口路径统一加个assets或者http换成https),或者要改请求的类型get换post,亦或者统一加个CSRFToken,我们该当如何,手动一个个把自己一头扎进业务代码里面去修改吗?

es6 promise源码实现

2016-07-28
阅读 5 分钟
20.8k
将resolve/reject函数和onfulfiled/onrejected放入同一个对象(promise对象)里面,resolve/reject的时候将value设置this.value=xxx。onfulfiled/onrejected执行的时候呢,onfulfiled(this.value)即可