首页 > 代码库 > 使用seajs封装js模块
使用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函数
使用seajs封装js模块
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。