SeaJS学习记录,非CMD模块要先暴露
身为SeaJS菜鸟的我今天又碰到问题了,还好"谷人希",做个记录防止大家也碰到.
自己开发的一个小项目今天遇到一个问题:
每次打开这个使用SeaJS的页面或者每次跳转到这个使用了SeaJS的页面的时候,总会报错说jQuery没有定义(即 Uncaught ReferenceError: jQuery is not defined).
我打开开发者工具看到jQuery是有加载进来的,但是每次加载进来的时候jQuery文件的顺序不一样,有时会先出现有时最后才出现.这就是导致报错的根本原因了.
https://github.com/seajs/seajs/issues/286
官方的解释是: 直接调用 jQuery 插件等非标准模块需要先暴露出来,也就是需要先加载进来.
其实SeaJS的demo里有给我们打包好经过CMD处理后的jQuery.而我自己使用的小项目是从jQuery官网down下来的.所以需要预先加载(以下引用自玉伯的官方介绍):
// 配置 jquery 并放入预加载项中 seajs.config({ alias: { 'jquery': 'https://a.alipayobjects.com/static/arale/jquery/1.7.2/jquery.js' }, preload: ["jquery"] }) // 将 jQuery 暴露到全局 seajs.modify('jquery', function(require, exports) { window.jQuery = window.$ = exports })
其实我这里只需要在配置文件里的别名设置下面加上preload即可:
preload: ["jquery"]
好好学习天天向上~