以下有两个问题想请教一下:
问题一:
define( function( require ){
var a = require( 'moduleA' );
var b = require( 'moduleB' );
// other code here
});
请问一下,模块A、B的加载是并行的吗?如果是并行的,那么怎么保证模块都加载完才执行后面的代码呢?如果不是并行的,模块的加载效率是不是稍微会低了
点呢?
问题二:
有两个模块A和B,两个模块都是需要jQuery库的。但是一个项目里可能只用到其中一个模块,或者两个模块都用到。
我想请教的是,当一个项目两个模块都用到,而每个模块内都有 require( 'jQuery' ); 那么是不是会导致jQuery库的代码执行两
次?
PS:
其实两个问题都比较简单,但因为没有充分看完/检索所有文档、电邮列表和源码,所以有以上两个看此很笨的问题,深感抱歉。
在此感谢每位能为小菜解惑的大虾,谢谢。
On Feb 13, 11:24 am, Frank Wang <lifesin...@gmail.com> wrote:
> chemandy, 你好!
>
> 问题一:moduleA 和 moduleB 是并行加载的,在加载完成之后,才会执行 define(factory) 中的 factory
> 函数。原理是,当将 js 文件加载回来后,执行的仅是 define(factory) 函数,factory 则还未执行。执行
> define 时,会扫描 factory.toString() 方法,得到当前模块依赖的文件,下载好好,再执行 factory 函数,
> 这样就实现了提前并行加载,但执行时看起来是同步的。
>
> 问题二:jquery 等重复使用的模块不会重新下载的,只会下载一份。并且在 require('jquery') 时,也只
> 在第一次 require 时会执行 jquery 模块的代码,之后不会重复执行,直接返回 jQuery 对象了。
>
> 希望解释清楚了你的问题,祝使用愉快!
>
> 玉伯
>
> 2012/2/11 chemandy <liujianhua...@gmail.com>