欢迎光临
六楼实验室
网站运行 3004天 | 文章 85 篇 | 分类 15 个 | 标签 54 个

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

赞(0) 打赏
未经允许不得转载:六楼实验室 » jQuery在Seajs下的改造
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

六楼实验室 · 矿软科技

六楼实验室矿软科技

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

css.php