需要一个单独的require.js应用程序

时间:2014-01-15 18:59:11

标签: javascript requirejs

我有两个require.js应用。第二个使用第一个作为依赖。它看起来像是:

app1 / main.js中的

requirejs.config( {
    baseUrl : 'js', // baseUrl relative to app1 folder
    paths: {
        // paths used for app1
    }
});
requirejs(['module'], function (module)  {
    return module;
});

这个文件需要完全“独立”并且有自己的require配置,所以它可以加载它的模块和库。

然后, 在app2 / main.js

requirejs.config( {
    baseUrl : 'js', // baseUrl relative to app2 folder
    paths: {
        'app1' : '../app1/main' // Using the other app
    }
});
requirejs(['app1', 'module'], function (app1, module)  {
    console.log(app1, module); // The first one should be app1/module.js, the second app2/module.js
});

这个第二个文件需要有它的配置,但还需要加载app1 / main.js作为依赖,就像它是一个常用的模块一样。

但是两个requirejs.config只是混合了,如果我在第一个文件中需要一个文件,它会使用第二个文件的baseUrl,或者其他类似的问题。

所以:

  • 如何将require.js应用程序转换为可保存其自身配置的可加载模块?
  • 以前没有建筑可以做到这一点吗? (我需要同时处理这两个问题,而且每次更改内容时我都不想等待构建)
  • 我读到了可能是一个解决方案的命名空间,但没有看到如何在这些情况下使用它们 - 如果我必须在我的文件开头手动添加它们对我来说不是问题。 / LI>

1 个答案:

答案 0 :(得分:0)

据我所知,您正在引用第二个应用程序的配置。我相信,您应该将配置和此 app1module 模块分开。然后,您将可以要求 app1module 不用配置部分。

换句话说:

<强> APP1 / main.js

requirejs.config( {
    baseUrl : 'js', // baseUrl relative to app1 folder
    paths: {
        // paths used for app1
    }
});

<强> APP1 /模块1

requirejs(['module'], function (module)  {
    return module;
});

app1 中的 index.html 将以这种方式更新:

来自这样的事情:

<script type="text/javascript" data-main="js/main" src="js/libs/require.js"></script>

为:

<script type="text/javascript" data-main="js/main" src="js/libs/require.js"></script>
<script>
    require(['module1']);
</script>

然后您可以在第二个应用程序中轻松使用app1 / module。

我使用此示例更新了demo repository。看看吧。