基本框架封装 1

1. 框架的课程安排
1> 整体介绍框架
2> 选择器模块
3> DOM 操作与框架结构(核心)
4> DOM 操作
5> 事件操作
6> 属性操作
7> 样式操作

jQuery.fn.extend()
jQuery.extend()

2. 前端的界限越来越模糊

3. 简要的分析一下 jq 的结构

// jq 1.7.1
(function ( window, undefined ) {
// 凡是调用全局的都是 window 下的东西,
// 所以为了减少作用域的搜索写在参数中.

// 如果不写在参数中, 那么表示在整个框架里, 都需要使用 window 这个名字
// 那么在投入生产环境中压缩代码就不能压缩 window
// 使用参数后, 函数内的 window 就是函数外的这个 window

// undefined

})( window );

// jq 3.1.0
( function ( global, factory ) {
// 代码
if ( module 存在 ) {

} else {

factory( golbal );

}
} )( window, function( a, b ) {
// 代码
// jq 的定义代码
});

// 拆开
var foo = function ( global, factory ) {
if ( typeof module ) {
// ...
} else {

factory( golbal );

}
};
var func = function ( a, b ) {
// jq 函数
};

foo( window, func );

4. jq 可以怎么使用
$(function () {
相当于 onload
})

$( document.body )

$( ‘<div>123</div>‘ )

$( ‘#id‘ ), $( ‘.c‘ ), $( ‘div‘ ), ...

$( $( ‘div‘ ) ) 与 $( ‘div‘ )

//将 刚刚创建的 div 加到 body
$( ‘<div>123</div>‘ ).appendTo( ‘body‘ )

var $body = $( ‘body‘ );
var $div = $( ‘<div></div>‘ );
$div.appendTo( $body )

$( .... ).get( 1 ) 等价于 $( ..... )[ 1 ]
$( .... ).get()

$( ... ).next().end()

// extend
for ( var k in obj ) {
this[ k ] = obj[ k ];
}

5. jq 的结构
核心模块
回调模块
浏览器能力检测模块
缓存, 属性, 队列
属性与样式操作
事件处理
选择器引擎
DOM 关系查找模块
DOM 操作模块
CSS 模块
ajax 模块
动画模块
兼容属性

6. 选择器模块
基本的面向对象的概念
案例: 页面中有两个 div, 和 两个 p. 要求设置他们的样式

7. 回调函数 callback function
之后才调用的函数
将一个函数传入到另一个函数中, 此时并没有调用函数, 而是在另一个函数中的某一个地方触发调用.
$.each( [ 1, 2, 3, 4 ], function ( v,i ) {} );

function f ( callback ) {
if ( typeof callback == ‘function‘ ) {
callback();

// otherFunc( callback );
}
}

f( function () { alert(123); } );

8. 可以发现系统使用 support.qsa 来实现浏览器的能力判断
support.qsa = rnative.test( document.querySelectorAll )
这里 rnative 就是
/function.*\(.*\).*\{ \[navive code/;
该正则用于匹配形如
‘function Array ( ) { [native code] }‘

为什么使用 support 对象, qsa 为什么使用 bool 值

if ( rnative.test( fn ) )

if ( supports.fn )

不要每次执行方法的时候 都去执行一次正则判断和字符串转换, 而是一开始的时候就应该将方法的能力
检测好, 存储与 support 中的一个属性. 而这个属性的命名一般与方法名同名

9. 自定义 select 方法的思路就有了
1> 定义一个 support 对象. 将需要使用的方法进行处理, 得到方法的能力
2> 需要使用的可能有兼容性的方法, 定义一个可以完成该方法的函数来替代. 在函数内部进行兼容处理
3> 定义 select 函数. 首先看是否支持 qsa, 如果支持直接使用. 如果不支持自己再来实现

时间: 2024-08-08 17:49:12

基本框架封装 1的相关文章

java并行调度框架封装及示例

参考资料:  阿里巴巴开源项目 CobarClient  源码实现. 分享作者:闫建忠 分享时间:2014年5月7日 --------------------------------------------------------------------------------------- 并行调度封装类设计: BXexample.java package org.hdht.business.ordermanager.quartzjob; import java.util.ArrayList;

上门洗车APP --- Android客户端开发 之 网络框架封装(二)

上门洗车APP --- Android客户端开发 之 网络框架封装(二) 前几篇博文中给大家介绍了一下APP中的基本业务及开发本项目使用的网络架构: 上门洗车APP --- Android客户端开发 前言及业务简介 上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一) 本篇接着给大家分享网络框架封装,相信感兴趣的朋友已经对上篇博文中的一些开源项目有了些许了解,这里继续为大家介绍关于GenericDataManager 通用网络管理类中的 dataRequest 方法 和

android 开发 - 使用okhttp框架封装的开发框架

概述 在android开发中经常要访问网络,目前最流行的网络访问框架就是Okhttp了,然而我们在具体使用时,往往仍然需要二次封装.我使用Builder设计模式进行了封装形成oknet开源库. 介绍 oknet是一套基于okhttp的android网络http框架,封装了请求参数处理,日志打印. Github地址 https://github.com/vir56k/oknet 特性 1.简洁的语法 2.支持自定义处理 message code 不等于0 的情形 3.支持文件上传 4.完整清晰的l

【SSH进阶之路】一步步重构MVC实现Struts框架——封装业务逻辑和跳转路径(四)

目录: [SSH进阶之路]Struts基本原理 + 实现简单登录(二) [SSH进阶之路]一步步重构MVC实现Struts框架--从一个简单MVC开始(三) [SSH进阶之路]一步步重构MVC实现Struts框架--封装业务逻辑和跳转路径(四) [SSH进阶之路]一步步重构MVC实现Struts框架--彻底去掉逻辑判断(五) [SSH进阶之路]一步步重构MVC实现Struts框架--完善转向页面,大功告成(六) Struts的第二篇博客[SSH进阶之路]Struts基本原理 + 实现简单登录(二

Retrofit源码分析以及MVP框架封装使用

阅读此文前请先阅读Retrofit+okhttp网络框架介绍 从上文中我们已经了解通过如下代码即可得到返回给我们call 以及 response对象,今天我们通过源码来分析这个过程是如何实现的. /** * 获取天气数据 * @param cityname * @param key * @return */ @GET("/weather/index") Call<WeatherData> getWeatherData(@Query("format") S

上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二)

上门洗车APP --- Androidclient开发 之 网络框架封装介绍(二) 前几篇博文中给大家介绍了一下APP中的基本业务及开发本项目使用的网络架构: 上门洗车APP --- Androidclient开发 前言及业务简单介绍 上门洗车APP --- Androidclient开发 之 网络框架封装介绍(一) 本篇接着给大家分享网络框架封装.相信感兴趣的朋友已经对上篇博文中的一些开源项目有了些许了解.这里继续为大家介绍关于GenericDataManager 通用网络管理类中的 data

selenium之多线程启动grid分布式测试框架封装(四)

九.工具类,启动所有远程服务的浏览器 在utils包中创建java类:LaunchAllRemoteBrowsers package com.lingfeng.utils; import java.net.MalformedURLException; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Map.Entry; import java.util.Set;

selenium之多线程启动grid分布式测试框架封装(一)

一.设计思路 在国内市场上,IE内核的浏览器占据了绝大部分的市场份额,那么此次框架封装将进行IE系列的浏览器进行多线程并发执行分布式测试的封装. 运行时主进程与多线程关系如下: 运行线程通俗的说就是我们用来跑用例的线程,其中<监控线程1>用来监控<运行线程1>的运行状态. 二.前期准备 1.创建一个java工程. 2.导入selenium.dom4j.log4j相关jar包 可到网上自行寻找jar包,也可到我云盘中下载,地址: selenium jar 以及源码jar :http:

上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一)

上门洗车APP --- Android客户端开发 之 网络框架封装介绍(一) 上篇文章中给大家简单介绍了一些业务,上门洗车APP --- Android客户端开发 前言及业务简介,本篇文章给大家介绍下网络框架,之前也了解过一些开源网络通讯架构,也大概看了一部分源码,比如Afinal.Volley.AndBase.Android-async-http等,感觉各自都有各自的优劣,自己也曾封装过一些简单的网络架构,感觉有很多地方需要注意和优化,这里就不贴出来献丑了,感兴趣的朋友可以去查阅学习上面所说的

优雅地实现Android主流图片加载框架封装,可无侵入切换框架

项目开发中,往往会随着需求的改变而切换到其它图片加载框架上去.如果最初代码设计的耦合度太高,那么恭喜你,成功入坑了.至今无法忘却整个项目一行行去复制粘贴被支配的恐惧.:) 那么是否存在一种方式 能够一劳永逸地解决这个痛点呢?下面我们来分析一下图片加载框架面对的现状和解决思路. 问题现状 一个优秀的框架一般在代码设计的时候已经封装很不错了,对于开发者而言框架的使用也是很方便,但是为什么说我们往往还要去做这方面的框架封装呢?原因很简单,实际项目开发中,我们不得不面对着日新月异的需求变化,想要在这个变