在requirejs中使用优化器来分组和加载文件

时间:2011-03-18 19:01:52

标签: javascript requirejs

我们刚开始在项目中使用requirejs而且我们很喜欢 它。目前我们只是用它来管理我们的许多jQuery插件 该网站运行,所以几乎没有抓住它的表面 潜在的...但由于时间的限制,这必须等待。

我在使用优化器时遇到了一些问题,我希望如此 我想知道你是否可以告诉我是否有可能这样做。 我的目录结构:

> /common/
> /common/*.js - common plugins used on most pages on the site
> /infrequent/
> /infrequent/infrequentModule.js
> /infrequent/ckeditor
> /infrequent/ckeditor/1000s.js
> /require.js
> /jquery.js
> /main.js - this file contains all scripts in common. It looks at the page and call the necessary plugins.

优化/建立希望:

  • main.js将包含所有常见脚本。在大多数页面上,此脚本将是唯一加载的(除了require.js)
  • main.js查看页面,如果它看到它需要一个不常见的插件/模块,它会加载该异步。因此,在不常见的页面上,我可能会加载require.js,main.js和infrequentModule.js。

我在构建脚本中尝试了各种方法来排除和 包含文件以获得所需的结果,但无济于事。 有没有人有任何想法或者知道这实际上是否可能?

1 个答案:

答案 0 :(得分:3)

好的,所以我在google网上找到了一些很好的答案for require.js - http://groups.google.com/group/requirejs/browse_thread/thread/359b02473f4e707

以下是我给出的一个有用的答案,我希望可以帮助其他人...

嗨,我目前在我的一个项目中这样做,这是我的 build.js:

paths: { 
                //load libs from cdn 
                "jqueryUI": "jqueryUI", //temp static file for build 
                "swfobject": "swfobject", //temp static file for build 
                "Templates": "../Templates/Settings" 
        }, 
modules: [{ 
            name: "appName", 
                        excludeShallow: ["jqueryUI", "swfobject", "Modules/ 
module.preferences"] 
        } 

然后在我的一个模块中,我需要调用模块/ 我需要时执行的module.preferences:

function loadPreferences(){ 
 require(["Modules/module.preferences"],function(){ 
                     //Execute some init code after the module has 
loaded 
         }) 
 } 
} 

这实现了你所描述的我需要和主要装载的地方 在页面加载时,然后module.preferences在需要时加载异步。 希望有所帮助,杰夫。