Copyright (C) 2013-2017 fmdjs.org
Licensed under the MIT.

内建模块require

require是个函数,用来取得需要被依赖的模块的接口

require( id )

内建模块是不能被修改的。可以这样使用内建模块require:

define( 'case/d', ['require'], function( require ){
    var a = require('case/a'),
        b = require('case/b');
    //todo sth
} );

require只有一个参数,即需要引用的模块的id。require之后返回引用模块的接口

require是同步的,require时,被引用的模块必须已定义

require.use( ids, callback? )

如果明确需要异步去取模块的话,可以使用require.use

define( 'case/e', ['require'], function( require ){
    //todo sth

    require.use( ['case/a','case/b'], function( a, b ){
        //todo sth
    } );

    require.use( 'case/c', function( c ){
        //todo sth
    } );

    require.use( 'case/c.css', function(){
        //todo sth
    } );
} );

require.use类似define定义匿名模块,ids类似dependencies,是需要异步去取的模块的id数组,若只有一个模块时可以只写一个id。当然,引用的JS模块的id无须包含文件后缀名,而引用CSS模块时id必须带上文件后缀名(.css)

当ids中的模块都加载完成,即执行callbackcallback执行时也会依次传入ids各模块的接口

需要注意的是,require.use会循环取得所有依赖的模块,即当取到一个模块时,会检测其依赖的模块是否都已定义,未定义的仍会去异步加载,直至全部加载完成,才会执行callback