跟随代码的执行,在定义了require和define并赋值后,是将cordova所有模块一一注册,例如:
define("cordova",function(require,exports,module){ //工厂函数内部实现代码 });
这里需要注意的是,工厂函数在这个时候并没有实际执行,而只是定义,并作为一个参数传递给define函数。
所有模块注册完之后,通过
window.cordova = require('cordova');
导入至全局环境。
因为是注册后第一次导入,所以在执行require('cordova')时,modules['cordova'].factory的值是注册时的工厂函数,转变为boolean值时为true,从而在这里会通过build调用这个工厂函数,并将这个工厂函数从注册缓存里面删除。
接下来的就是去执行cordova的这个工厂函数了。