jQuery使用经验小技巧(推荐)_jquery

在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式。这样我就可以复制并粘贴大部分的代码结构,只要专注最主要的逻辑代码就行了。 使用相同的设计模式和架构也让修复bug或者二次开发更容易。一套经过验证的架构可以保证我的插件不出大的问题,不论插件简单还是复杂。我在这里分享10条我总结的经验。

1. 把你的代码全部放在闭包里面

这是我用的最多的一条。但是有时候在闭包外面的方法会不能调用。不过你的插件的代码只为你自己的插件服务,所以不存在这个问题,你可以把所有的代码都放在闭包里面。而方法可能应该放在Prototype方法内部,我们后面会讲到这一点。

/*  www.jb51.net */
(function($)
 {
 //code here
 })(jQuery); 

2. 提供插件的默认选项

你的插件应该会有一些选项是可以让开发者设置的,所以提供恢复默认选项是以有必要的。你可以通过jQuery的extend功能来设置这些选项:

/*  www.jb51.net */
var defaultSettings = {
  mode      : 'Pencil',
  lineWidthMin  : '0',
  lineWidthMax  : '10',
  lineWidth    : '2'
};  

settings = $.extend({}, defaultSettings, settings || {});

3. 使用返回一个元素

JavaScript/jQuery有一个很好的特点就是可以进行方法级联,所以我们不应该破坏这个特性,始终在方法中返回一个元素。我在我的每一个jQuery插件中都遵守这一条。

$.fn.wPaint = function(settings)
 {
  return this.each(function()
  {
    var elem = $(this);  

    //run some code here   www.jb51.net
  }
}

4. 一次性代码放在主循环以外

这一条很重要,但是常常被忽略。简单的讲,如果你有一段代码是一堆默认值,只需要被实例化一次,而不是每次调用你插件功能的时候都实例化,你应该把这段代码放在插件方法的外面。这样可以让你的插件运行的更高效,节省内存。我们将会在后面讨论prototype的时候,看这个方法在实际中的运用。

var defaultSettings = {
  mode      : 'Pencil',
  lineWidthMin  : '0',
  lineWidthMax  : '10',
  lineWidth    : '2'
};  

$.fn.wPaint = function(settings)
{
  settings = $.extend({}, defaultSettings, settings || {});  

  return this.each(function()
  {
    var elem = $(this);  

    //run some code here  www.jb51.net
   }
}

你可以注意到,上面代码中的“defaultSettings”是完全在插件方法外面的,由于这些代码是在闭包里面,我们不用担心这些变量被重写。

 5. 为什么要设置 Class Prototyping

作为你代码的血与肉,方法和函数应该放在prototype函数内。有两个原因:

▲它可以节省很多内存,因为可以不用重复创建这些方法。

▲引用一个现成的方法比重新创建一个好快很多。

简单的说,prototype就是扩展了一个对象,为它提供方法,而不用在每一个对象中实例化这些方法。这也让你的代码更有条理和高效。一旦你习惯这种开发方式,你会发现它在你将来的项目中为你节省了很多时间。

 6. 如何设置 Class Prototyping

设置一个 prototype 方法有两个部分。首先我们需要创建我们最初的类定义,在多数情况下这就意味着创建一个对象。这个定义包含了每一个对象实例都不同的部分。在我的 Paint jQuery Plugin 插件中,我是这么写的:

/*  www.jb51.net */
function Canvas(settings)
{
  this.settings = settings;
  this.draw = false;
  this.canvas = null;
  this.ctx = null;  

  return this;
}

下面来添加全局的方法:

/*  www.jb51.net */
Canvas.prototype =
{
 generate: function()
 {
    //generate code
 }
}

这里的关键是要让prototype的方法是通用的,但是数据是每个实例自己的,可以用“this”引用。

7. 使用 “this” 对象

通过使用“$this”,我们可以向别的闭包传递正确的引用。我们也可能需要向别的方法传入 $this 引用。需要注意的是, $this 这个名字是可以改的,任意的变量名都可以。

Canvas.prototype =
{
  generate: function()
  {
    //some code  

    var $this = this;  

    var buton = //...some code  

    button.click(function(){
      //using this will not be found since it has it's own this  

      //use $this instead.  

      $this.someFunc($this);
    });
  },  

  someFunc: function($this)
  {
    //won't know what "this" is.
    //use $this instead passed from the click event
  }
}  /*  www.jb51.net */

8. 在每一个对象中保存设置

我一直在每一个对象中保存自己的设置,然后操作它自己的设置。这样你就不用在不同的方法中传递很多参数。把这些变量放在对象中,也方便你在其他地方调用这些变量。

function Canvas(settings)
{
  this.settings = settings;  

  return this;
}

9. 分离你的Prototype方法逻辑

这可能是一个基本的原则。当你在犹豫是否需要提供一个方法的时候,你可以问你自己 “如果其他人要重写这个方法的话,你的代码是否能满足他的需求?”或者“别人来写这个方法有多困难?”。当然这是一个灵活性拿捏的问题。这里列出了我的 Color Picker jQuery Plugin  的方法,你可以参考一下:

generate()
appendColors()
colorSelect()
colorHoverOn()
colorHoverOff()
appendToElement()
showPalette()
hidePalette()

10. 提供 Setter/Getter 选项

这一条不是必须的,但是我发现我所有的插件都包用到了这一条。因为它只需要一点点代码,就能为别人提供一个他可能需要的功能。

基本上,我们只要让开发者能够设置或者获取元素已经存在的值:

varlineWidth = $("#container").wPaint("lineWidth");
$("#container").wPaint("lineWidth","5");

首先我们要把元素和对象关联起来,然后我们就可以引用它。我们在返回元素之前做如下操作:

return this.each(function()
{
  var elem = $(this);  

  var canvas = new Canvas(settings);  

  //run some code here  

  elem.data("_wPaint_canvas", canvas);
}
//下面的代码明确了我们究竟要做什么:
$.fn.wPaint = function(option, settings)
{
  if(typeof option === 'object')
  {
    settings = option;
  }
  else if(typeof option === 'string')
  {
    if(
      this.data('_wPaint_canvas') &&
      defaultSettings[option] !== undefined
    ){
      var canvas = this.data('_wPaint_canvas');  

      if(settings)
      {
        canvas.settings[option] = settings;
       return true;
      }
      else
      {
        return canvas.settings[option];
      }
    }
    else
      return false;
  }  

  return this.each(function()
  {
    //run some code here
  }
}  /*  www.jb51.net */

以上十条基本上覆盖了jQuery插件开发的核心,并且可以作为开发的模板。有一套基本的代码可以极大的缩短你的开发时间,并且能够让你设计插件架构的时候更自信。

以上这篇jQuery使用经验小技巧(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索jquery经验
jquery 小技巧、倩女幽魂2 经验小技巧、种花小技巧 推荐书、三星s7edge使用小技巧、华为mate9使用小技巧,以便于您获取更多的相关知识。

时间: 2024-09-17 03:14:30

jQuery使用经验小技巧(推荐)_jquery的相关文章

Jquery使用小技巧汇总_jquery

下面列出了一些Jquery使用技巧.比如有禁止右键点击.隐藏搜索文本框文字.在新窗口中打开链接.检测浏览器.预加载图片.页面样式切换.所有列等高.动态控制页面字体大小.获得鼠标指针的X值Y值.验证元素是否为空.替换元素.延迟加载.验证元素是否存在于Jquery集合中.使DIV可点击.克隆对象.使元素居中.计算元素个数.使用Google主机上的Jquery类库.禁用Jquery效果.解决Jquery类库与其他Javascript类库冲突问题. 1. 禁止右键点击 $(document).ready

jQuery实用小技巧_输入框文字获取和失去焦点的简单实例_jquery

jQuery实用小技巧_输入框文字获取和失去焦点的简单实例 <input id="txt" class="text1" type="text" /> <script src="js/jquery-1.7.1.min.js"></script> <script type="text/javascript"> $(function () { $("inp

Javascript字符串拼接小技巧(推荐)_javascript技巧

在Javascript中经常会遇到字符串的问题,但是如果要拼接的字符串过长就比较麻烦了. 如果是在一行的,可读性差不说,如果要换行的,会直接报错. 在此介绍几种Javascript拼接字符串的技巧. 字符串相加(+) var items = '<li class="details">' + '<span>Hello world</span>' + '</li>'; 利用反斜线拼接字符串 var items = '<li class=

60个很实用的jQuery代码开发技巧收集_jquery

由于内容比较多建议用CTRL+F搜索 偶然在网上看到这些不错的jQuery代码开发技巧.原文收集了30个,另外查找的时候发现了还有20个.加上另外十个实用的jQuery代码片段,共60个代码技巧,收集在一起分享给大家. 1. 创建一个嵌套的过滤器 .filter(":not(:has(.selected))") //去掉所有不包含class为.selected的元素 2. 重用你的元素查询 var allItems = $("div.item"); var keep

js、jquery实用小技巧集合

Tip16:JS的定时器 JS 中有两种定时器,setTimeout('fn', t) 和 setInterval('fn', t),'fn'指的是定时执行的方法名,字符串类型.       setTimeout('fn', t):   只执行一次,执行完成后将销毁.   setInterval('fn', t):一直执行.   (Date:2012-02-17)   ----------------------------------------------------------------

全面详细的jQuery常见开发技巧手册_jquery

本文为大家整理一篇很详尽的jQuery常见开发技巧文章,供大家参考,具体内容如下 1.关于页面元素的引用 通过jquery的$()引用元素包括通过id.class.元素名以及元素的层级关系及dom或者xpath条件等方法,且返回的对象为jquery对象(集合对象),不能直接调用dom定义的方法. 2.jQuery对象与dom对象的转换 只有jquery对象才能使用jquery定义的方法.注意dom对象和jquery对象是有区别的,调用方法时要注意操作的是dom对象还是jquery对象. 普通的d

5大电脑小技巧推荐 让操作变得简单

让我们一起分享这些有趣又好玩的电脑小技巧.其中有如何提升电脑使用速度的方法,有优化系统的方法等等,如果你没有用过,不妨来试试,如果你是 高手也欢迎来拍砖,不过拍砖的同时还希望您亮出自己的使用技巧供大家一起分享.因为我们的目的是分享和更好的使用电脑而不是为了拍砖而拍砖.闲言少叙,马 上进入今天的第一个技巧. 让系统时间显示"星期几"的小妙招 我们现在所使用的操作系统无论是XP还是win7,它们在默认情况下,系统桌面的右下角时间位置上是不会显示"星期"的,那么我们如何让

图度三个实用小技巧推荐

相信很多企业都想搭建属于自己的企业办公系统,可是苦于OA过高的成本而感到头痛.今天就为大家带来完全免费的企业办公系统--图度.企业无需 部署服务器,完全的零成本投入,更有很多实用的功能,如工作流审批.任务分工等.现在就先介绍三个小功能,希望对大家有一定的帮助. 网盘--快速实现云存储 小巧的U盘是很多朋友的首选移动存储设备,但是正因为体积小巧,U盘也很容易丢失.使用图度网盘就不一样了,数据完全储存在云端服务器,无需担心数据会丢失或者被泄漏. 便签--记录琐事 工作多了,琐事也多了,这时就免不了要

Illustrator使用经验小技巧分享

给各位Illustrator软件的使用者们来详细的解析分享一下使用的经验小技巧. 技巧分享: 1.创建几何体工具时的一些快捷键.例如这类的工具   一般都会有一些快捷键来丰富.控制绘制过程.A.按~键复制.(tab上方.1键左边的那个.)按住这个键绘制会产生下面这样的效果:       B. 按上下左右.ctrl.shift.alt这些控制创建参数根据几何图形的复杂程度,可以用上下.左右或者配合ctrl.shift.alt在绘制的同时,改变图形的创建形态.例如左右可以控制网格的纵向列数.上下控制