实现 AMD 模块加载器

只处理了两个模块直接循环依赖,还没有解决模块间间接循环依赖的问题。...

Vue 2.0 源码浅析:加载和实例化过程

分析加载的时候都执行了什么方法以及 new 一个 vue 实例从定义到渲染页面经过了哪些流程。加载过程静态方法initGlobalAPI(Vue)initUse(Vue)initMixin(Vue)initExtend(Vue)initAssetRegisters(Vue)原型方法initMixin(Vue)stateMixin(Vue)eventsMixin(Vue)lifecycleMixin...

使用 background-size 让精灵图实现自适应缩放

background-size 除了可以设置 cover、contain 这两个值,还可以自定义设置大小,比如:backgound-size: 10px 20px 或者 background-size: 10% 20%,前者以像素为单位表示背景图的大小宽10px 高20px,后者以百分比为单位基于父元素大小计算,效果与 img 标签的 width、height 是一样的。如果要实现背景图自适应缩...

Object.defineproperty 实现数据与视图绑定

Object.defineproperty(obj, prop, descriptor) 可以添加/修改对象的属性,调用后会返回该对象。和平时直接添加对象属性:var obj = {title: ''} 是有区别的。通过 Object.defineproperty 定义可以配置对象属性是否可以枚举/删除/可写以及为属性添加自定义的 getter/setter 等特性。使用属性不可写属性不可删除属性...

利用 ES7 的 async 和 await 解决回调函数嵌套问题

由于 Javascript 执行环境是“单线程”的,想要实现异步编程,就会用到回调函数。如果一些异步请求之间存在依赖,或者服务端使用 node 进行大量的 io 操作时就会出现回调函数嵌套的情况,代码就变成了横向发展,不利于阅读,维护起来麻烦。解决方案解决回调函数嵌套问题可以使用:GeneratorcoPromiseasync / awaitES7 中有了更加标准的解决方案,新增了 async/a...