您的位置:首页 > Web前端 > JQuery

2016 使用seajs时如何模块化jquery

2016-03-04 16:19 423 查看
【前言】

最近接触 seajs ,遇到了下面问题:

var $ = require('jquery'); // error:$为null

【找原因】

1. 调试了一下,发现jquery的路径没有问题,但是$却是null,初步判断require()这个函数没有理解清楚。

2. 百度了一下,发现是seajs中 require() 的参数一定要是遵循cmd规范的文件, 而jquery正常都是没有模块化的。

3.回到了我们今天的重点:如何模块化jquery?

【解决过程】

1. 参照一些博客文章模块化jquery,但是还有一些问题。(文章中的seajs和jquery版本都是以前的,所以可能有些差异)

2. 尝试了很多种方法,最后成功了2种方法:模块化jquery。

3. 方法介绍:

版本:seajs.2.3.0.js; jquery-2.2.0.js

【方法一】

在jquery源码末尾中,修改成如下:

if ( typeof define === "function") {
define(function() {
return jQuery;
} );
}


说明:1. if()中只有一个判断了
2. define()中只有一个参数,前面还有两个参数容易出错,官网例子也推荐用一个工厂函数就可以了。

【方法二】

在jquery源码外加如下代码:

define(function(){
//jquery code
// ...

return $.noConflict(true);
});


</pre><pre name="code" class="html">

【结束语】

经过测试,以上两种方法都能够在seajs中正常加载jquery,两种方法的最终目的都是为了模块化jquery,暴露出一个对象给外面调用。查看了网上很多资料,经过整理后这两种方法在当前版本可用。

ps:刚入前端,请多多指教。

参考文章:

http://blog.csdn.net/it_man/article/details/7782623 //seajs使用指南

/article/8122988.html //seajs添加jquery,其中一种实现方式

/article/1423365.html
//seajs模块编写


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: