知识点:
什么是插件
jQuery插件的模式
jQuery插件的Lightweight Start模式(入门级插件模式) 8.1 插件(Plug-in)
“插件”这个关键字,估计大家在日常生活中经常有所耳闻。例如:各网页浏览器,允许用户安装一些插件,增强用户体验,常见的Adobe Flash播放器,银行安全交易插件等。对于不做编程的朋友来说,是一个无所谓的词,但是对于咱们IT技术行业的朋友来说,是必须要了解,知道的。
咱们不是学者,不做特别规范的学术性研究,只要能够理解、够用就可以了。
因为咱们只是编程行业,所以将插件首先约束在编程领域试着理解。“插件”,是一段程序,它是与主应用程序交互,并扩展、替代主应用程序特定模块(功能)。
在js及js的一些框架Jqurey、ExtJs、Prototype···也比较流行以开发插件的形式,增强其程序的健壮性、伸缩性、安全性。其中JQuery的流行程度、市场占有率是最高的,当然也是咱们本次学习的 主题。
以下两个网址是官方资料,感兴趣的朋友可以去了解一下。
jQuery官网:http://jquery.com/
jQuery官网插件,有许多比较稳定、实用的插件,如果您感兴趣,也可以向官方贡献你的代码:http://plugins.jquery.com/ 下面一段代码展示了jQuery插件Django Superformset 的写法:
/*
* django-superformset
* https://github.com/jgerigmeyer/jquery-django-superformset
*
* Based on jQuery Formset 1.1r14
* by Stanislaus Madueke
*
* Original Portions Copyright (c) 2009 Stanislaus Madueke
* Modifications Copyright (c) 2013 Jonny Gerig Meyer
* Licensed under the BSDv3 license.
*/ (function ($) { 'use strict'; var methods = {
init: function (opts) {
var vars = {}; var opti = $.extend({}, $.fn.superformset.defaults, opts);
var wrapper = vars.wrapper = $(this);
var rows = vars.rows = wrapper.find(options.rowSel); var c = rows.closest(options.containerSel); //@余下的代码略···
}(jQuery)); 完整代码示例下载:http://plugins.jquery.com/django-superformset/
另外,谢谢Jonny Gerig Meyer代码。
如果您还帮助别人解决一些常见的问题,或者想按照自己的想法写一些有趣并可以重复使用的一些插件,那么请跟紧我的步伐,继续学习
8.2 模式
学习任何知识首先需要了解一下基础和一些规则,才能够在其上面构建自己需要的东西。学习jQuery插件也不例外,在很多社区都有一些最佳实践,我们先看看一些最基本的jQuery插件知识。
第一种写法如下,
代码1:
$.fn.myPluginName = function(){
//@您的插件业务逻辑
}
代码2:
(function ($) {
$.fn.myPluginName = function(){
//@您的插件业务逻辑
}
})(jQuery);
代码1与代码2有什么不同,相信对于大家已经明朗化了。第一,将带有 $.fn.myPluginName的代码放入闭包中,可以与外部环境隔离,防止产生冲突,还可以将闭包看做一个模块,以结构化代码的作用;第二,将jQuery以参数的形式传递进去,映射到$符上,可以防止在其它JavaScript库之间产生冲突。
第二种写法如下,
我们可以利用jQuery的jQuery.extend(),能够一次定义多个函数,这种写法的主要意义就是在语义表达上更好。
代码3:
(function ($) {
$.extend($.fn, {
myPlugin : function () {
//@您的插件业务逻辑
}
});
})(jQuery)
8.3 Lightweight Start模式
通过上边的介绍,大家已经具备jQuery插件的基础知识了。下面通过一段简单的代码向大家展示一下Lightweight Start模式,具体解释请看代码注释。
代码4:
/*
* jQuery Lightweight 插件
* 新浪微博 :@席新亮_javascript_html5
* QQ:939898101
* Email:939898101@qq.com
*/ /*
*1,在代码开始之前,加一个分号,可以防止没有正常关闭的插件
*2,undefined是ECMAScript3中定义的,可以修改,但在ECMAScript5中undefined不能修改。
* undefined没有真正传递进来以保证是真正的undefined
*3,把window与document传递进来作为局部变量,可以减少作用域的访问,加快速度,以及降低引用同一个插件的影响
*/
; (function ($, window, document, undefined) {
//私有 默认变量
var myPluginName = "defaultName",
defaults = {
otherName : "value"
};
//私有 构造插件的函数
var ctorPlugin = function (element, options) {
this.element = element; //利用jQuery 的extend 方法合并对象 this.opti defaults, options); this._default = defaults;
this.name = myPluginName ;
this.init();
};
//原型链上添加方法 ctorPlugin .prototype.init = function () { //执行一些初始化的逻辑,然后就可以访问DOM,进行一些业务处理 }; //将插件包装起来,利用模块模式,防止多次实例出现 $.fn[myPluginName ] = function (options) { return this.each(function () { var myPluginNameStr = "plugin_" myPluginName ; if (!$.data(this, myPluginNameStr )) { $.data(this, myPluginNameStr , new ctorPlugin (this, options)); } }); }; })(jQuery, window, document); 用法如下: elementStr为获取节点的指定字符
$(elementStr). defaultName({
otherName : "your value"
});
通过以上代码可以看出:
必须有分号
将window、document、undefined作为参数传入
一些基本的(私有)默认对象
简单的插件构造函数,执行一些初始化
扩展默认值的一些选项
一个包装器避免多次创建
8.4 扩展视野
jQuery 插件官方学习:http://learn.jquery.com/plugins/

jQuery组件写法的更多相关文章

  1. 封装两个简单的Jquery组件

    Jquery给我们提供了很大的方便,我们把他看成是一个公共库,以致在这个公共库上延伸出了很多Jquery插件:在项目过程中,有些插件总是不那么令人满意: 主要说两个项目用途: 1.  遮罩层,跟一般的 ...

  2. Asp.NetCore之组件写法

    本章内容和大家分享的是Asp.NetCore组件写法,在netcore中很多东西都以提供组件的方式来使用,比如MVC架构,Session,Cache,数据库引用等: 这里我也通过调用验证码接口来自定义 ...

  3. jQuery组件开发之表格隔行选中效果实现

    一.效果展示如下 jQuery组件之表格插件源码 //表格选中插件 //方式一 (function($){ var chosTabBgColor = function(options){ //设置默认 ...

  4. 基于Bootstrap的DropDownList的JQuery组件的完善版

    在前文 创建基于Bootstrap的下拉菜单的DropDownList的JQuery插件 中,实现了DropDownList的JQuery组件,但是留有遗憾.就是当下拉菜单出现滚动条的时候,滚动条会覆 ...

  5. jquery插件写法

    //传统写法 //全局方法 ;(function($){ $.method = function(){ } //or $.obj = { method1:function(){}, method2:f ...

  6. Jquery插件写法及extentd函数

    JQuery插件写法 JQuery插件又分为类扩展方法和对象扩展方法两种,类插件是定义在JQuery命令空间的全局函数,直接通过可调用,如可调用,如可调用,如.ajax():对象插件是扩展JQuery ...

  7. jQuery 插件写法2

    转载:http://www.xuanfengge.com/jquery-plug-in-written-summary-and-summary-of-writing-object-oriented-m ...

  8. jQuery 插件写法

    一.jQuery插件的类型 1. jQuery方法 很大一部分的jQuery插件都是这种类型,由于此类插件是将对象方法封装起来,在jQuery选择器获取jQuery对象过程中进行操作,从而发挥jQue ...

  9. jquery组件WebUploader文件上传用法详解

    这篇文章主要为大家详细介绍了jquery组件WebUploader文件上传用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 WebUploader是由Baidu WebFE(FEX)团队开发的一 ...

随机推荐

  1. 站在巨人的肩膀上学习Android开发

    我们知道,一開始最好的学习方法是模仿,尤其是模仿巨人. 那说到Android开发的模仿自然就是分析并研究主流程序的布局.实现方法.进而提升自己的技术. 第一招----逆向project 要分析&quo ...

  2. C#通过FTP账号上传、修改、删除文件 FTPClient

    下面类文件中,主要做的工作是:从ftp服务器上下载文件把本地文件替换.添加.或删除功能,在替换本地文件时会先备份一下本地的文件,若整个操作都完成了就会发出commit命令,表示全部替换成功.若中间操作 ...

  3. SQL Server与Oracle对比学习:表的管理和组织

    http://blog.csdn.net/weiwenhp/article/details/8088979 我们知道数据库,顾名思义.最重要的东东就是管理数据,而数据在系统中主要是保存在表(table ...

  4. uva 10718 Bit Mask(贪心)

    题目连接:10718 Bit Mask 题目大意:给出一个T, 和一个下限L, 上限R, 在[L, R]之间找一个数, 使得这个数与T做或运算之后的数值最大 输出这个数. 解题思路:将T转换成二进制, ...

  5. 像C++一样写JavaScript

    像C++一样写JavaScript C/C++/Java的include或import可以引用第3方文件和包. 这个功能在Html/Js里没有默认的实现. 假设我们有这样一个HTML文件index.h ...

  6. JavaBean中DAO设计模式介绍(转)

    一.信息系统的开发架构 客户层-------显示层-------业务层---------数据层---------数据库 1.客户层:客户层就是客户端,简单的来说就是浏览器. 2.显示层:JSP/Ser ...

  7. Fastjson介绍

    简单介绍 Fastjson是一个Java语言编写的高性能功能完好的JSON库. 高性能 fastjson採用独创的算法,将parse的速度提升到极致,超过全部json库,包含以前号称最快的jackso ...

  8. Hack工具

    黑客工具一般是由黑客或者恶意程序安装到您计算机中,用来盗窃信息.引起系统故障和完全控制电脑的恶意软件程序.同时也指黑客进行黑客任务时使用的工具.著名的有nmap,流光等等. 目录 1 种类 2 恶意程 ...

  9. mac下通过docker搭建LEMP环境

    在mac下通过docker搭建LEMP环境境 1.安装virtualbox.由于docker是在lxc环境的容器 2.安装boot2docker,用于与docker客户端通讯 > brew up ...

  10. ionic 项目分享【转】

    写在文章前:由于最近研究ionic框架,深感这块的Demo寥寥可数,而大家又都藏私,堂堂天朝,何时才有百家争鸣之象,开源精神吾辈当仁不让! 由于昨晚找资料太匆匆 忘记出处了,记得是在http://bb ...