jQuery在Seajs下的改造

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

方法一的两种方式:

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

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

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

方法二:

找到jQuery中的如下代码

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

修改为:

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

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

最终方案:

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

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

将其修改为:

    "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的一个坑


上一篇
six-site开发汇总 six-site开发汇总
six-site开发大计划: 使用各种技术重复造轮子,初期使用sqlite/Jquery/Sea.js/Semantic UI 搭配各种技术。Java版: 使用Java开发的网站,基于Nutz/Freemarker/sqlite/Druid
2016-01-14
下一篇
SixTools 小工具集 开发之路 SixTools 小工具集 开发之路
一直以来都想开发一些自己用的小工具,一反面看看自己的能力怎么样,算是对自己技术能力的一种考验和锻炼,另一方面,算是解决一些其他工具解决不了的个人化需求,算是两全其美。 引子:MovieRecorderMovieRecorder是我开发的最早
2015-06-26