我的编程空间,编程开发者的网络收藏夹
学习永远不晚

创建jQuery插件的建议有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

创建jQuery插件的建议有哪些

创建jQuery插件的建议有哪些,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

在开发过很多 jQuery 插件以后,我慢慢的摸索出了一套开发jQuery插件比较标准的结构和模式。这样我就可以 copy & paste 大部分的代码结构,只要专注最主要的逻辑代码就行了。

使用相同的设计模式和架构也让修复bug或者二次开发更容易。一套经过验证的架构可以保证我的插件不出大的问题,不论插件简单还是复杂。我在这里分享10条我总结的经验。

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

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

<script>    (function($)    {         //code here    })(jQuery);    </script>

2. 提供插件的默认选项

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

script>  var defaultSettings = {      mode : 'Pencil',      lineWidthMin    : '0',      lineWidthMax    : '10',      lineWidth       : '2' };  settings = $.extend({}, defaultSettings, settings || {});  </script>

3. 使用返回一个元素

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

<script>  $.fn.wPaint = function(settings)      {          return this.each(function()          {              var elem = $(this);               //run some code here          }      }  </script>

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

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

<script>  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      }  }  </script>

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

5. 为什么要设置 Class Prototyping

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

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

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

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

6. 如何设置 Class Prototyping

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

<script>  function Canvas(settings)  {      this.settings = settings;      this.draw = false;      this.canvas = null;      this.ctx = null;       return this;  }  </script>

下面来添加全局的方法:

<script>  Canvas.prototype =  {      generate: function()      {          //generate code      }  }  </script>

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

7. 使用 “this” 对象

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

<script>  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      }  }  </script>

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

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

<script>  function Canvas(settings)  {      this.settings = settings;       return this;  }  </script>

9. 分离你的Prototype方法逻辑

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

<script>  generate()  appendColors()  colorSelect()  colorHoverOn()  colorHoverOff()  appendToElement()  showPalette()  hidePalette()  </script>

10. 提供 Setter/Getter 选项

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

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

<script>  var lineWidth = $("#container").wPaint("lineWidth");  $("#container").wPaint("lineWidth", "5");  </script>

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

<script>  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      }  }  </script>

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

关于创建jQuery插件的建议有哪些问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注编程网行业资讯频道了解更多相关知识。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

创建jQuery插件的建议有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

基于jquery的动态创建表格的插件

工作快一年了,最近学习jquery,对jquery很感兴趣。第一次写博客,有不足之处还请各位拍砖。
2022-11-21

学习linux的建议有哪些

这篇文章主要介绍学习linux的建议有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、从基础开始   常常有些朋友在Linux论坛问一些问题,不过,其中大多数的问题都是很基的。例如:为什么我使用一个命令的时候,
2023-06-13

阿里云服务器创建遇到的问题及建议有哪些

云服务器常见问题在使用阿里云服务器时,常见的问题包括但不限于以下几个方面:(1)服务器无法启动:如果云服务器无法启动,可能会导致应用程序无法正常运行或者数据无法同步到云服务器上。解决方法是重启云服务器或者手动备份数据。(2)服务器性能下降:云服务器提供商可能会提供虚拟化技术来提高服务器性能,但是如果使用不当,也会导致服
2023-10-27

php创建文件的方法有哪些

PHP中创建文件的方法有以下几种:1. 使用`fopen()`函数创建文件,并指定打开模式为写入模式。例如:```php$file = fopen("example.txt", "w");```2. 使用`file_put_contents
2023-10-08

java创建文件的方法有哪些

Java创建文件的方法有以下几种:使用File类的createNewFile()方法:使用File类的createNewFile()方法可以创建一个新的文件。如果文件已存在,则返回false,如果成功创建文件,则返回true。示例代码:F
2023-10-24

MySQL创建表时的条件有哪些

这篇“MySQL创建表时的条件有哪些”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“MySQL创建表时的条件有哪些”文章吧。由
2023-07-02

Python编程建议有哪些

本篇内容主要讲解“Python编程建议有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python编程建议有哪些”吧!1. 项目文件事先做好归档每次开始一个新工作的时候,以前的我总是贪图方便
2023-06-02

react创建组件有哪些方法

这篇文章主要介绍了react创建组件有哪些方法,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1、函数式组件:(1)语法:function myConponent(props)
2023-06-14

Python编程有哪些有用的建议

这篇文章主要讲解了“Python编程有哪些有用的建议”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Python编程有哪些有用的建议”吧!1. 项目文件事先做好归档每次开始一个新工作的时候,以
2023-06-02

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录