npm 私有源搭建

目标 搭建一套私有 npm 服务,支持以下功能: 发布管理私有 npm 包; 提供 npm 镜像服务,加速 npm 安装依赖速度; 方案 为开发者提供了一套简单易用的私有源解决方案。它支持以下功能: 支持发布和管理私有源; 部署简单; 支持两种自动同步方案: 全量同...

Read Me

Saga 优势

保持 action 的纯粹性 action 应该是无副作用的,saga 通过 effects 的方式保持 action 的纯粹性 强大的异步处理 saga 使用 generator 模式工作,并将 effects 分为不同类型交给中间件分别处理,对于复杂异步处理十分方便: 阻塞与无阻塞 for...

Read Me

JavaScript 数组惰性求值

我们以一个常见的简单例子开始。 当我们需要操作一个大数组 arr (就假设 arr 有1000个元素好了),我们要对这个数组中每个元素进行平方,在过滤出前5个大于 100 的元素,如果我们使用 Underscore (或者LocalDash)要怎么做呢? // 辅助函数 function squar...

Read Me

NPM 版本控制小坑

我们在项目中引入 NPM 模块时,需要对依赖进行有效的版本控制,否则当某个依赖做了不向下兼容的升级,就会造成我们项目出错。同样,我们在开发 NPM 模块时,也需要做好版本控制,以免给其他开发者造成困扰。 NPM 版本号规范 NPM 上所有模块都遵循 规则。 简单规则如下: 版本格式:主版本号.次...

Read Me

Promise 小记(一)

什么是Promise 只要一提到 JavaScript 异步编程,我想绝大多数人都会想到 JS 回调函数。而 ES6 为我们带来了新的异步编程方式——Promise。 Promise并不是JS首创的,而是来源于E语言,它是基于并列/并行处理设计的一种编程语言。Promise 把基于回调的异步处理对象...

Read Me

什么是WebAssembly

JavaScript在10天被创造出来并迅速得到流行,这使它留下了很多缺陷,因此在过去几年诞生了很多项目试图通过将其他语言编译为JS来克服JS本身的一些短板。比如Google的Dart,微软的TyprScript。尽管目前JS引擎极力优化,但一套基于字节码的系统仍然会有更快更好的性能表现,这就是We...

Read Me

HTTP/2 简介

目前互联网几乎所有的内容都采用HTTP/1.1作为通信协议,然而这一伟大的协议正在老去。随着前端承载着越来越多的职责,对HTTP的要求也更高,是时候迎来HTTP/2的时代了。 什么是HTTP/2? HTTP 协议规范的标准化组织(IETF)在2015年2月19日通过了 HTTP/2 协议。HTTP...

Read Me

JavaScript设计模式-观察者模式

观察者模式又被称为发布订阅模式,是一种常见的行为型模式,主要用来处理不同对象之间的交互通信问题,我们平时常用的DOM事件,也是使用观察者模式实现的。 观察者模式一般包含两种对象: 1. 发布者对象:发布通知,通知订阅者 2. 订阅者对象:监听通知,响应通知 举个栗子: document.body....

Read Me

使用requestAnimationFrame进行性能优化

上周在看了layzr.js这个小而精的懒加载插件源码,代码量不超过200行,无任何依赖,确实经典,其中印象比较深的是使用了requestAnimationFrame这个JS API延迟代码执行,优化性能。 Layzr.prototype.requestTick = function() { if...

Read Me

移动端Web开发小结

视口 设备像素和CSS像素 设备像素是设备屏幕的物理像素,任何设备的物理像素的数量都是固定不变的; CSS像素是为Web开发者创造的,在CSS中使用的一个抽象的像素层。 e.g. 当给一个元素设置width: 200px;时,该元素可能会覆盖200个设备像素,也可能不会,比如在高分辨率屏幕上...

Read Me