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"]

好好学习天天向上~

 

 

 

 

posted @ 2013-03-28 17:20  bant  阅读(988)  评论(0编辑  收藏  举报