从零实现一个简易jQuery框架之一—jQuery框架概述

时间:2022-10-09 09:47:51

我们知道,不管学习任何一门框架,了解其设计的理念、目的、总体的结构及核心特性对我们使用和后续的深入理解框架都是有很大的帮助的。因此在这里先梳理一下本人对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框架概述的更多相关文章

  1. 从零实现一个简易的jQuery框架之二—核心思路详解

    如何读源码 jQuery整体框架甚是复杂,也不易读懂.但是若想要在前端的路上走得更远.更好,研究分析前端的框架无疑是进阶路上必经之路.但是庞大的源码往往让我们不知道从何处开始下手.在很长的时间里我也被 ...

  2. &lbrack;ASP&period;NET Core 3框架揭秘&rsqb; 依赖注入&lbrack;4&rsqb;:一个Mini版的依赖注入框架

    在前面的章节中,我们从纯理论的角度对依赖注入进行了深入论述,我们接下来会对.NET Core依赖注入框架进行单独介绍.为了让读者朋友能够更好地理解.NET Core依赖注入框架的设计与实现,我们按照类 ...

  3. 使用Phalcon框架开发一个简易的博客系统

    使用Phalcon PHP框架开发一个简易的博客系统(类似于CMS) 最近在做Phalcon(Phalcon在英文中指的是鸟类中飞得最快的那一个物种,由于是高性能框架,借用了这个词)相关的项目,由于刚 ...

  4. 【JavaScript框架封装】自己动手封装一个涵盖JQuery基本功能的框架及核心源码分享(单文件版本)

    整个封装过程及阅读JQuery源码的过程基本上持续了一个月吧,最终实现了一个大概30%的JQuery功能的框架版本,但是里面涉及的知识点也是非常多的,总共的代码加上相关的注释大概在3000行左右吧,但 ...

  5. jquery&plus;flask&plus;keras&plus;nsfw快速搭建一个简易鉴黄工具

    1. demo 地址:http://www.huchengchun.com:8127/porn_classification 接口说明: 1. http://www.huchengchun.com:8 ...

  6. 使用MVVM框架avalon&period;js实现一个简易日历

    最近在做公司内部的运营管理系统,因为与日历密切相关,同时无需触发条件直接显示在页面上,所以针对这样的功能场景,我就用avalon快速实现了一个简易日历,毕竟也是第一次造日历这种*,所以这里记录下我当 ...

  7. 依赖注入&lbrack;5&rsqb;&colon; 创建一个简易版的DI框架&lbrack;下篇&rsqb;

    为了让读者朋友们能够对.NET Core DI框架的实现原理具有一个深刻而认识,我们采用与之类似的设计构架了一个名为Cat的DI框架.在<依赖注入[4]: 创建一个简易版的DI框架[上篇]&gt ...

  8. 依赖注入&lbrack;4&rsqb;&colon; 创建一个简易版的DI框架&lbrack;上篇&rsqb;

    本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章(<控制反转>.<基于IoC的设计模式>和< 依赖注入模式>)从纯理论的角度 ...

  9. &period;NET CORE学习笔记系列&lpar;2&rpar;——依赖注入&lbrack;4&rsqb;&colon; 创建一个简易版的DI框架&lbrack;上篇&rsqb;

    原文https://www.cnblogs.com/artech/p/net-core-di-04.html 本系列文章旨在剖析.NET Core的依赖注入框架的实现原理,到目前为止我们通过三篇文章从 ...

随机推荐

  1. mongodb架构篇

    一.  复制集 Replica set的架构 Replica set的部署 主从操作日志 在local数据库里面:db.oplog.rs.find() 日志的基本信息:db.printReplicat ...

  2. AngularJs Cookies 操作

    $cookiesProvider 使用$cookiesProvider改变$cookies服务的默认行为. 默认属性 path:字符串,cookies只在这个路径及其子路径可用.默认情况下,这个将会是 ...

  3. web应用程序 ---- 日志系统的设计

    最近在做一个小的项目,是web的应用程序,最近也有点时间,把日志管理来简单的说说. 日志,就是需要记录一些自己感兴趣的信息,把它保存起来,具体保存在哪里?保存多长时间?这些要求都是根据不同的项目需求而 ...

  4. vue开发资料

    http://cn.vuejs.org/v2/guide/ (vue框架手册)https://router.vuejs.org/zh-cn/ (vue框架路由手册)https://github.com ...

  5. WPF中静态引用资源与动态引用资源的区别

    WPF中静态引用资源与动态引用资源的区别   WPF中引用资源分为静态引用与动态引用,两者的区别在哪里呢?我们通过一个小的例子来理解. 点击“Update”按钮,第2个按钮的文字会变成“更上一层楼”, ...

  6. 2&period;裴波那契(Fibonacci)数列

    裴波那契(Fibonacci)数列 f(n)= ⎧⎩⎨0,1,f(n−1)+f(n−2),n =0n =1n>1 求裴波那契数列的第n项.(题目来自剑指offer) 1.递归解法,效率很低的解法 ...

  7. 使用 dva 如何配置异步加载路由组件

    来源:https://www.jianshu.com/p/69694013e36b----------------------------------------------------- 普通方式 ...

  8. placeholder是H5的一个新属性,但是在IE9以下是不支持的

    $(function() { // 如果不支持placeholder,用jQuery来完成 if(!isSupportPlaceholder()) { // 遍历所有input对象, 除了密码框 $( ...

  9. 10&period; js截取最后一个斜杠后面的字符串

    var startIndex = filePath.lastIndexOf("\\"); endIndex = filePath.lastIndexOf("." ...

  10. Maven学习(六)maven使用中遇到的坑

    坑1:使用eclipse构建web项目时,pom.xml中 <packaging>war</packaging> 报错 eclipse给出的报错信息提示是:web.xml is ...