我正在编写一个nodejs / react应用程序,其功能模块最好通过configuration.json文件打开和关闭。功能模块有一个入口点,用于为其请求建立服务器端路由,另一个用于在React中建立客户端路由。
服务器端配置工作得很好。在服务器启动时,它检查配置设置,加载相应的模块,并调用其register()函数,注册其服务器端路由,控制器等。但是,当尝试webpack这个包以进行部署时客户端,我在尝试迭代要包含的模块列表时遇到问题,并将它们webpacked到正在部署的包中。
到目前为止,我已经做了很多研究,但是webpack仍然有点难以理解。我最接近的是在我的webpack.config.js文件中添加一个部分,用于将路由预加载到各个模块,将它们包含在捆绑包中以使代码在客户端上可用,然后将它们的名称粘贴到FEATURE_MODULES全局变量通过DefinePlugin,并在React中检查它是否存在,尝试在这些模块到达浏览器后加载并注册()。
到目前为止,代码似乎已添加到bundle中,并且模块路径在该全局变量中正确传递给客户端,但尝试在客户端上要求()它们会引发关于模块的错误而不是被发现,很可能是因为webpack正在用其查找映射的数字替换模块名称。
我也遇到过关于require.context的问题,能够RegExp这些东西,但这就是我开始迷路的地方。任何人都可以向我提供一个示例或链接到更容易消费的东西,以演示如何完成这项工作吗?
答案 0 :(得分:0)
不是100%明确你正在做的事情正在破裂(如果以上情况没有帮助,你可以发布具体内容吗?),但一般指导原则:
上面的内容应该可以满足您的需求。使用数字替换文件路径需要的是webpack的运行时是如何工作的,所以如果这是一个问题,你可能会采取错误的方式。
如果您似乎必须通过define插件定义太多标志,和/或设置太多条件逻辑 - 这些是单独的构建吗?使用单个webpack配置文件设置多个构建并在它们之间重用共享配置非常容易。