源码
文章平均质量分 76
柒青衿
前端
展开
-
jQuery-源码阅读,init()方法
查看jQuery源码可以发现,jQuery中没有使用new操作符来创建新对象,而是采用调用jQuery原型中init()函数的方式返回一个新对象。1.首先简单回忆下JavaScript中的原型。我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。如果按照字面意思来理解,那么prototy原创 2016-02-26 20:32:43 · 7497 阅读 · 0 评论 -
Webpack-源码四,从源码分析如何写一个loader
从黑盒和白盒两个角度讲讲如何写一个loader以及loader这个东西是如何在webpack中运作起来的。loader相当于一个翻译器,具体的loader会有很大不同,比如less-loader和ejs-loader内部代码肯定差异极大,这里只以最简单的loader举例,入坑以后大家根据自己需求自行探索。原创 2017-05-19 13:41:37 · 6884 阅读 · 6 评论 -
Webpack-源码三,从源码分析如何写一个plugin
这篇博客告诉你如何入手写一个plugin,然后分析源码相关部分告诉你你的plugin是如何工作。知其然且知其所以然。原创 2017-05-07 18:33:19 · 9451 阅读 · 1 评论 -
Webpack-源码二,整体调用流程与Tapable事件流
在上一篇博客中分析了webpack打包以后的bundle文件,了解webpack是如何通过require模拟commonjs标准加载模块的。下面探索webpack整体调用的流程,也就是如何通过shell输入webpack命令就可以实现整个编译、打包过程的。 这篇博客只对整个流程及相关的事件流进行分析,不具体分析每个步骤中的具体实现。也就是,对于plugin和loader的具体分析请移步后面的博客原创 2017-05-03 21:36:48 · 4564 阅读 · 1 评论 -
Webpack-源码一,使用require加载并打包模块
最近有同学致力于写一个脚手架工具,在研究webpack源码,问了我几个问题,然而我完全不能解答。于是开始研究webpack。webpack做的事情主要是实现前端模块化(即:让前端也可以像node端一样适用require方法加载模块)和借助插件实现编译、热加载等功能。webpack源码系列第一部分,就分享最简单的内容——如何使用require方法加载模块并打包。__webpack_require__原创 2017-03-06 18:49:27 · 15443 阅读 · 3 评论 -
React-组件渲染和更新的实现
最近一直写React,慢慢就对里面的一些实现很好奇。最好奇的就是自定义标签的实现和this.setState的实现。这里不分析JSX是如何解析的,所有组件都用ES5方式编写。组件渲染渲染时候,我们会调用render方法。原创 2016-08-16 16:35:47 · 17049 阅读 · 1 评论 -
ES6-深入理解Generator yield & Koa中间件执行顺序
几个月前写过一篇博客,讲Generator,比较基础。最近总在写ES6,想深入讲讲yield的执行顺序。你可能想问,Generator执行顺序很简单啊,就是调用next()就执行下一个yield后面的代码。很多问题,如果你认为很简单,很可能是你理解不深刻,就像我当初也认为Generator很简单。如果你关心koa中间件的执行顺序也可以接着看看。yield与yield*关于这个话题,你只需要知道四点:原创 2016-07-15 22:05:08 · 8491 阅读 · 0 评论 -
Co-实现原理分析
generator函数可以理解成一个异步操作的容器,它装着一些异步操作,但并不会在实例化以后立即执行。而co的思想是在恰当的时候执行这些异步操作。那么就需要一种机制,在一个异步操作执行完毕以后通知下一个异步操作开始执行。额,这句话听起来就有点耳熟了。这不就是回调函数或者promise干的事么。确实,co要求generator里yield的是thunk或者promise就是这个道理。thunk就是一种原创 2016-07-10 20:55:17 · 3601 阅读 · 0 评论 -
jQuery-源码阅读,extend()与工具方法、实例方法
使用jQuery的时候会发现,jQuery中有的函数是这样使用的:$.get();$.post();$.getJSON();有些函数是这样使用的:$('div').css();$('ul').find('li');有些函数是这样使用的:$('li').each(callback);$.each(lis,callback);这里涉及到两个概念:工具原创 2016-02-28 20:24:54 · 1745 阅读 · 0 评论 -
jQuery-源码阅读,JavaScript原生继承方式与jQuery中的继承
JavaScript中继承方法有以下几种:1.原型链继承: function Book (name,author){ this.name=name; this.author=author; } Book.prototype.tell=function(){console.log("Book:"+this.name+" Author:"+this.author)原创 2016-02-29 21:06:02 · 2523 阅读 · 0 评论 -
jQuery-源码阅读,使用init()而不用普通原型模式的原因
昨天在思考一个问题,jQuery为什么使用init()来创建对象,不用new,现在把我思考结果分享下:首先看下创建jQuery对象的过程:function jQuery(){ return new jQuery.prototpye.init();}jQuery.prototype.init=function(){};jQuery.prototype.css=function(原创 2016-02-27 14:44:08 · 1227 阅读 · 0 评论 -
jQuery-源码阅读,pushStack()入栈方法
首先了解下栈:栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。栈的规则是先进后出。下面看下jQuery中链式方法的使用:$('ul').children('li').css("backgroundColor","#CCC");首先选择页面中ul元素,再寻找其子元素中li,为其设置背景颜色为灰色。这里,ul首先入栈,子元素li后入栈,则css(原创 2016-02-27 20:41:43 · 3181 阅读 · 2 评论 -
React-从源码分析React Fiber工作原理
本文的demo仓库在https://github.com/qiqingjin/blog/tree/master/React_Redux,喜欢请star哟~为什么要重写ReactReact16 以前React16 以前,对virtural dom的更新和渲染是同步的。就是当一次更新或者一次加载开始以后,diff virtual dom并且渲染的过程是一口气完成的。如果组件...原创 2018-04-28 11:40:25 · 12691 阅读 · 3 评论