个人认为 jQuery 很优秀,插件机制也很不错。为什么一定要用面向对象的思想去强调不属于面向对象语言范畴的 JavaScript 呢?面向对象真的有那么完美么?一切从简,提高性能的同时又可以方便扩展不好么?
呃,速度的夸下 jQuery, 嘿嘿。
1. 背景
1.1. jQuery 简介
1.1.1. 简介
jQuery 是一套跨浏览器的 JavaScript 框架,强化 HTML 与 JavaScript 之间的操作。由 John Resig 在2006年1月的 BarCamp NYC 上发布。目前全球访问前10000名的网站中已有超过
41%的网站正在使用 jQuery, 其中包括 Google, Digg 以及 WordPress,它是目前最受欢迎的JavaScript 框架。其宗旨是—— WRITE LESS, DO MORE。除此之外,它的文档很完善,而且各种应
用的说明也很详细,同时还有许多成熟的插件可供选择。
1.1.2. 特点
Ø 跨浏览器的 DOM 元素选择
Ø DOM 遍历及修改(包括对 CSS 1-3 的支持)
Ø 事件
Ø CSS 操作
Ø 特效和动画
Ø Ajax
Ø 可扩展性
Ø 轻量级
Ø JavaScript 插件
Ø 常用工具
1.2. jQuery 插件简介
1.2.1. 简介
jQuery 除了提供简单有效的 DOM, 元素和各种脚本的管理方法外,还提供了添加方法和额外功能到核心模块的机制。由于这种机制,我们能够创建新的代码,然后在任何时候添加到我们应用中需要使用到的地方。这样就可获取一个可重复使用的资源,在其他页面或项目中,我们就不需要再去编写它。使用这种结构创建的附加方法和功能将可作为插件进行捆绑。通过插件开发者自己或其他人以某种方式发布后,它们便可在新的 jQuery 脚本中被使用。
1.2.2. 特点
e.g. $(“.className”).css(“font-size”, “22px”).table().dialog();
打包一个普通的方法到 jQuery 插件中,通常会更方便:这将允许你在短时间内简单的整合插件到任何项目中。
创建并使用插件,可使你更加专注于重点,而不是细节。允许对固定的常量进行单独指定和扩展。
开发者:基于成熟稳定的插件机制,不需关注整个架构,只需实现所需方法和事件。
使用者:一句代码就可实现你所需的。
命名空间和作用域在 JavaScript 中是两个非常重要的特性。创建 jQuery 插件意味着功能将被逻辑的加载,只要你熟练,可减少作用域或命名空间的冲突概率。
- 强大的社区支持
- 大量的各类插件和完善的文档
- 不需额外进行管理,避免管理不适导致内存泄露等问题
1.2.3. 工作原理
方法被添加到库中后,当需要使用时,可通过 jQuery 对象中 ‘this’ 对象进行调用。 DOM 节点元素可根据需求被进行相应的管理,按照需要,其方法可返回 ‘this’, 继续进行链式。
2. 插件架构体系
2.1. 架构体系要点
Options, Events, Methods 是前端开发中重要的三个方面,在编写任何一个插件时,都应从这三方面进行设计和考虑。 jQuery 的插件机制不但从 Options, Events, Methods 为开发人员做了考虑,而且在整个插件的管理上也做了相应的维护和管理,完全不需要从零开始设计架构,验证架构,遭受新架构不合理所带来的损失。因此针对一个基于 jQuery 的插件,只需要设计定义好 Options, Events, Methods,便可交给编码人员进行编码。
2.1.1. 整体架构
(function( $ ){
var myPluginObj = {
this._defaults = {};
this.settings = {};
init: function () {};
destroy: function () {};
};
$.fn.myPlugin = function (options) {
return this.each(function () {
});
};
})( jQuery );
2.1.2. Options
复杂和一些自定义的插件会提供很多的 options。此方面的最佳实践为:插件本身带有默认的设置值,当调用的时候通过 $.extend 进行options 和 settings 的扩展。示例如下:
$.extend(settings, options);
2.1.3. Methods
可把插件所需要使用的到方法收集到一个对象中,然后通过指定的参数进行调用。这样对方法的扩展也就演化为对对象的扩展。示例如下:
var methods = {
init : function (options) {},
show : function ( ) {},
hide : function ( ) { },
update : function (content) {}
};
return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
2.1.4. Events
事件需和某一元素进行绑定,在满足特定的情况下被触发。可使用 jQuery 中的 bind 进行绑定,它允许使用命名空间对事件进行绑定。在插件中使用命名空间进行事件绑定是一个很好的实践。这样一来,当你需要 unbind 的时候,就不会被同类型的其他事件所干扰,错误的解除绑定。示例如下:
$(“.className”).bind(“resize.tab”, method);
$(“.className”).unbind(“.tab”);
2.1.5. Data
通常在插件开发的时候,当所给元素被某个插件初始化后,它的一些状态或验证需要被维护住。用 jQuery 中的 data 来为每一个元素维护自己的特有变量同样是一种很棒的实践。示例如下:
// target: 元素本身
// inst: 元素本身需维护的数据
$.data(target, MY_PLUGIN_NAME, inst);
2.1.6. Theme
同一个页面中的同一种插件,可能会要求有两种以上不同的皮肤,而 jQuery 中只允许一种。本框架解决方案如下:
在 _defaults 中存在一个 styleClass 对象,记录需要用到的 className,如:"closeIcon": "tabs-close-icon"。对应不同的主题,经处理后,在调用 styleClass.className 时会返回相应的 className-theme,如:当 theme 为 red 时,调用 styleClass.className 时,将返回 tabs-close-icon-red。
因此当需要两种以上皮肤时,根据指定的 theme 编写不同 class 的样式即可。
2.2. 插件开发步骤
2.2.1. 需求
2.2.2. 插件设计
- 确定可配置项,设计出 Options
- 确定每一个元素需绑定的事件,设计出 Events
- 分解需要用到方法的可共用的方法,分析设计出 methods 对象
2.2.3. 插件编码
根据现有框架体系,按照插件设计结果分别进行 Options, Events, methods 的相应套用,搭建出需开发插件的整体框架,然后便可进行细节编码。
2.3. 可扩展性解决方案
- jQuery 1.5 支持子类,继承
- 对方法的扩展等同于对 object 的扩展,参见 2.1.3
- 对事件扩展可使用 bind
- 对 options 扩展可结合 $.extend 并相应的修改 settings/_defaults
2.4. 扩展阅读——JavaScriptMVC
2.4.1. 定义:
JavaScriptMVC 是一个使用 jQuery 进行中型或大型前端项目开发的开源框架,其更加专注于代码的质量、性能和可维护性。
2.4.2. 特点
- 单元测试(尤其是自动化与功能性的测试)
- 文档生成
- 分解代码到经逻辑组织的文件中
- 合理压缩及合并 JavaScript 文件
- 使用和组织前端模板
- 制作插件具备自动清理、组织性强、可扩展性高的特点
- 错误报告
3. 总结
目前全球访问前10000名的网站中已有超过41%的网站正在使用 jQuery, 其中包括 Google, Digg 以及 WordPress,而其插件的开发也越来越普及和通用。这是为什么呢?经过5年的时间洗礼,它依然经久不衰,反而越来越火,这又是为什么呢?
面对 jQuery,其易用性、浏览器兼容性等各方面的优势无话可说。面对 jQuery 插件,它不仅拥有完善的社区和文档支持,众多的各类插件,而且在编写 jQuery 插件时允许开发人员创建大量额外的库,抽象最具技术含量和有用的功能进行重用,最终可节约开发人员的时间并使开发更加有效。
因此我们显而易见的便可看到 jQuery 插件的优势,它不仅能使我们更加容易的编写插件,专注于技术细节层面,而且还能使我们的代码更加健壮。
分享到:
相关推荐
在学习jQuery插件开发时,查看和分析现有的开源插件源码是很好的学习途径。标签中提到的"源码"意味着我们可以从已有的插件中获取灵感和技巧。此外,利用开发工具如Chrome DevTools可以帮助我们调试和理解插件的运行...
以"jquery插件库-jquery抽奖插件"为例,这个插件可能包含一个旋转盘的HTML结构,结合CSS3的transform属性实现3D旋转效果。JavaScript部分则通过jQuery选择器获取元素,设置动画时间和旋转角度,然后绑定click事件,...
它包含了一些用于JavaScript开发的工具,安装特定的jQuery插件后,WTP可以为jQuery提供良好的开发环境。 6. **安装过程**:通常,安装jQuery插件需要通过Eclipse的“Help” -> “Eclipse Marketplace”或“Install ...
### 握手jQuery插件开发 开发一个jQuery插件通常涉及以下步骤: 1. **封装函数**:定义一个函数,接受必要的参数,并在函数内部实现功能。 2. **扩展jQuery对象**:通过`$.fn.extend`将函数添加到jQuery原型链,使...
- "jquery插件":表明该功能是通过jQuery实现的,利用jQuery的简洁API和广泛的浏览器兼容性,提高开发效率。 - "头像上传":这是应用的具体场景,即用户选择或裁剪图片作为自己的头像。 - "用户头像":进一步强调了...
在网页开发中,jQuery插件是一种扩展了jQuery库功能的JavaScript代码,使得开发者可以更轻松地实现复杂的功能,如动画效果、交互控件等。本资源包含十套常用的精美jQuery插件,涵盖了多个实用场景,下面将逐一介绍。...
【标题】中的“[精华]网站论坛源码C# Jquery”揭示了这是一个关于网站论坛开发的项目,采用的核心技术是C#后端语言和Jquery前端库。...同时,自定义Jquery插件的实践,有助于深入掌握Jquery API并锻炼前端开发技能。
在本资源中,我们主要关注的是使用jQuery插件来创建具有Mac OSX Lion风格的滚动条。...jQuery是一个广泛使用的...通过学习和使用这个插件,你可以提升对jQuery插件开发的理解,同时也能为你的网站增添独特的用户体验。
《深入理解jQuery插件开发——以jBox为例》 在Web开发中,jQuery以其简洁的API和强大的功能,成为JavaScript库中的热门选择。而jQuery插件则是jQuery生态中不可或缺的一部分,它们扩展了jQuery的功能,使得开发者...
jQuery插件开发是利用jQuery核心功能进行扩展,以实现更高级、特定的功能或组件。本教程将深入讲解如何开发jQuery插件,帮助你提升网页交互体验,创造出美观而实用的UI元素。 首先,我们了解jQuery插件的基本结构。...
10. **D3.js**:虽然不是直接的jQuery插件,但D3库允许开发者直接操作DOM来创建复杂的可视化,可与jQuery结合使用。 每个插件都有其特点和适用场景,选择时应考虑性能、功能需求、学习曲线以及项目的兼容性要求。...
本篇文章将深入探讨如何使用jQuery插件创建滑动条,并分析给定的文件资源。 首先,我们有三个文件: 1. `jquery-plugin.html` - 这是HTML页面,包含用于展示滑动条的结构和必要的jQuery代码。 2. `jquery-1.2.6.js`...
【jQuery插件开发基础】 在开发jQuery插件之前,我们需要对jQuery本身有一定的了解。jQuery是一个JavaScript库,以其简洁的API和强大的DOM操作能力而受到广大Web开发者喜爱。它简化了DOM遍历、事件处理、动画制作和...
无论是为了提升网站的用户体验,还是为了丰富你的开发工具箱,深入理解并掌握这些jQuery插件都是十分有益的。在实践中不断探索和学习,你会发现jQuery的强大和灵活性,以及它对前端开发的巨大影响力。
jQuery插件库是Web开发中一个非常重要的资源集合,它为开发者提供了丰富的功能扩展,使得使用JavaScript库jQuery进行网页交互和动态效果实现变得更加便捷。jQuery以其简洁的API和强大的功能深受开发者喜爱,而jQuery...