如何在多个项目中使用一组通用的require.config值

时间:2013-02-07 07:30:08

标签: backbone.js requirejs

有没有办法可以为依赖于公共项目的不同项目的require.config提供一些常用值?公共项目基本上包含项目可能使用的所有第三方库和自定义小部件。

例如。我有3个项目Proj1,Proj2,Proj3。他们使用的通用模块称为“shell”。我有一组require.config路径和所有3个路由器配置代码。

require.config({
    baseUrl:'parentFolder/',
    paths:{
        /*  Third party libs  */
        jquery:'shell/lib/jquery/jquery-1.7.1',
        json2: 'shell/lib/json/json2',
        underscore:'shell/lib/underscore/underscore',
        backbone:'shell/lib/backbone/backbone',
        handlebars:'shell/lib/handlebars/handlebars',

        /* Routers */
        externalRouter:'shell/common/util/externalRouter',

        /* My custom widgets */          
        datePicker:'shell/common/widget/datePicker',
        treeView:'shell/common/widget/TreeView',
        videoPlayer:'shell/common/widget/VideoPlayer',
   }
});

我想在一个位置维护上面的配置代码,并希望3个项目在自己的require.config中使用它,并能够添加新的配置参数。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:0)

这可以通过多种方式实现,但最简单的可能是利用RequireJS允许您在加载require之前将配置对象定义为名为require.js的全局变量这一事实。并在启动时自动应用这些值。

因此,将您的常用配置放在一个简单的javascript源文件中,如下所示:

//common-config.js
require = {
    baseUrl:'parentFolder/',
    paths:{
        jquery:'shell/lib/jquery/jquery-1.7.1',
    }
};

并将其包含在之前的:require.js:

<script src="common-config.js"></script>
<script src="require.js" data-main="main"></script>

然后,您可以像往常一样使用特定于应用程序的配置在主模块中再次调用require.config。请注意,如果您定义baseUrl选项,则相对于该基本网址会引用main模块,因此您必须相应地调整data-main属性。

此功能的文档为here