jQuery框架学习

  之前也看过jquery库源码,网上也有很多对于jquery框架的分析教程,但是最近又想花点时间重新学习。jquery问世以来受到了广大的前端开发者的青睐,对于很多前端开发者来说,走上前端的道路不是从写原生javascript开始而是基本上都是从写jquery开始的,甚至对于后端开发者来说,对于他们来说jquery也能轻松上手。那么jquery为什么能这么受欢迎呢,我个人见解,

   首先,jquery封装了许多操作dom的方法和一些工具方法,对于各浏览器兼容性做到了完美的兼容,对于jquery 2.0之前可以兼容到IE6浏览器。开发者不需要在为了浏览器的兼容性写上几十行的代码,使用jquery只需一行代码。对于那个PC端盛行的年代,jquery完美的解决了广大前端开发者的苦恼。

  其次,jquery的框架设计,无new构建方式,以及友好的链式调用,使jquery用起来非常的简洁。

下面介绍jquery的无new构建:

  通常我们创建js类使用原型和构造函数的形式:

function jQuery (){
  ......
}
jQuery.prototype = {
	constructor: jQuery,
	init: function (){

	},
	get: function (){

	}
	......
}

var $ = new jQuery()
$.get();

  这里我们将属性定义在构造函数中,将方法定义在原型上。我们要调用原型上的get方法,首先要先实例化构造函数new jQuery,然后调用原型上的方法,显然jquery不是这样操作的。我们在平常写jquery的时候是链式调用的根本没有用到new关键字。那么我们先来看看jquery源码中的写法:

var rootjQuery;
var jQuery = function( selector, context ) {
	return new jQuery.fn.init( selector, context, rootjQuery );
},

jQuery.fn = jQuery.prototype = {  constructor: jQuery,
  init: function( selector, context, rootjQuery ) {
	......
	return this;
  }
}

jQuery.fn.init.prototype = jQuery.fn;

rootjQuery = jQuery(document);

  以上为jquery实现无new构造的核心代码,下面我们来分析一下这段源码。首先第一段定义了jQuery的构造函数,这个构造函数返回了一个对象new jQuery.fn.init( selector, context, rootjQuery ),这个对象对应的类是jquery.prototype.init,那么init原型上并没有方法,如果这时我们直接调动jQuery上的原型方法会直接报错。这里通过将jQuery的原型,重新赋值给jQuery.fn.init的prototype上,这样jQuery的构造函数就是jquery.fn.init,jQuery原型上的方法就可以直接调用。那么链式调动是怎样实现的呢,只需要在每个调用的函数加上return this,将jquery.fun.init对象返回即可。

之前看这段代码感觉比较混乱,但是现在看起来只需要借助原型上的init方法这点巧妙的改动就可以实现jquery这种无new构建。

目前前端框架盛行,很多新入行的前端同学都是从前端框架学起,这些MVVM框架,不需要开发者了解dom原理,通过数据驱动,改变虚拟dom,虚拟dom和文档,实际dom进行比较差异,从而实现页面的dom更新。对于入行来说无论是从写原生js,还是jquery,还是前端框架开始来说都是可以的,但是对于入行以后来说一定要学习jquery这种dom操作库,然后在学习原生的实现方法,这样才能真正的了解dom原理。以后无论采用哪种技术栈,再出现问题时,你才不会一脸迷茫不知所措。最后前端框架在写单页应用,并且dom操作过多的页面时,这种数据绑定的实现方法确实具有很大优势,但是她并不一定适合所有的应用场景,对于一些大公司来说,一些底层的老的业务,由于迁移成本较大,且为了友好的用户体验,还需要兼容低版本的浏览器,还是要使用jquery、zepto等操作dom的库。

原文地址:https://www.cnblogs.com/leejay6567/p/9313384.html

时间: 2024-11-08 11:28:39

jQuery框架学习的相关文章

JQuery EasyUI学习框架

前言 前端技术,新项目的开发拟使用EasyUI框架(基于EasyUI丰富UI组件库),项目负责人的提示EasyUI分配给我这个任务.发展前,我需要这对于一个新手EasyUI框架学习一些基本的入门.记录在学习过程中的问题,在他们自己的问题和实事后. 关于EasyUI EasyUI框架式基于JQuery的,使用它帮助我们快捷的构建web网页. EasyUI框架是一个简单.易用.强大的轻量级web前端javascript框架.现阶段来说.在开发web项目时,前端的开发我们更喜欢使用JQuery取代原生

JQuery EasyUI框架学习

前言 新项目的开发前端技术打算采用EasyUI框架(基于EasyUI较为丰富的UI组件库),项目组长将前端EasyUI这块的任务分配给了我.在进行开发之前,需要我这菜鸟对EasyUI框架进行一些基础的入门学习.之后会在学习的过程中将自己遇到的问题和有用的东西记录下来. 关于EasyUI EasyUI框架式基于JQuery的,使用它帮助我们快捷的构建web网页.EasyUI框架是一个简单.易用.强大的轻量级web前端javascript框架.现阶段来说,在开发web项目时,前端的开发我们更喜欢使用

Java-SSI框架学习

框架简介: 相信大家对于mvc的三层架构已经灰常熟悉了,在这就不细讲了,个人感觉ssi的框架结构还是比较典型的mvc三层架构,还是比较容易上手的.关于这块的入门我想特别感谢下FrankHui童鞋,在他的帮助下,我才能比较快滴熟悉了这个架构,对我学习ssi的框架还是很有帮助滴.ssi的框架主要是由struts2,spring以及ibatis组成,他们负责各层之间的交互与协作,从而实现整个web端的功能实现与整合.Struts目前主要负责数据传递和控制方面,spring则依靠其强大的依赖注入技术实现

第五节:JQuery框架源码简析(1)

(转自老惠的博客) JQuery是一个应用广泛.非常优秀的JavaScript框架,其代码简洁而优雅,有很多值得我们学习的地方.这里仅仅对其代码结构做一个简单的分析,方便大家的理解和学习. 我们进行分析.分解的基准版本是jQuery1.7.1. 开始之前,请准备好以下素材和工具: jQuery源代码:jquery-1.7.1.js 文本编辑器:EditPlus,或者你喜欢的 参考书:<jQuery高级编程>.<jQuery技术内幕:深入解析jQuery架构设计与实现原理>.<

MEAN框架学习笔记

MEAN框架学习笔记 MEAN开发框架的资料非常少.基本的资料还是来自于learn.mean.io站点上的介绍. 于是抱着一种零基础学习的心态,在了解的过程中,通过翻译加上理解将MEAN框架一点点消化而且吸收,一步一步来.慢慢地记录我学习MEAN的点点滴滴. 1.MEAN是可以管理用户的 通过MEAN的mean-cli来管理用户.命令是: $ mean user <email> $ mean user <email> --addRole <role>; $ mean u

jQuery Moblie 学习(一)

1.jQTouch jQTouch与jQuery Moblie十分相似,也是一个jQuery插件,同样也支持HTML页面标签驱动,实现移动设备视图切换效果.不同的是它是专为WebKit内核的浏览器打造的,可以借助该浏览器的专有功能对页面进行渲染:此外,开发时所需的代码量更少.如果开发的项目中,目标用户群都使用WebKit内核的浏览器,可以考虑此框架. 2.Sencha TouchSencha Touch是一套基于ExtJS开发的插件库.也是针对于WebKit内核的浏览器打造的,不同的是它的开发语

Web前端框架学习成本比较及学习方法

就项目中自己用过的前端框架的学习成本比较与学习心得分享 刚工作时间不长只用过这几个框架下面是难易程度比较: 不论哪个web前端框架, 究其本质都是把页面的数据传递给后台服务器语言(如java)进行处理, 后台取出的数据把它显示在页面上不就这么简单么; 弄清楚这其中的提交方式(特别点就ajax方式), 参数传递, 事件机制然后在看懂API; 那么不管用什么web框架开发都是很顺心的, API在手通吃所有;  前提是一定要看懂API , 总是去问别人不会有多大进步的, 自己多看API文档; 学习成本

web框架学习

目录 web框架学习 HTTP协议(超文本协议) 四大特性 数据格式 请求方式 纯手撸web框架 简单c/s连接 稍微复杂web框架 基于wsgiref 客户端通过访问服务器获取字典 动静态页面 客户端通过访问服务器获取当前时间 客户端通过访问服务器获取数据库数据 python三大主流web框架 web框架学习 HTTP协议(超文本协议) 四大特性 基于TCP/IP之上作用于应用层 基于请求响应 发是请求,给是响应 无状态 不保存用户状态,连一次就给忘了 无连接 eg:one night lov

windows下scrapy框架学习笔记—&#39;scrapy&#39; 不是内部或外部命令

最近几天在深入的学习scrapy框架,但是装完各种需要的基础包之后却发现scrapy命令在别的路径下都用不了,我一开始是把python安装在F:\Python路径下的,安装了scrapy后它默认都会安装在这个路径下,scrapy在路径F:\Python\Scripts路径下,我的scrapy命令只能在此路径下用,因此创建什么工程也都只能在此文件下. 想了一下它的工作原理:它在F:\Python\Scripts路径下,就会在Scripts文件下存在一个scrapy批处理文件,那么在DOS下想要命令