nodejs源码—初始化

2018-09-08
阅读 13 分钟
4.2k
相信很多的人,每天在终端不止一遍的执行着node这条命令,对于很多人来说,它就像一个黑盒,并不知道背后到底发生了什么,本文将会为大家揭开这个神秘的面纱,由于本人水平有限,所以只是讲一个大概其,主要关注的过程就是node模块的初始化,event loop和v8的部分基本没有深入,这些部分可以关注一下我以后的文章。(提...

记一次由BOM引起的bug

2017-11-20
阅读 4 分钟
3.7k
此时一脸懵逼,就用了require的方式试了一下发现一点问题都没有,考虑到了团队小伙伴使用的windows,就去问了下他,得知这个json用notepad++写的,加上之前写php经常遇到的BOM问题,就猜测这个bug由BOM引起,将读出来的str转成Buffer来看果然开头是ef bb bf。下面先来看下今天说的这个BOM到底是个什么东西:

through2原理解析

2017-10-27
阅读 3 分钟
13.3k
through2的源码仅仅就100多行,本质上就是对于node原生的transform流进行的封装,先来看下Transform stream。Transform是一个双工流,既可读,也可写,但是与Duplex还是有着一些区别,Duplex的写和读可以说是没有任何的关联,是两个缓冲区和管道互补干扰,而Transform将其输入和输出是存在相互关联的,中间做了处理。具...

dva源码解析(一)

2017-06-16
阅读 6 分钟
10.4k
dva是蚂蚁金服推出的一个单页应用框架,对redux,react-router,redux-saga进行了上层封装,没有引入新的概念,但是极大的程度上提升了开发效率;下面内容为本人理解,如有错误,还请指出,不胜感激。

koa源码

2017-06-02
阅读 3 分钟
4.8k
本文将会大家来看下koa的源码,当然本文需要大家了解koa的中间件机制,如果大家之前没有了解过其实现原理,可以关注下这篇文章。koa的源码非常的精简,与express不同,koa只是为开发者搭起了一个架子,没有任何的功能,包括路由,全部由中间件实现;下面就来看下koa的实现:

koa中间件机制详解

2017-04-22
阅读 5 分钟
7.4k
在我眼中,koa的确是比express轻量的多,koa给我的感觉更像是一个中间件框架,koa只是一个基础的架子,需要用到的相应的功能时,用相应的中间件来实现就好,诸如路由系统等。一个更好的点在于,express是基于回调来处理,至于回调到底有多么的不好,大家可以自行搜索来看。koa1基于的co库,所以koa1利用Generator来代替...

手动实现一个jsonwebtoken

2017-04-11
阅读 6 分钟
7.7k
本质上它是一段签名的 JSON 格式的数据。由于它是带有签名的,因此接收者便可以验证它的真实性。同时由于它是 JSON 格式的因此它的体积也很小。 JSON Web Token (JWT)是一种开放标准(RFC 7519),其中定义了一种紧凑 (compact) 且自包含(self-contained)的方式用于以JSON对象的形式在多方之间传递信息。信息可以被核实...

一道面试题

2017-03-18
阅读 2 分钟
2k
这道题是本人在面试一家公司时的一个简单的基础问题,公司就不透露了,算是国内很有名的公司,本人面试的只是实习岗位。一些大的问题就不再说了,每个人遇到的可能都是不一样的,基本会围绕着我们平常所常用的东西来聊,下面就说一道小题:

理解async

2017-03-14
阅读 5 分钟
7.8k
本文将要实现一个顺序读取文件的最优方法,实现方式从最古老的回调方式到目前的async,也会与大家分享下本人对于thunk库与co库的理解。实现的效果:顺序读取出a.txt与b.txt,将读出的内容拼接成为一个字符串。

对react技术栈的一些理解

2017-02-26
阅读 5 分钟
5k
vue1没有加入虚拟DOM,做服务端渲染很难,所以vue2引入了虚拟DOM的机制,而且由于vue2的响应式原理,所以天然的就比react的性能好,react的更新是通过顶层组件的state变化触发整个组件的重新渲染,而vue2由于其是通过getter/setter来进行数据管理,所以可以准确的定位到需要重新渲染的节点,避免了无效的re-render

理解redux

2017-02-10
阅读 11 分钟
2.8k
以react来说,state可以包含内部的状态以及业务数据,对于一个复杂的应用来说,state非常难以管理,一个model的变化可能引起另一个model的变化...依次下去,造成了难以维护的情况,别人很难一下子摸透你的state到底是怎么变得?所以需要引入一个东西来做数据管理,使数据变化变得清晰,redux做的就是这件事情。假如说rea...

给你的密码加盐

2017-01-30
阅读 2 分钟
7.9k
这种方式可以说很不安全,一旦数据库泄漏,那么所以得用户信息就会被泄漏。之前,国内普遍采用这种方式,造成了很多的事故,如csdn600万用户信息泄漏、12306用户信息泄漏等。

窥探react事件

2017-01-07
阅读 2 分钟
3.7k
本文源于本人在学习react过程中遇到的一个问题;本文内容为本人的一些的理解,如有不对的地方,还请大家指出来。本文是讲react的事件,不是介绍其api,而是猜想一下react合成事件的实现方式

窥探zepto的事件模块

2016-12-18
阅读 7 分钟
3.9k
通过本文,您可以了解zepto的事件模块,$(selector).on之后到底发生了什么样的事情,如何实现的事件委托【$(selector).delegate】,如何实现的自定义事件等问题。由于篇幅有限,移除事件部分,代码没有贴出,大家可以看这里(完整版)。先来看下全部API(略去了off等移除事件方法):

自己实现MVVM(Vue源码解析)

2016-12-08
阅读 5 分钟
6.2k
本文会带大家手动实现一个双向绑定过程(仅仅涵盖一些简单的指令解析,如:v-text,v-model,插值),当然借鉴的是Vue1的源码,相信大家在阅读完本文后对Vue1会有一个更好的理解,源代码放到了github,由于本人水平有限,理解不到位的地方还请大家指出。

跨域解决方案大全

2016-10-25
阅读 6 分钟
6.4k
同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。

利用express+socket.io实现一个简易版聊天室

2016-10-20
阅读 5 分钟
9.9k
最近由于利用node重构某个项目,项目中有一个实时聊天的功能,于是就研究了一下聊天室,在线demo|源码,欢迎大家反馈。这个聊天室的主要利用到了socket.io和express。这个聊天室支持群聊,私聊,支持发送图片(PS:大家在体验时最好开启两个浏览器,自问自答)。下面就来和大家分享下实现过程:

自己动手撸个简易模板引擎(50行左右)

2016-09-26
阅读 3 分钟
4.3k
模板的诞生是为了将显示与数据分离,模板技术多种多样,但其本质是将模板文件和数据通过模板引擎生成最终的HTML代码。目前有着很多这种模板引擎,诸如Node的ejs,jade,PHP的Smarty。当然在用过这么多的模板引擎后,也有着自己实现一个简易模板引擎的冲动。于是今天就实现了一个简单的模板引擎,这个模板引擎非常简单,...

Vue的缓存算法—LRU算法

2016-09-24
阅读 3 分钟
6.3k
LRU是Least recently used的简写,主要原理是根据历史访问记录来淘汰数据,说白了就是这个算法认为如果数据被访问过,那么将来被访问的几率也高。其存储结构是一个双链表,最近被访问到的放在双链表的尾部,头部放的就是最早被访问到数据。关于算法的具体流程,可以来看下这个,这个可视化过程,模拟了lru算法进行调度的...

img的间隙

2016-09-03
阅读 2 分钟
6.4k
上述代码产生的效果如图所示,但是另人感到惊奇的是,img与div之间存在着一个间隙,这个间隙是怎么产生的?应该怎么解决?下面我们一点点的探寻这个问题背后的一些原理:

Centos7下启用端口

2016-08-27
阅读 1 分钟
7.6k
今天写了一下node的小demo,于是想放到阿里云服务器上,但是访问时却发生了错误。考虑了下,觉得问题在于端口号上,我写的nodedemo是监听的3000端口,然而linux下有防火墙默认只有80端口开放,于是尝试了下将服务器的3000端口打开,期间还是遇坑不少,下面就梳理下整个过程:

Centos 7下安装node.js

2016-08-23
阅读 1 分钟
11.8k
今天买了一个阿里云的学生服务器,系统为Centos 7,做为一个前端学习者,必不可少的就是给服务器安装Node,作为linux小白的我,期间还是与坑不少,这里就来记录一下安装的过程:

Node 之 Event 模块

2016-08-16
阅读 5 分钟
3k
事件的编程方式具有轻量级、松耦合、只关注事务点等优势,在浏览器端,有着自己的一套DOM事件机制,其中含包括这诸如事件冒泡,事件捕获等;然而Node的事件机制没有事件冒泡等,其原理就是设计模式中的观察者模式。Node很多的模块继承这个事件模块,下面我们就来根据源码来学习下其API,做到知其然更知其所以然。

模板引擎Jade

2016-08-02
阅读 6 分钟
5.5k
前言:node.js的模板引擎有多种,如:ejs,Handlebars,jade。一开始首先学习了ejs,但是发现其有一个很大的弊端,那就是它不能继承(由于之前用的全部是thinkphp的模板,所以用起来非常别扭,只能进行include,而不能extend),于是转为jade,将html做了一层抽象的模板引擎。

javascript中的作用域(词法and动态)

2016-07-03
阅读 3 分钟
2.1k
这个例子就是一个很好的印证,可以发现的是,无论foo在哪里调用,其a的值永远是全局作用域中的a的值,这就是词法作用域,定义函数时,作用域是在全局,那么foo上层作用域就是全局,改变其调用位置是不能改变其作用域链的,其作用域链是在定义时就决定好的。利用词法作用域,我们可以引申出闭包的概念,将我们上面的代码...