zepto源码--整体框架--学习笔记】的更多相关文章

为了深入学习javascript,根据别人推荐的方法之一:研究源码. 相对而言,之前的项目中仅仅使用过zepto和jquery,当前阶段,看到好几千行的jquery源码,心生敬畏,望而却步,所以选择相对精简一点的zepto. 首先,最重要的是理清楚zepto的结构. zepto采用的立即执行函数来实现避免对全局变量污染. javascript立即执行函数有两张写法: 1. (function(形参){...})(实际传入参数); 2. (function(形参){...}(实际传入参数)); z…
主要了解一下zepto定义的初始变量. 逐一以自己的理解解析,待到后面完全透彻理解之后,争取再写一遍zepto源码学习的文章. 其中的undefined确实不明白为什么定义这么个变量在这里. document = window.document根据个人理解应该是要兼容一些特殊情况下获取document的问题,但是也不知道在什么样的情况下,需要使用window.docment才能获取到document对象. key: 后面会多次用到初始化变量key,在for in循环中,需要确定键的名称,基本上只…
与生成width和height使用的方法类似,通过`after`, `prepend`, `before`, `append`,这四者之间的共性,生成对应的函数.并根据这四个函数,生成 `insertAfter`, `insertBefore`, `appendTo`,  `prependTo`. 将具有共性的四者存储在一个数组中,以便于循环遍历. adjacencyOperators.forEach(function(operator, operatorIndex) {}) 使用forEach…
width和height函数,实际上通过css方法也完全可以取到这两个函数的结果.获取width,$elem.css('width');设置width的话,$elem.css('width', 100),这与我们将要介绍的width()函数完全一致,height函数也一样可以实现.但是在我们日常编程过程中,这两个函数使用频率确实比较高,所以不管是jquery,还是zepto都对他们进行了额外的封装. 由于这两者实现过程完全一致,唯一的区别是一个是宽度,一个是高度,在代码实现过程中,并没有什么区别…
微信公众号:CodingAndroid cnblog:http://www.cnblogs.com/angel88/ CSDN:http://blog.csdn.net/xinpengfei521 需求:设计一个图片加载工具类. 要求:职责单一.可扩展性强.实现三级缓存,遵循开闭原则. 1.改造前原始代码 package com.anloq.sdk.imageloader;import android.graphics.Bitmap;import android.graphics.BitmapF…
<PHP7底层设计与源码实现>一书的作者陈雷亲自给我们授课,大佬现身!但也因此深感自己基础薄弱,遂买了此书.希望看完这本书后,能让我对PHP7底层的认识更上一层楼.好了,言归正传,本书共14章,此篇笔记是1~2章的总结,主要介绍了PHP7的新特性.执行原理和PHP源码结构. 一.PHP7的新特性   新特性 PHP7+ 老版本可以这样做 太空船操作符 <=> 太空船操作符又叫组合比较符,用于比较两个表达式,表达式可以为整型.浮点型.字符串.   \$a <=> \$b,…
源码解压以后,我们可以看到以下的文件和文件夹:  cpu 与处理器相关的文件.每个子目录中都包括cpu.c和interrupt.c.start.S.u-boot.lds. cpu.c:初始化CPU.设置指令Cache和数据Cache等 interrupt.c:设置系统的各种中断和异常 start.S:是U-boot启动时执行的第一个文件,它主要做最早期的系统初始化,代码重定向和设置系统堆栈,为进入U-boot第二阶段的C程序奠定基础. u-boot.lds:链接脚本文件,对于代码的最后组装非常重…
一.PHP7语言执行原理 常用的高级语言有很多种,根据运行的方式不同,大体分为两种:编译型语言和解释型语言. 编译是指在应用源程序执行之前,就将程序源代码“翻译”成汇编语言,然后进一步根据软硬件环境编译成目标文件.一般称完成编译工作的工具为编译器. 而解释型语言,在程序运行时才被“翻译”为机器语言.但是执行一次“翻译”一次,所以执行效率较低.解释器的工作就是解释型语言中,负责“翻译”源代码的程序. 对于一段C语言代码,需要经过预编译.编译.汇编和链接,才能成为可执行的二进制文件. 以C语言为代表…
目录 目标 源码 目标 理解 KestrelServer 如何接收网络请求,网络请求如何转换成 http request context(C# 可识别) 源码 https://github.com/dotnet/aspnetcore/ 在目录 aspnetcore\src\Servers\Kestrel\Core\src\Internal 下有一个 KestrelServerImpl internal class KestrelServerImpl : IServer 在 host 启动的时候调…
首先django-restframework是基于django的一个框架.   mixins.py中开头是这样写的: Basic building blocks for generic class based views. We don't bind bahaviour to http method handlers yet, whick allows mixin classes to be composed in interesting ways.   generics是把对数据库的增删改查都…
//---------------------------15/04/05---------------------------- /* 空间配置器概述: 1:new操作包含两个阶段操作 1>调用::operator new配置内存(底层使用malloc来申请内存). 2>调用函数的构造函数,构造对象内容. delte和new一样,先调用析构函数,再调用::operator delete释放内存. 2:为了效率,stl把两个阶段分开来. 1>内存配置操作: alloc::allocate…
//---------------------------15/03/24---------------------------- //hashtable { /* 概述: sgi采用的是开链法完成hashtable的,也就是用链表来存储映射到相同位置的元素. */ //node(节点) template<class Value> struct __hashtable_node { __hashtable_node* next; Value val; }; //bucket维护的linked…
// //  set map.cpp //  笔记 // //  Created by fam on 15/3/23. // // //---------------------------15/03/23---------------------------- //set { /* set概述: 1:所有的元素都会被自动排序, 2:所有的元素只有"键"没有"值" 或者说他们的"值"就是"键" 3:不允许出现两个相同的键值 4…
// //  RB_tree_STL.cpp //  笔记 // //  Created by fam on 15/3/21. // // #include "RB_tree_STL.h" //---------------------------15/03/21---------------------------- RB_tree { /* 一个由上而下程序: 为了避免父子节点皆为红色的情况持续向上层发展,形成处理时效上的瓶颈,可以从上向下处理, 假设新增的节点为a,那就沿着a的路…
// //  priority_queue.cpp //  笔记 // //  Created by fam on 15/3/16. // // //---------------------------15/03/16---------------------------- //priority_queue { /* priority_queue概述: 同正常队列一样,队尾进,队首出,不过不是先进后出, 有权值的概念,所以会自动排序(并不是全部排序,只要保证队 首值最大即可,权值最高的最先出队…
// //  heap.cpp //  笔记 // //  Created by fam on 15/3/15. // // //---------------------------15/03/15---------------------------- //heap { /* heap概述: heap并不是stl的容器,只是priority queue(优先队列)的助手 它允许用户以任意顺序插入容器,但是取出是,总是取出优先级最高的元素 heap用的是很常见的堆结构,用数组来表示,采用堆排序…
// //  stack.cpp //  笔记 // //  Created by fam on 15/3/15. // // //---------------------------15/03/15---------------------------- //stack { /* stack概述: stack只采用deque的底部操作,封装了deque,形成stack 这种方式是常见的adapter设计模式,stack往往不被归类为container 而是被归类为 container ada…
c# opc client是一个在网上下载的示例程序,调试的时候还是费了一番周折,服务器端程序来自king view6.55,另文介绍. 1.注册dll 程序中有一个名叫OPCDAAuto.dll的文件,这个文件需要先注册到本机,如图1所示: 图1 注册成功之后,在打开程序的时候,引用中的OPCAutomation才不会报错,见图2: 图2 2.程序测试 启动服务器端,创建一个标记值tag,赋值等于10.00,运行client选择服务器为DLLTestSvr,点击连接按钮,即可看到tag值:…
//---------------------------15/04/03---------------------------- /* 配接器概述: 1:adapter是一种设计模式:将一个class的接口转换为另一个class的接口,使得原本因接口不兼容而 不能合作的classes可以一起工作. 2:改变仿函数接口的,称为function adapter,改变容器接口的,称为container adapter, 改变迭代器接口的,称为iterator adapter. 3:container…
//---------------------------15/04/01---------------------------- //仿函数是为了算法而诞生的,可以作为算法的一个参数,来自定义各种操作,比如比大小,返回bool值,对元素进行操作等 //虽然这些函数也能实现,但是如果配合配接器(adapter)可以产生更灵活的变化. //为了使对象像函数一样,就必须重载operator() //unary_function template<class Arg, class Result> s…
//---------------------------15/04/01---------------------------- //inplace_merge(要求有序) template<class BidirectionalIterator> inline void inplace_merge(BidirectionalIterator first, BidirectionalIterator middle, BidirectionalIterator last) { if(first…
//---------------------------15/03/31---------------------------- //lower_bound(要求有序) template<class ForwardIterator, class T> inline ForwardIterator lower_bound(ForwardIterator first, ForwardIterator last, const T& value) { return __lower_bound…
//---------------------------15/03/30---------------------------- //min_element template<class ForwardIterator> ForwardIterator min_element(ForwardIterator first, ForwardIterator last) { if(first == last) return first; ForwardIterator result = first…
//---------------------------15/03/29---------------------------- //****************************set相关算法***************************** /* 1>set相关算法一共有4种:并集(union),交集(intersection),差集(difference), 对称差集(symmetric difference). 2>set相关算法只接受set/multiset. 3…
//---------------------------15/03/27---------------------------- //算法 { /* 质变算法:会改变操作对象之值 所有的stl算法都作用在由迭代器[first,last)所标示出来的区间上.质变算法 就是 运算过程会更改区间内的元素内容 非质变算法:和质变算法相反 */ /* stl算法的一般形式 1>所有的泛型算法的前两个参数都是一对迭代器,通常称为first和last,用以标示算法的操作区间 2>stl习惯采用前闭后开区间…
//****************************基本算法***************************** /* stl算法总览,不在stl标准规格的sgi专属算法,都以 *加以标记 算法名称              算法用途         质变                   所在文件 accumulate          元素累计            否                   <stl_numeric.h> adjacent_differenc…
//---------------------------15/03/26---------------------------- //hash_set { /* hash_set概述: 1:这是一个hash版本的set,RB_tree版本的set有自动排序功能, 而hash_set没有这个功能. 2:hash_set的使用方式,与set完全相同. */ //class template<class Value, class HashFcn = hash<Value>, class Eq…
//---------------------------15/03/22---------------------------- //一直好奇KeyOfValue是什么,查了下就是一个和仿函数差不多的东西,在第7章会详细介绍 //现在只知道KeyOfValue()可以构造一个类调用他的operator()可以得到一个value的key //允许重复的插入 template<class Key,class Value, class KeyOfValue,class Compare, class…
protected: typedef simple_alloc<value_type,Alloc> data_allocator; //用来配置元素的alloc typedef simple_alloc<pointer,Alloc> map_allocator; //用来配置指针的alloc deque(int n,const value_type& value) :start(),finish(),map(),map_size() { fill_initialize(n,…
//---------------------------15/3/13---------------------------- self&operator++() { ++cur; if(cur==last) { set_node(node+); cur=first; } return *this; } self operator++(int)   //这里不能返回引用,因为 tmp是临时变量,作用域结束tmp就消失了 { self tmp=*this; ++*this; return tmp…