模块化jQuery
1、把jQuery修改成SeaJs的模块代码非常简单,就是用下面这段语句将jQuery源代码包裹起来:
1 | define('jquery',[],function(require, exports, module){ |
2、也可以加一个判断,如果define已经被定义,就把jQuery模块化,如果define没有被定义,正常执行jQuery代码:
1 | (function(factory) { |
3、如果你用的是jQuery1.7版本以上的,那就更方便了。可以看下jQuery源码的最后几行,你会发现类似下方的代码:
1 | if ( typeof define === "function" && define.amd && define.amd.jQuery ) { |
4、如果判断语句为真,那么jQuery就会自动模块化。所以改下判断语句,只留typeof define === “function”,jQuery便可以自动模块化:
1 | if ( typeof define === "function") { |
模块化后的调用代码如下:
1 | seajs.config({ |
模块化jQuery插件
模块化jQuery插件
1、普通插件
1 | (function($){ |
一般模块化代码像下面这样:
1 | /*jquerySayHello.js*/ |
使用插件的代码如下:
1 | seajs.config({ |
注意我在插件构造函数里面写的console.log(‘init’);这段代码,可以看到,如果我请求两次插件,插件就要初始化两次。这个虽然可以让代码只在使用时才执行,减少了资源消耗,但如果一个页面中多处需要这个插件的话,就要执行很多次。如果改成下面这种,直接在本模块里就执行:
使用插件的代码如下:
1 | (function (factory) { |
使用插件的代码如下
1 | seajs.config({ |