从零实现一个简易jQuery框架之一—jQuery框架概述
我们知道,不管学习任何一门框架,了解其设计的理念、目的、总体的结构及核心特性对我们使用和后续的深入理解框架都是有很大的帮助的。因此在这里先梳理一下本人对jQuery框架的一些理解。
设计目的(为什么要设计这个框架)
jQuery可以分解为JavaScript + Query。即JavaScript查询的意思。所以jQuery的核心目标就是JavaScript查询,通过选择DOM元素再对DOM元素进行操作。并解决了跨浏览器兼容问题,使DOM操作趋于统一。
如何实现
选择DOM是为了对其进行进一步的操作。这些操作主要包括以下几个部分
- 属性操作
如class,style,attribute等
- 元素操作
如元素的创建、添加、移动、复制、删除等
- 内容操作
通过innerHTML等获取或设置元素的内容
- 样式操作
如对元素的width、height、position、display等样式进行获取或修改
- 事件操作
Event是用户与浏览器进行动态交互的重要模块。如添加、删除事件等
- 通信操作
Ajax技术用于客户端和服务器端进行异步通信,实现页面的局部刷新。
jQuery 核心特性
1、jQuery()或$()
jQuery把所有的操作都包含在一个jQuery()函数中,提供了一个统一的操作入口jQuery()或$()。
jQuery框架的基础是查询,即查询文档元素对象。因此我们可以认为jQuery函数对象就是一个选择器,并在此基础上构建和运行查询过滤器。
需要注意的是:jQuery对象的方法都是针对DOM元素对象进行操作的。
2、jQuery构造函数
jQuery把所有操作都包装在一个jQuery()函数中,形成了统一(也是唯一)的操作入口。能够解析任意的数据类型,但是能够解析的参数包括以下四种类型
- $(expression,context)
expression可以是一个ID,DOM元素名,CSS表达式,XPath表达式。
context表示查找的上下文环境,若不写,则表示在整个document中查找
- $(html)
html表示一个HTML结构字符串,此时jQuery将创建一个对应结构的html文档片段。
$("div").append($("<p>hello world</p>"))
- jQuery(element)
element表示一个DOM对象或集合,把DOM元素或集合当中的DOM元素转换为jQuery对象。
$(document).ready(function () {
alert("hello world");
})
//将document文档对象转换为jQuery对象,然后调用ready方法,ready处理函数为document绑定一个事件,当页面初始化之后,弹出弹出框。
- $(fn)
fn是一个处理函数,由于$(document).ready()使用频繁,所以jQuery使用$()来代替。表示在DOM元素解析完成后就执行代码
3、链式写法
核心就是通过return语句返回jQuery对象。
4、选择器
jQuery选择器支持ID,TagName,CSS1-CSS3的表达式(即支持用CSS选择器来选择元素)。
只需要将字符串传入jQuery()构造函数,就可以选择不同的DOM对象,然后处理成jQuery对象返回。
5、扩展性
为什么jQuery需要扩展性?
简单的说就是为了满足不同的开发需求。为了保证jQuery的通用性并同时保证代码简洁性(就是体积越小越好),jQuery仅实现了基础的方法和函数。但为了满足不同开发需求,留下了易于扩展的方法和接口。
从零实现一个简易jQuery框架之一—jQuery框架概述的更多相关文章
- 从零实现一个简易的jQuery框架之二—核心思路详解
如何读源码 jQuery整体框架甚是复杂,也不易读懂.但是若想要在前端的路上走得更远.更好,研究分析前端的框架无疑是进阶路上必经之路.但是庞大的源码往往让我们不知道从何处开始下手.在很长的时间里我也被 ...
- [ASP.NET Core 3框架揭秘] 依赖注入[4]:一个Mini版的依赖注入框架
在前面的章节中,我们从纯理论的角度对依赖注入进行了深入论述,我们接下来会对.NET Core依赖注入框架进行单独介绍.为了让读者朋友能够更好地理解.NET Core依赖注入框架的设计与实现,我们按照类 ...
- 使用Phalcon框架开发一个简易的博客系统
使用Phalcon PHP框架开发一个简易的博客系统(类似于CMS) 最近在做Phalcon(Phalcon在英文中指的是鸟类中飞得最快的那一个物种,由于是高性能框架,借用了这个词)相关的项目,由于刚 ...
- 【JavaScript框架封装】自己动手封装一个涵盖JQuery基本功能的框架及核心源码分享(单文件版本)
整个封装过程及阅读JQuery源码的过程基本上持续了一个月吧,最终实现了一个大概30%的JQuery功能的框架版本,但是里面涉及的知识点也是非常多的,总共的代码加上相关的注释大概在3000行左右吧,但 ...
- jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具
1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...
- 使用MVVM框架avalon.js实现一个简易日历
最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简易日历,毕竟也是第一次造日历这种轮子,所以这里记录下我当 ...
- 依赖注入[5]: 创建一个简易版的DI框架[下篇]
为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在<依赖注入[4]: 创建一个简易版的DI框架[上篇]> ...
- 依赖注入[4]: 创建一个简易版的DI框架[上篇]
本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章(<控制反转>.<基于IoC的设计模式>和< 依赖注入模式>)从纯理论的角度 ...
- .NET CORE学习笔记系列(2)——依赖注入[4]: 创建一个简易版的DI框架[上篇]
原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从 ...
随机推荐
- Atcoder Grand Contest 031C(构造,思维,异或,DFS)
#include<bits/stdc++.h>using namespace std;int n,a,b,sum;void dfs(int x,int y,int ban){ if( ...
- 1235: 入学考试[DP]
1235: 入学考试 [DP] 时间限制: 1 Sec 内存限制: 128 MB 提交: 37 解决: 12 统计 题目描述 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近 ...
- 连续bezier曲线的实现
需求场景 一系列的坐标点,划出一条平滑的曲线 3次Bezier曲线 基本上大部分绘图工具都实现了3次Bezier曲线,4个点确定一条3次Bezier曲线.以html5中的canvas为例 let ct ...
- oracle重新编译所有invalid objects
点第一个,按住shift键点最后一个,右键recompile就OK了
- requests利用selenium,代理Ip,云打码,验证码抠图操作 爬取搜狗微信公众号内容
爬取思路,爬取搜狗微信公众号内容,爬取第一层url时请求太快出现验证码,我这里用的蘑菇云代理,并在程序中我判断什么情况下是否+代理,做到合理运用代理ip.爬取第二层url时验证码出现次数更严重(和第一 ...
- [Swift实际操作]九、完整实例-(4)在项目中使用CocoaPod管理类库和插件
本文将为你演示,如何使用CocoaPod第三方类库管理工具,在项目中安装未来需要使用的类库.首先创建一份文本文件.可以使用一个脚本创建文件,你可以采用自己的方式是创建一份文本文件,接着在文件名称上点击 ...
- 启动Tomcat报错
如果发现引入jar包有问题时,看jar包是否损坏,变成了0kb.如果是这样,在网上试尽解决办法也是有问题的. 一般Tomcat启动报错,要引入这两个jar包.
- BCH code
简单介绍 若循环码的生成多项式具有如下形式\(g(x)=LCM[m_{1}(x),m_{3}(x)..m_{2t-1}(x)]\) 其中LCM表示最小公倍式,t为纠错个数,\(m_{i}(x)\)为素 ...
- C++_基础5-内存模型
C++为在内存中存储数据提供了多种选择: 可以选择数据保留在内存中的时间长度(存储持续性): 程序的哪一部分可以访问数据(作用域和链接): 可以使用new来动态地分配内存:定位new运算符提供了这种技 ...
- Fliptile (dfs+二进制压缩)
Farmer John knows that an intellectually satisfied cow is a happy cow who will give more milk. He ha ...