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

Javascript 需要单独的require.js应用程序,javascript,requirejs,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.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配置,以便加载其模块和libs

那么, 在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应用程序转换为一个可加载的模块,并保留其自己的配置
  • 在没有建筑的情况下,有可能做到这一点吗?(我需要同时处理这两个问题,我不希望每次更改某些内容时都要等待构建)
  • 我读过关于名称空间的文章,这可能是一个解决方案,但没有看到任何关于如何在此类情况下使用它们的内容-如果我必须在文件开始时手动添加它们,这对我来说不是问题

据我所知,您正在引用第二个应用程序的配置。我相信,您应该将您的配置和这个应用程序1模块分开。然后,您将能够要求您的App1模块使用配置部件

换言之:

app1/main.js

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

requirejs(['module'], function (module)  {
    return module;
});
然后,来自app1的index.html将通过以下方式更新为:

从这样的东西:

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

致:


要求(['module1']);
然后,您可以在第二个应用程序中轻松使用app1/module


我用这个例子更新了我的。看看。

我的解释可能没有提供足够的细节。模块文件只是一个示例,但可能存在任何类型的文件。关键问题是,在文件app1/main.js中发生的所有事情都必须使用自己的require配置,因此它可以在其文件夹中需要文件,而app2/main.js可能使用与其文件夹完全不同的配置,但也可以加载app1/main.js文件。在您的文件中,只有一个配置文件供两个用户使用modules@Malharhak是的,我理解你。您所需要做的就是在您的第一个模块中分离关注点,当您需要它时,它的配置是不需要的(这就是我所描述的)。然后,您的第二个应用程序可能只需要
app/module1
<script type="text/javascript" data-main="js/main" src="js/libs/require.js"></script>
<script>
    require(['module1']);
</script>