一个SeaJs集成jQuery方案
先引用一句话:
首先声明这是个万人坑,不要怨恨苦恼,不要垂头丧气,一定要相信希望就在前方,未来一片光明!
https://github.com/seajs/seajs/issues/930
问题很简单,就是require('jquery')
出现undefined
的情况,刚接触SeaJs的我也喜闻乐见的遇到了这个问题,相信所有人应该都遇到过,至于如何解决网上也有很多解决方案了,就不多赘述了,比如这里: https://www.zhihu.com/question/21703739
打开jQuery源码会发现jQuery有对AMD规范的兼容代码:
1 | if ( typeof define === "function" && define.amd ) { |
既然SeaJs是CMD规范,并且SeaJs也提供了判定当前页面是否有 CMD 模块加载器的方法define.cmd
,如下图:
那么结合起来将AMD兼容代码改为CMD兼容代码即可,所以首先找到jQuery当中的相关代码,将其改为SeaJs定义模块的方式即可:
1 | if ( typeof define === "function" && define.cmd ) { |
同样的道理,不仅仅是jQuery,大部分框架都可以这样修改实现CMD规范的兼容。