`
buliedian
  • 浏览: 1228197 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

jQuery 插件开发分析

阅读更多

个人认为 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 风格保持一致
  • 重用性
  • 移植性

打包一个普通的方法到 jQuery 插件中,通常会更方便:这将允许你在短时间内简单的整合插件到任何项目中。

  • 抽象化

创建并使用插件,可使你更加专注于重点,而不是细节。允许对固定的常量进行单独指定和扩展。

  • 节约时间

开发者:基于成熟稳定的插件机制,不需关注整个架构,只需实现所需方法和事件。

使用者:一句代码就可实现你所需的。

  • Containment(遏制)

命名空间和作用域在 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. 整体架构

jQuery plugin architecture


(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 插件的优势,它不仅能使我们更加容易的编写插件,专注于技术细节层面,而且还能使我们的代码更加健壮。



本文是使用 B3log SoloVanessa 进行同步发布的
分享到:
评论

相关推荐

    JQuery插件开发 + 插件

    在学习jQuery插件开发时,查看和分析现有的开源插件源码是很好的学习途径。标签中提到的"源码"意味着我们可以从已有的插件中获取灵感和技巧。此外,利用开发工具如Chrome DevTools可以帮助我们调试和理解插件的运行...

    eclipse上支持jquery插件

    它包含了一些用于JavaScript开发的工具,安装特定的jQuery插件后,WTP可以为jQuery提供良好的开发环境。 6. **安装过程**:通常,安装jQuery插件需要通过Eclipse的“Help” -> “Eclipse Marketplace”或“Install ...

    jquery插件大全(内含Demo)

    ### 握手jQuery插件开发 开发一个jQuery插件通常涉及以下步骤: 1. **封装函数**:定义一个函数,接受必要的参数,并在函数内部实现功能。 2. **扩展jQuery对象**:通过`$.fn.extend`将函数添加到jQuery原型链,使...

    cropper头像上传jquery插件

    - "jquery插件":表明该功能是通过jQuery实现的,利用jQuery的简洁API和广泛的浏览器兼容性,提高开发效率。 - "头像上传":这是应用的具体场景,即用户选择或裁剪图片作为自己的头像。 - "用户头像":进一步强调了...

    十套常用的精美jquery插件

    在网页开发中,jQuery插件是一种扩展了jQuery库功能的JavaScript代码,使得开发者可以更轻松地实现复杂的功能,如动画效果、交互控件等。本资源包含十套常用的精美jQuery插件,涵盖了多个实用场景,下面将逐一介绍。...

    [精华]网站论坛源码C# Jquery,完全自制,有很多jquery自己写的插件

    【标题】中的“[精华]网站论坛源码C# Jquery”揭示了这是一个关于网站论坛开发的项目,采用的核心技术是C#后端语言和Jquery前端库。...同时,自定义Jquery插件的实践,有助于深入掌握Jquery API并锻炼前端开发技能。

    使用jQuery插件开发Mac OSX Lion风格的滚动条.zip

    在本资源中,我们主要关注的是使用jQuery插件来创建具有Mac OSX Lion风格的滚动条。...jQuery是一个广泛使用的...通过学习和使用这个插件,你可以提升对jQuery插件开发的理解,同时也能为你的网站增添独特的用户体验。

    用过的jQuery插件

    《深入理解jQuery插件开发——以jBox为例》 在Web开发中,jQuery以其简洁的API和强大的功能,成为JavaScript库中的热门选择。而jQuery插件则是jQuery生态中不可或缺的一部分,它们扩展了jQuery的功能,使得开发者...

    jquery插件开发

    jQuery插件开发是利用jQuery核心功能进行扩展,以实现更高级、特定的功能或组件。本教程将深入讲解如何开发jQuery插件,帮助你提升网页交互体验,创造出美观而实用的UI元素。 首先,我们了解jQuery插件的基本结构。...

    jquery图表插件大全收集

    10. **D3.js**:虽然不是直接的jQuery插件,但D3库允许开发者直接操作DOM来创建复杂的可视化,可与jQuery结合使用。 每个插件都有其特点和适用场景,选择时应考虑性能、功能需求、学习曲线以及项目的兼容性要求。...

    jQuery插件--滑动条

    本篇文章将深入探讨如何使用jQuery插件创建滑动条,并分析给定的文件资源。 首先,我们有三个文件: 1. `jquery-plugin.html` - 这是HTML页面,包含用于展示滑动条的结构和必要的jQuery代码。 2. `jquery-1.2.6.js`...

    jQuery插件的开发流程[文].pdf

    【jQuery插件开发基础】 在开发jQuery插件之前,我们需要对jQuery本身有一定的了解。jQuery是一个JavaScript库,以其简洁的API和强大的DOM操作能力而受到广大Web开发者喜爱。它简化了DOM遍历、事件处理、动画制作和...

    jQuery插件(演示示例)

    无论是为了提升网站的用户体验,还是为了丰富你的开发工具箱,深入理解并掌握这些jQuery插件都是十分有益的。在实践中不断探索和学习,你会发现jQuery的强大和灵活性,以及它对前端开发的巨大影响力。

    jQuery插件库

    jQuery插件库是Web开发中一个非常重要的资源集合,它为开发者提供了丰富的功能扩展,使得使用JavaScript库jQuery进行网页交互和动态效果实现变得更加便捷。jQuery以其简洁的API和强大的功能深受开发者喜爱,而jQuery...

    强大的jQuery表格插件

    - **ag-Grid**:虽然不是纯jQuery插件,但ag-Grid是一个高性能的表格库,适用于复杂的数据管理,支持大量的自定义选项。 ### 4. 插件的主要功能 - **数据绑定**:将后端数据动态绑定到表格,实现数据实时更新。 - ...

Global site tag (gtag.js) - Google Analytics