seajs/examples

require路径匹配不上的问题

YDSS opened this issue · 9 comments

YDSS commented

Hello,刚开始学习seajs,使用require加载jquery时报TypeError: $ is not a function的错。在issue里找到了相关的一些解决办法,#12,#930,#438,试过里面的解决方法但还是没有进展~~
我使用的是spm下载下来的2.1.1版jquery库,模块id是jquery/2.1.1/jquery,

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

seajs.config:

 seajs.config({
       base: './sea-modules/',
       alias: {
         'jquery': 'jquery/2.1.1/jquery.js'
       }
    });

因为是从spm下载的,jquery库放在sea-modules里面,按照在#879里的方法,base路径+id名称,我应该是可以用require取到的~~
另外,还有一个不解之处,我发现在FF的net里有2个jquery资源的请求,一个获取到了资源(type=js),另一个没有取到(type=plain/html),没取到的也没有报404,请问这是什么机制呢?

YDSS commented

额~前面路径匹配的问题已经解决了,貌似不能使用var $ = require('jquery')写法,我改成呢个var jQuery就可以正常加载了,不知道是不是需要修改jquery库才能使用前一种写法~~

 && define.amd

这个是怎么来的

YDSS commented

@army8735 这个我从spm下的代码就有,用的是sea-modules/jquery/2.1.1/jquery.js

spm2/3?

YDSS commented

spm 3.0.3

spm3 下载的包都是 commonjs 的写法,上线使用前需要进行 build 。

YDSS commented

我去试试看~

使用 Sea.js 直接加载第三方库貌似是个坑,要么改动第三方库的代码,要么自己做一些兼容处理。

对于暴露单个全局变量的库,例如 jQuery,我做了一个插件,在不修改库的情况下实现加载:
seajs-var

感兴趣的同学可以看看源码,处理很简单。