【avalon源码】】的更多相关文章

距avalon0.7版本发布有一段时间,由于之前的稳定性,就停止一段时间更新,期间研究了下Knockout源码,也尝试写了一个小型的mvvm的实现模型,仅仅只是仿造ko的核心实现,把无关的东西给剥离掉了,有时间总结一下发布出来. ko算很早就出现的MVVM库了,实现是手段也是异常的巧妙,但是把监听的东西都转成函数表达,调用的时候也必须是函数形式,但使用习惯上,我就不太喜欢了 Knockout 监控属性通过observable内部转换成后,返回带有一个观察者模式的的函数(执行调用与赋值的时候都会有…
avalon源码分析目录 第一篇 : 关于前端的MVVM架构 第二篇 : 初步接触 第三篇 : 执行流程1 第四篇 :  执行流程2 第五篇 : 整体架构 第六篇 : ViewModel  第七篇 : 模型转换 第八篇 : 控制器 第九篇 : 阶段总结 第十篇 : HTML编译器 第十一篇 : 双向绑定原理…
来源 写angularJS源码阅读系列的时候,写的太垃圾了. 一个月后看,真心不忍直视,以后有机会的话得重写. 这次写avalonJS,希望能在代码架构层面多些一点,少上源码.多写思路. avalon暴露句柄方式  ..已经不是这样了 (function(DOC){ ... avalon=...//没有var ... })(document) 具体暴露句柄方式的讲解,在这里. avalon Dom遍历 源码的末尾执行了这么avalon.ready(function(){...})一个函数, 而这…
1. document.getElementsByTagName('head')[0] document.head 2. 3. var IEVersion = NaN if (window.VBArray) { IEVersion = document.documentMode || (window.XMLHttpRequest ? 7 : 6) } 4. function returnRandom() { return new Date() - 0 } 5. for (var i = 0, n…
function iterator(vars, body, ret) { var fun = 'for(var ' + vars + 'i=0,n = this.length; i < n; i++){' + body.replace('_', '((i in this) && fn.call(scope,this[i],i,this))') + '}' + ret console.log(fun) return Function('fn,scope', fun) } Array.p…
function dateGetter(name, size, offset, trim) { return function(date) { var value = date["get" + name]() if (offset > 0 || value > -offset) value += offset if (value === 0 && offset === -12) { // hh h的情况 value = 12 } return padNumb…
function noop() {} function scpCompile(array) { return Function.apply(noop, array) } // var fn = new Function('x', 'y', 'return x + y;'); // 等价于var fn = function(x, y) {return x + y;} var fn = scpCompile(['x', 'y', 'return x + y;']) console.log(fn)…
简介 本文主要对源码和内部机制做较深如的分析,基础部分请参阅官网文档. knockout.js (以下简称 ko )是最早将 MVVM 引入到前端的重要功臣之一.目前版本已更新到 3 .相比同类主要有特点有: 双工绑定基于 observe 模式,性能高. 插件和扩展机制非常完善,无论在数据层还是展现层都能满足各种复杂的需求. 向下支持到IE6 文档.测试完备,社区较活跃. 入口 以下分析都将对照 github 上3.x的版本.有一点需要先了解:ko 使用 google closure compi…
简介 avalon是国内 司徒正美 写的MVVM框架,相比同类框架它的特点是: 使用 observe 模式,性能高. 将原始对象用object.defineProperty重写,不需要用户像用knockout时那样显示定义各种属性. 对低版本的IE使用了VBScript来兼容,一直兼容到IE6. 需要看基础介绍的话建议直接看司徒的博客.在网上搜了一圈,发现已经有了avalon很好的源码分析,这里也推荐一下:地址. avalon在圈子里一直被诟病不够规范的问题,请各位不必再留言在我这里,看源码无非…
/********************************************************************* * 配置系统 在系统运行的开始就需要读取系统中require.config()这个方法中所配置的项目 * **********************************************************************/ //这里写在前面是为了更加方便阅读代码,在实际运行中,这几段代码必须放在下面 kernel.debug =…