2,config增加了shim,map,module,enforceDefine。

shim参数解决了使非Intel格局定义的模块(如jQuery插件)及该载入顺序。使用shim参数来取代1.0本的order插件。其实当1.0本子被即使已经有人开过usewrap插件来缓解此类题材。考虑到很多开发者有此类需求(比如一些JS模块是于早时候其别人付出的,非英特尔形式)此次2.0本子直接用这放置中。

上边是一个使jQuery插件形式布置的参数。我们清楚jQuery插件本质上是将命名空间挂在全局的jQuery或jQuery.fn上只要休用define定义的模块。而jQuery插件都指让jQuery,即以require插件时得保证jQuery先下充斥下来。可以如下配置

require.config({
    shim: {
        'jquery-slide': ['jquery']
    }
});
require(['jquery-slide']);

这时会管先下载jquery.js,然后再下载jquery-slide.js。

 

map参数用来缓解及一个模块的例外版本问题,那同灵感来自于Dojo的packageMap。有诸如此类的气象:开发初期使用了底jquery-1.6.4,先前时期升级至了1.7.2。但担心有些倚重jquery-1.6.4的代码升级到1.7.2后出问题。因而保守的为这部分代码继续下1.6.4版本。这时map参数将派上用场。

假设A,B模块中利用了jquery-1.6.4.js,C,D模块中利用了jquery-1.7.2.js。如下

requirejs.config({
    map: {
        'A': {
            'jquery': 'jquery-1.6.4'
        },
        'B': {
            'jquery': 'jquery-1.7.2'
        }
    }
});
require(['A']); // download jquery-1.6.4.js
require(['B']); // download jquery-1.7.2.js

这时require([‘A’])将会下载jquery-1.6.4.js,require([‘B’])会下蛋载jquery-1.7.2.js。模块“A”假设写成“*”则意味着除了B模块使用jquery-1.7.2以外此外模块都使用jquery-1.6.4。map参数解决了模块的次第版本问题,很好的向下兼容了老代码。

 

config参数用来吃指定的模块传递一些行之有效之多寡。如下

require.config({
    config: {
        'A': {
            info: {name: 'jack'}
        }
    }
});

使用A的模块中好透过A.config().info获得到该数额音讯。如

require(['A'], function(A) {
    var info = A.config().info;
    console.log(info);
});

 

enforceDefine故此来强制模块使用define定义,默认为false。如underscore不再协理英特尔后,其代码移除了define。此时假使依然使用requirejs来载入其,它就是平日的js文件了。此时要enforceDefine设为true,即使underscore.js能生充斥而requirejs会报错。如

require.config({
    enforceDefine: true
});
require(['underscore'], function(_){
    console.log(_)
})

 错误音讯

jQuery 1

 

6,在模块载入退步回调中得以下undef函数移除模块的报。

本条灵感源于dojo AMD
loader
,RequireJS取名undef。如下

require(['jquery'], function ($) {
    //Do something with $ here
}, function (err) {
    var failedId = err.requireModules && err.requireModules[0];
    if (failedId === 'jquery') {
        requirejs.undef(failedId);
    } 
});

 

5,更强硬的paths参数。

requirejs
1.x版本被已出paths参数,用来照模块别名。requirejs2.0还增强深,可以配备为一个累组,顺序映射。当前边的不二法门没有得逞载入时可就用后的途径。如下

requirejs.config({
    enforceDefine: true,
    paths: {
        jquery: [
            'http://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min',
            'lib/jquery'
        ]
    }
});

require(['jquery'], function ($) {
});

当google
cdn上的jquery.min.js没有得到时(即便google宕机),可以应用当地的lib/jquery.js。

 

8,删除了priority,packagePaths,catchError.define。

立马几个参数已经发相应的替代品。

 

末得小心的是,虽然效果扩大了过多。但代码量却缩短了即60实践。首假诺错过丢了jQuery
ready相关代码。另外newContext函数依旧时有发生1000几近执。

 

便于前些天晚RequireJS发表了一个充裕本,直接打version1.0.8擢升到了2.0。随后的几乎时辰James伯克(Burke)又连忙的将本调整为2.0.1,当然这配套的包压缩工具r.js呢同时提高至了2.0.1。此次变于充裕,代码也开展了重构,层次重复明显而读。功效上重点变化如下:

 

1,延迟模块的履。

就是一个坏异常变化,在此以前模块加载后factory立马执行。性能上定有一些吃。2.0窜实现,再没人喝斥AMD的模块是及时执行之。现在啊得等及require的时才实施。

 

4,require函数扩展了第三独参数errbacks。

十分显明该函数指模块文件没有载入成功时之回调。那么些也是承诺一些开发者得要求如益,其中尚连其余一个老牌Intel的贯彻curl的作者John
Hann

require(['b'], function(){
    console.log('success');
},function(err){
    console.log(err)
}); 

 err会给有一部分串提示音信。

 

7,删除了jQuery domready相关代码。

这一次没有人又诟病RequireJS和jQuery耦合的无限紧密。

 

相关文章

网站地图xml地图