本文发表于 3464 天前,其中的信息可能已经事过境迁
Ai摘要
加载中...|
此摘要由AI根据文章内容生成,并经过人工审核,仅用于文章内容的解释与总结

总感觉用上模块化,js代码才显得高大上一点,可是目前还脱离不了jQuery的简洁简单,于是想着一起使用jQuery和Sea.js,但是改造了多次,在Sea.js下仍然征服不了jQuery,很是苦恼。 看网上说的有两种方法可以使jQuery在Sea.js中乖乖听话。

方法一的两种方式:

JavaScript
//方式一:
define(function(){
    //原有jQuery代码
    return jQuery.noConflict();
});

//方式二:这个会有点小问题,原因与文章下方参考内容的《seajs集成jquery的一个坑》相同
define(‘jQuery’, \[\], function(){
    //原有jQuery代码
    return jQuery.noConflict();
});

此方法的方式一确实有效,但是我不想对原有jQuery改动太大,而且还听说jQuery本身对模块话就有支持,所以不太想用这种方式。

方法二:

找到jQuery中的如下代码

JavaScript
if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
    define( "jquery", \[\], function () { return jQuery; } );
}

修改为:

JavaScript
if ( typeof define === "function"  ) {
    define( "jquery", \[\], function () { return jQuery; } );
}

此方法没有成功,但是这个方法也不是错的,不成功的原因我也搜到了:seajs的路径和ID匹配的原则

最终方案:

我使用的使压缩版jquery.min.js,找到的代码使下面这一段:

JavaScript
    "function"==typeof define&&define.amd&&define("jquery",[],function(){return n});

将其修改为:

JavaScript
    "function"==typeof define&&define.cmd&&define(function(){return n});

修改内容:

  • 删除了"jquery",[], 原因请参考文章下方的《seajs集成jquery的一个坑》
  • 将define.amd修改为define.cmd或者删除&&define.amd,甚至删除"function"==typeof define&&define.amd&&

参考内容:
seajs 2.3.0 添加jquery
seajs模块化jQuery与jQuery插件
seajs集成jquery的一个坑

赞赏博主
评论 隐私政策