Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Webpack 网页包模块分辨率取决于条目或区块名称_Webpack_Resolve_Chunks_Ab Testing_Entry Point - Fatal编程技术网

Webpack 网页包模块分辨率取决于条目或区块名称

Webpack 网页包模块分辨率取决于条目或区块名称,webpack,resolve,chunks,ab-testing,entry-point,Webpack,Resolve,Chunks,Ab Testing,Entry Point,我有一个相当大的web应用程序(大约有一百个模块,其中有商店、上千个组件和子组件)。 当ab测试很简单时,一切都很好——每个条件一个模块,if-else语句,有时网页块 但现在,企业希望在相同的测试条件下对整个应用程序进行a-b-c-d测试和更改。对于某些用户组,在不同模块的不同位置进行这些测试的恒定条件。。。 最好的解决方案似乎是在构建时将更改的模块文件存储在不同的模块目录和切换目录中 不可能在同一配置中为条目/块执行不同的resolve.modules路由,不是吗?因此,我们需要大量不同的配

我有一个相当大的web应用程序(大约有一百个模块,其中有商店、上千个组件和子组件)。 当ab测试很简单时,一切都很好——每个条件一个模块,if-else语句,有时网页块

但现在,企业希望在相同的测试条件下对整个应用程序进行a-b-c-d测试和更改。对于某些用户组,在不同模块的不同位置进行这些测试的恒定条件。。。 最好的解决方案似乎是在构建时将更改的模块文件存储在不同的模块目录和切换目录中

不可能在同一配置中为条目/块执行不同的resolve.modules路由,不是吗?因此,我们需要大量不同的配置,非常长的项目构建,构建中大量重复的代码,大量的构建以阶乘形式增长。。。 是的,我可以使用commonChunk插件分离主要的公共模块和库,但其他模块不会自动分离

或者我可以对更改的模块使用OOP模式—扩展一些父模块,将导入的扩展sumbodules和模板作为参数传递给子模块,等等—不需要路由。我们有一个这样设计的用户表单,有5个a-b测试和变体-结果是不支持的代码,调试和支持的地狱

我首先想到了相对路径。好的,到处都有很多“如果”指向父模块,但没有无用的OOP链。但是,如果我们希望覆盖模块不同级别中的多个文件,例如,根模块模板和子组件样式,而不更改子组件模板,则结果将是默认子组件样式,而不是ab测试目录

我认为这个问题的最佳解决方案是能够为解决问题创造一些条件。模块路由取决于区块(或条目),可能如下所示:

webpackConfig.resolve.modules: function (route, chunk, entry) {
    const modules = {
        newUser: 'newbie_modules_dir_path',
        payedUser: 'payed_modules_dir_path',
    }
    return modules [chunk || Entry] || 'default_modules_dir_path';
}
如果webpack不能用其他方法做类似的事情,也许我应该写一个插件?可能吗

或者,我的问题是目录结构和相对要求路由是否适合所有相对路径和一级模块和组件目录(没有模块子组件,模块和组件内的任何目录仅用于ab测试更改文件)? 当同一模块上同时有不同的ab测试时,如何确定路由优先级

现在目录是这样的:

├── 组件
│   └── 公共组件
│       ├── CommonComponent.jsx
│       └── 风格
│           └── CommonComponent.scss
└── 模块
└── 模内
├── 组件
│   └── 模块组件
│       ├── moduleNodeComponent.jsx
│       └── 风格
│           └── ModuleNodeComponent.scss
├── 模型
│   └── moduleMemodel.js
├── ModuleOne.jsx
└── 风格
└── ModuleOne.scss

我不能在没有新条目的情况下使用如下新路由覆盖ModuleOneComponent.scs:

└── 模块
└── 模
└── 组件
└── 模块组件
└── 风格
└── ModuleNodeComponent.scss


有什么想法吗?

我担心webpack在解决这个问题时可能不够灵活。但是,您可以使用
require.context
然后。也许这就接近你需要的了。非常感谢!他昨天也给我回信了。他说,如果路径匹配,使用自定义加载程序替换加载内容是有原因的。需要更多的时间来尝试所有的解决方案…也许是有用的灵感。