• 使用seajs封装js模块


    //方法一:将函数绑定到原型上
    define(function(require, exports, module) { 
        $.fn.tab = function(option, callback) { 
            function bootstrap() {
               console.log('djsakhdkj');
            }  
            bootstrap();
        }
        $(function(){
            $().tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用
        })
    })
    
    
    //方法一(2):将函数绑定到jquery的原型上
    define(function(require, exports, module) { 
        $.tab = function(option, callback) { 
            function bootstrap() {
               console.log('djsakhdkj');
            }  
            bootstrap();
        }
        $(function(){
            $.tab();//因为将tab绑定到$原型上,所以要使用$.tab()去调用
        })
    })

    上面两个的区别是:$.calendar();不依赖与页面中的元素,是独立的,比如弹窗插件,就是独立于页面的;

    $.fn.calendar();一般是依赖于页面元素的额,比如这个日历插件,需要依赖于一个input标签中,比如点击该input则产生弹窗:$('input').calendar();这个弹窗位于该input的位置,等等;再例如tab切换插件中:

    <div id="demo-content" data-ui="u-tab">
            <ul>
                <li class="cur" data-ui="tab-nav"><a href="javascript:void(0);">青春</a>
                </li>
                <li class="" data-ui="tab-nav"><a href="javascript:void(0);">彩虹</a>
                </li>
                <li class="" data-ui="tab-nav"><a href="javascript:void(0);">歌唱</a>
                </li>
            </ul>
            <div class="tab-content">
                <div data-ui="tab-content">tab1</div>
                <div data-ui="tab-content">tab2</div>
                <div data-ui="tab-content">tab3</div>
    
            </div>
        </div>

    调用该插件的时候就是使用的:$('#demo-content').tab();

    所以日历插件有两种或思路:如果日历一直存在,则$('传入的是日历的class'),日历下所有的元素都是依赖于该class的;如果日历需要点击input中才能出现,则$('input').calendar();这时需要按照input生成点击事件弹出日历;日历的相对input的位置;

    //方法二:直接写函数形式
    define(function(require, exports, module) { 
        var tab = function(option, callback) { 
            function bootstrap() {
               console.log('545');
            }  
            bootstrap();
        }
        $(function(){
            tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用
        })
    })

    上面对应的html中调用:

    seajs.use('./../../js/tab');

    第三种方法:

    //方法三:使用module.exports向外提供函数接口,html中代码为:
    // seajs.use('./../js/calendar', function () {
    //         init();
    //     });
    define(function(require, exports, module) { 
        $.fn.tab = function(option, callback) { 
            function bootstrap() {
               console.log('djsakhdkj');
            }  
            bootstrap();
        }
        $(function(){
            init=function(){
                $().tab();//因为将tab绑定到$原型上,所以要使用$().tab()去调用 
            }
            module.exports=init;
        })
    })

    对应的html文件:

    seajs.use('./../js/calendar', function (initBox) {
            initBox();
        });

     html文件中使用seajs引入calendar模块,并且根据calendar模块可以看出将函数名init作为接口:

    module.exports=init;即,calendar向外提供函数借口init,html文件中的seajs.use接受该函数(此时两个名字可以不一样,init是js模块向外提供的借口函数;initBox是作为接收函数的参数名)
    function(initBox){
      initBox();
    }
    执行该函数initBox();相当于执行模块中的函数init();然后init()函数再去调用$().tab()函数
    最后如果在其他的js文件中药日用seajs,则:
    require('./calendar.js');
    initBox();

    先使用require引入calendar.js 文件,然后调用 initBox函数

     
  • 相关阅读:
    Directory类的使用、Alt+Shift+F10可以查看其命名空间
    用户控件
    图像检测算法Halcon 10的使用
    MD5加密的使用
    AppDomain.CurrentDomain.AssemblyResolve
    记事本程序
    C#文件操作
    部分常用控件
    TreeView的使用
    ComboBox的使用
  • 原文地址:https://www.cnblogs.com/xiaozhumaopao/p/5957481.html
Copyright © 2020-2023  润新知