js封装成插件的步骤方法


Posted in Javascript onSeptember 11, 2017

由于项目原因,工作一年多还没用js写过插件,项目太成熟,平时基本都是在使用已经封装好的功能插件。感觉自己好low......这两天想自己抽空写一个canvas画统计图与折现图的插件,所以就去网上学习了下如何封装.....虽然之前看了很多源码,但是感觉就算了解也是野路子.....

什么是封装呢?

我的理解就是 把一个功能单独做成一个组件,就像做饺子,以前做饺子必须自己先用面粉做饺子皮,再做饺子馅,然后再手工包饺子,但是现在人们发明了自动包饺子机器,虽然机器里面的每一步骤和你自己包饺子是一样的,但是实际上你现在需要做的就只有一件事,就是放原料。这边机器就是封装好的插件,而原料就是你要传的参数

为什么要把js功能封装成插件呢?我觉得有以下几点吧

1、便于代码复用

2、避免各个相同功能组件的干扰,可能会有作用域的一些问题吧

3、便于维护,同时利于项目积累

4、不觉得一直复制粘贴很low么.......

我在网上看到的封装好像有两种,一种是js的原生封装,一种是jquery的封装。这边我先讲一下原生封装吧。

我们在封装的时候会把js代码放到一个自执行函数里面,这样可以防止变量冲突。

(function(){

  ......

  ......

}()}

然后再创建一个构造函数

(function(){

  var demo = function(options){

    ......

  }

}())

把这个函数暴露给外部,以便全局调用

(function(){
  var demo = function(options){
    ......
  }
  window.demo = demo;
}())

其实现在你可以直接调用了,封装好了,虽然没实现什么功能

var ss = new demo({
  x:1,
  y:2
});

或者

new demo({
  x:2,
  y:3
});

然后传参怎么搞呢,我们一个插件一般有一些必选参数或者可选参数,在我看来可选参数不过就是在插件里面给了默认值罢了。我们传的参数会覆盖插件中的默认参数,可以用$.extend({})覆盖

(function(){

  var demo = function(options){

    this.options = $.extend({

      "x" : 1,

      "y" : 2,

      "z" : 3

    },options)

  }

  window.demo = demo;

}())

然后你可以在在初始化构造函数的时候执行一些操作

(function(){
  var demo = function(options){
    this.options = $.extend({
      "x" : "1",
      "y" : "2",
      "z" : "3"
    },options);
    this.init();
  };
  demo.prototype.init = function(){
    alert("x是"+this.options.x+" y是"+this.options.y+" z是"+this.options.z);
  };
  window.demo = demo;
}());
new demo({
  "x" :"5",
  "y" :"4"
});
</script>

就是这样了。一个超级简单的封装

js封装成插件的步骤方法 

我这边有个疑问,extend只是jquery有吗,js对象有什么代替方法吗?晚点在看看............. 

还有需要提的是封装js的时候我们要考虑周全,比如它的扩展性和兼容性,还有性能怎么样,还有没必要的就不需要封装了......要有选择性。

现在网上已经完成的插件数不胜数,而且功能又十分强大,但是恰恰是这点,有的时候一个很大的插件我们只用到很小的一部分,那么就需要我们自己修改成适合我们自己的了,而且有些项目的风格和现在的插件风格也不同,所以关键是要适合自己的项目。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
最佳JS代码编写的14条技巧
Jan 09 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
Feb 04 Javascript
AngularJS中如何使用$http对MongoLab数据表进行增删改查
Jan 23 Javascript
JS获取时间的相关函数及时间戳与时间日期之间的转换
Feb 04 Javascript
javascript实现标签切换代码示例
May 22 Javascript
Jquery组件easyUi实现表单验证示例
Aug 23 Javascript
利用jqprint插件打印页面内容的实现方法
Jan 09 Javascript
jQuery实现判断上传图片类型和大小的方法示例
Apr 11 jQuery
详解Vue 换肤方案验证
Aug 28 Javascript
layui自己添加图片按钮并点击跳转页面的例子
Sep 14 Javascript
Angular单元测试之事件触发的实现
Jan 20 Javascript
javascript中layim之查找好友查找群组
Feb 06 Javascript
vue.js移动端app之上拉加载以及下拉刷新实战
Sep 11 #Javascript
Chrome调试折腾记之JS断点调试技巧
Sep 11 #Javascript
JS中的Replace()传入函数时的用法详解
Sep 11 #Javascript
浅谈vue+webpack项目调试方法步骤
Sep 11 #Javascript
JS实现快速比较两个字符串中包含有相同数字的方法
Sep 11 #Javascript
node.js 利用流实现读写同步,边读边写的方法
Sep 11 #Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 #Javascript
You might like
收听困难?教您超简便短波广播抗干扰方法!
2021/03/01 无线电
收集的DedeCMS一些使用经验
2007/03/17 PHP
php curl常见错误:SSL错误、bool(false)
2011/12/28 PHP
THINKPHP5.1 Config的配置与获取详解
2020/06/08 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
extjs grid设置某列背景颜色和字体颜色的实现方法
2010/09/06 Javascript
Js为表单动态添加节点内容的方法
2015/02/10 Javascript
js实现类似于add(1)(2)(3)调用方式的方法
2015/03/04 Javascript
innerHTML中标签可以换行的方法汇总
2015/08/14 Javascript
AngularJS应用开发思维之依赖注入3
2016/08/19 Javascript
jQuery+HTML5实现WebGL高性能烟花绽放动画效果【附demo源码下载】
2017/08/18 jQuery
jQuery实现的简单动态添加、删除表格功能示例
2017/09/21 jQuery
解决vue项目打包上服务器显示404错误,本地没出错的问题
2020/11/03 Javascript
vue3.0实现点击切换验证码(组件)及校验
2020/11/18 Vue.js
微信小程序实现简单的select下拉框
2020/11/23 Javascript
[47:08]OG vs INfamous 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[02:44]重置世界,颠覆未来——DOTA2 7.23版本震撼上线
2019/12/01 DOTA
python获取图片颜色信息的方法
2015/03/18 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
使用python装饰器计算函数运行时间的实例
2018/04/21 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python 中的paramiko模块简介及安装过程
2020/02/29 Python
python实现ftp文件传输功能
2020/03/20 Python
基于django micro搭建网站实现加水印功能
2020/05/22 Python
美国婚礼装饰和活动用品批发供应商:Event Decor Direct
2018/10/12 全球购物
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
怎样让char类型的东西转换成int类型
2013/12/09 面试题
Linux中如何用命令创建目录
2016/12/02 面试题
优秀毕业大学生推荐信
2013/11/13 职场文书
交通安全教育制度
2014/02/02 职场文书
民生工程实施方案
2014/03/22 职场文书
治安消防安全责任书
2014/07/23 职场文书
绿色环保倡议书
2015/04/28 职场文书
节水宣传标语口号
2015/12/26 职场文书
Pygame Draw绘图函数的具体使用
2021/11/17 Python