我有一个相当大的Web应用程序(大约有一百个带有商店,千元组件和子组件的模块)。 一切都很好,而ab测试很简单 - 每个条件一个模块,if-else语句, webpack 块有时。
但现在,企业希望整个应用程序在相同的测试条件下进行a-b-c-d测试和更改。对于某些用户组,在不同模块的不同位置进行那些测试的恒定条件...... 最好的解决方案似乎是将更改的模块文件存储在不同的模块目录中,并在构建时切换目录。
在同一个配置中不可能为入口/块执行不同的 resolve.modules 路由,不是吗?因此,我们需要许多不同的配置,非常长的项目构建,构建中的大量重复代码以及作为阶乘增长的构建群... 是的,我可以将主要的通用模块和库与commonChunk插件分开,但其他模块和库不会自动分开。
或者我可以将OOP模式用于更改的模块 - 扩展一些父项,将导入的扩展的sumbodule和模板作为参数传递给子项,依此类推 - 不需要路由。我们有一个这样设计的用户表单,带有5个a-b测试和变体 - 不支持的代码是结果,调试和支持的地狱......
我首先考虑了相对路径。好吧,很多“如果”到处都是目标父模块,但没有无用的OOP链。但是如果我们要覆盖模块的不同级别中的几个文件,例如,根模块模板和子组件样式而不更改子组件模板,结果将是默认的子组件样式,而不是来自ab-test目录
我认为这个问题的最佳解决方案是能够为 resolve.modules 路由取决于块(或条目)的某些条件,可能是这样的:
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测试时,如何使路由优先?
现在目录是这样的:
├── components
│ └── commonComponent
│ ├── CommonComponent.jsx
│ └── styles
│ └── CommonComponent.scss
└── modules
└── moduleOne
├── components
│ └── moduleOneComponent
│ ├── ModuleOneComponent.jsx
│ └── styles
│ └── ModuleOneComponent.scss
├── models
│ └── ModuleOneModel.js
├── ModuleOne.jsx
└── styles
└── ModuleOne.scss
我不能覆盖 ModuleOneComponent.scss ,而不会使用新的路线覆盖 ModuleOneComponent.scss :
└── modules
└── moduleTwo
└── components
└── moduleOneComponent
└── styles
└── ModuleOneComponent.scss
有什么想法吗?