在requireJS中捆绑

时间:2014-08-07 06:50:44

标签: javascript requirejs

我是requireJS的新手并且学习它以便我可以在我当前的应用程序中使用它。
在阅读requireJS的API文档时,我遇到了捆绑http://requirejs.org/docs/api.html#config-bundles)作为requireJS的配置选项

requirejs.config({
    bundles: {
        'primary': ['main', 'util', 'text', 'text!template.html'],
        'secondary': ['text!secondary.html']
    }
});

require(['util', 'text'], function(util, text) {
    //The script for module ID 'primary' was loaded,
    //and that script included the define()'d
    //modules for 'util' and 'text'
});

API说明:
如果进行构建并且构建目标不是现有模块ID,或者如果构建的JS文件中的加载器插件资源不应由加载器插件加载,则 Bundles config非常有用。

但是在这里我无法理解为什么我们需要捆绑以及何时应该使用它?

1 个答案:

答案 0 :(得分:27)

构建大型SPA(单页应用程序)时,必须连接并缩小文件。这样做的问题在于,你可能会得到一个大小的缩小的js文件,它可以达到几个megs。

为了解决这个问题,需要引入捆绑功能,它允许您将文件打包到多个捆绑包中,并且只在需要时加载。

因此,例如,如果您有一个包含'home'和'about'的页面,您可以创建一个类似的包:

bundles: {
        'home': ['home', 'util', 'text', 'text!home.html'],
        'about': ['text!about.html']
    }

然后只有在您实际点击about页面时才会提供about页面资源。这样你就会懒得加载资源。

要获得更好的解释和示例,请观看以下精彩视频:http://vimeo.com/97519516

相关部分大约是39分钟。