move.js 源码 学习笔记】的更多相关文章

源码笔记: /* move.js * @author:flfwzgl https://github.com/flfwzgl * @copyright: MIT license * Sorrow.X --- 添加注释,注释纯属个人理解(源码有稍微改动,方便阅读) * */ ! function() { var PI = Math.PI, sin = Math.sin, cos = Math.cos, pow = Math.pow, abs = Math.abs, sqrt = Math.sqrt;…
上接 Underscore.js 源码学习笔记(上) === 756 行开始 函数部分. var executeBound = function(sourceFunc, boundFunc, context, callingContext, args) { if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args); var self = baseCreate(sourceFunc.prot…
版本 Underscore.js 1.9.1 一共 1693 行.注释我就删了,太长了… 整体是一个 (function() {...}());  这样的东西,我们应该知道这是一个 IIFE(立即执行函数). var root = typeof self == 'object' && self.self === self && self || typeof global == 'object' && global.global === global &…
最近饶有兴致的又把最新版 Vue.js 的源码学习了一下,觉得真心不错,个人觉得 Vue.js 的代码非常之优雅而且精辟,作者本身可能无 (bu) 意 (xie) 提及这些.那么,就让我来吧:) 程序结构梳理 Vue.js 是一个非常典型的 MVVM 的程序结构,整个程序从最上层大概分为 全局设计:包括全局接口.默认选项等 vm 实例设计:包括接口设计 (vm 原型).实例初始化过程设计 (vm 构造函数) 这里面大部分内容可以直接跟 Vue.js 的官方 API 参考文档对应起来,但文档里面没…
alloyTouch这个库其实可以做很多事的, 比较抽象, 需要我们用户好好的思考作者提供的实例属性和一些回调方法(touchStart, change, touchMove, pressMove, tap, touchEnd, touchCancel, reboundEnd, animationEnd, correctionEnd). 哇, 提供了这么多回调啊, 因为我也刚玩,用到的不多. change回调很常用(比如上拉,下拉刷新要用到),配合touchStart, animationEnd…
此手势库利用了手机端touchstart, touchmove, touchend, touchcancel原生事件模拟出了 rotate  touchStart  multipointStart  multipointEnd  pinch  swipe  tap  doubleTap  longTap  singleTap  pressMove  touchMove  touchEnd  touchCancel这14个事件回调给用户去使用.下面会讲述几个常用的手势原理实现. 先来看一下我对源码…
lazy-load-img.js? 1. 什么鬼? 一个轻量级的图片懒加载,我个人很是喜欢. 2. 有什么优势? 1.原生js开发,不依赖任何框架或库 2.支持将各种宽高不一致的图片,自动剪切成默认图片的宽高        比如说你的默认图片是一张正方形的图片,则各种宽度高度不一样的图片,自动剪切成正方形    完美解决移动端开发中,用户上传图片宽高不一致而导致的图片变形的问题. 3. 使用姿势,如下: // 生成li var ul = document.querySelector('#list…
/** * observejs --- By dnt http://kmdjs.github.io/ * Github: https://github.com/kmdjs/observejs * MIT Licensed. * Sorrow.X --- 添加注释,注释纯属个人理解 */ ; (function(win) { var observe = function(target, arr, callback) { var _observe = function(target, arr, ca…
主体 实例方法归类:   先看个作者推荐, 清晰易懂的  23232 简易编译器   重点: 最简单的订阅者模式 // Observer class Observer { constructor (data) { this.walk(data) } walk (data) { // 遍历 let keys = Object.keys(data) for(let i = 0; i < keys.length; i++){ defineReactive(data, keys[i], data[key…
 1. this._eventsCount = { }    这是为了避免不必要的深度遍历: 在有广播事件到来时,如果当前 vm 的 _eventsCount 为 0, 则不必向其子 vm 继续传播该事件. 2. 数据更新的diff机制 视图更新效率的焦点问题: 大列表的更新 和 深层数据更新 而大列表较为常见 repeat.js 首先diff(data, oldVms) 大概是先比较 新旧两个列表 的vm的数据状态, 然后 差量更新DOM 步骤: 1.遍历 新列表里的 每一项, 如果 该项的v…