seajs中遇到的问题 #1119

Closed
zzyss86 opened this Issue Mar 4, 2014 · 4 comments

Projects

None yet

3 participants

@zzyss86
zzyss86 commented Mar 4, 2014

seajs.config的设置问题

1、paths设置的路径是“/”开头或URL时,优先级高。“/”开头一定是取当前环境的绝对根路径,base会失效。

//index.html (path: http://www.qq.com/index.html)
seajs.config({
  paths: {
    lib:'/lib/js'
  },
  base: 'http://img.qq.com/'
});
seajs.use('lib/jquery'); //加载的是http://www.qq.com/lib/js/jquery.js

2、使用path时,alias会失效。

seajs.config({
  paths: {
    lib:'lib/js'
  },
  alias: {
    'jquery': 'jquery-1.10.2.min.js'
  },
  debug: true,
});
seajs.use('lib/jquery'); //加载的是lib/js/jquery.js

3、paths设置的路径是“/”结尾的,路径中会变双斜杠。

seajs.config({
  paths: {
    lib:'lib/js/'
  },
  debug: true,
});
seajs.use('lib/jquery'); //加载的是lib/js//jquery.js

模块内的问题

1、模块内加载其它模块,使用require加载时,是同步加载(其实是当前模块和被加载模一起加载成功后才执行)的,但是如果有多个远程脚本,可能影响加载速度。

例如:a模块加载b模块,b模块是一个远程模块(假定5秒延时);a模块也会被b模块阻塞,会先加载b后,a模块才会生效。

2、为解决上述同步加载问题seajs有一个异步加载方法:require.async,但是新问题又来了,如果a模块确实依赖b模块,a在exports方法时又必须同步导出,这个问题怎么解?

Owner
afc163 commented Mar 4, 2014

seajs.config的设置问题

1、2、3 都是对的,就应该是这样。

模块内的问题

1 是对的,浏览器端就只能是这样。
所以问题 2 并不成立,使用 require.async 并不能代替 require 。

zzyss86 commented Mar 4, 2014

感谢@afc163回复,以前是用require.js的,刚用不知道理解是否正确~

zzyss86 commented Mar 4, 2014

2、使用path时,alias会失效。
是我理解错了,可以设置相应的alias

  alias: {
    'jquery': 'jquery-1.10.2.min.js',
    'lib/jquery': 'jquery-1.10.2.min.js',
  },
Owner
army8735 commented Mar 5, 2014

alias是全匹配,不会匹配字符串中的一部分,和path并存。具体逻辑是先alias,再path。

@army8735 army8735 closed this Mar 10, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment