zoukankan      html  css  js  c++  java
  • JS与jquery书写插件规范

    什么是封装呢?

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

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

      1、便于代码复用

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

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

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

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

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

    1
    2
    3
    4
    (function(){
        ......
        ......
    }()}

     然后再创建一个构造函数

    1
    2
    3
    4
    5
    (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({})覆盖

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    (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>
    复制代码

     

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

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

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

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

    隔日不上

    看了下jquery封装

    感觉就是把window对象换成了jquery对象?

    复制代码
    (function($){
        $.fn.demo = function(options){
            var options = $.extend({
                ....
            })
        };
    })(jQuery);
    复制代码

    调用的时候

    $("#xx").demo();
  • 相关阅读:
    Matlab 绘制三维立体图(以地质异常体为例)
    Azure DevOps的variable group实现array和hashtable参数的传递
    Azure DevOps 利用rest api设置variable group
    Azure AADSTS7000215 其中一种问题的解决
    Power BI 实现实时更新Streaming Dataset
    AAD Service Principal获取azure user list (Microsoft Graph API)
    Matlab 沿三维任意方向切割CT图的仿真计算
    Azure Powershell script检测登陆并部署ARM Template
    Azure KeyVault设置策略和自动化添加secrets键值对
    Azure登陆的两种常见方式(user 和 service principal登陆)
  • 原文地址:https://www.cnblogs.com/fangshidaima/p/7510266.html
Copyright © 2011-2022 走看看