最近想写一个自动生成模拟select的js组件,开始想法是用require js 写成一个模块,这样以后代码只要调用该模块就可以了,如:
define(['jquery'],function($){
function simulateSelect(ele){
//模拟select的代码
}
return simulateSelect; //如果需要返回多个方法可以封装在一个对象里面然后返回对象,例如:return {simulateSelect:simulateSelect,one:one},注入式参数指向返回这个对象
});
这样做并没有什么问题,也可以实现移植到其他项目用的目的,调用结果如下:
require(['jquery','select'],function($,$S){
$S('.selectpicker');
});
看起来是不是好别扭,我们正常的思维应该是$S('.selectpicker').方法名();这样的写法,于是想到了插件的写法:
定义一个模块存放插件:
define(['jquery'],function($){
(function($){
$.fn.simulateSelect=function (options){
var dft={
//默认属性和默认值
width:'100%',
height:'36px'
}
var ops=$.extend(dft,options);//替换参数
$(this).hide();//逻辑代码,$(this)指向执行方法所选的对象
}
})(jQuery)
});
//调用
require(['jquery','select'],function($,myselect){
$('.selectpicker').simulateSelect();
});
这个方法只是单纯的用到了插件,没有凸显require
ps:欢迎各位技术爱好者批评交流; QQ:402061945