reactjs - 如何向 CRA 添加多个入口点
问题描述
我有一个正常的 CRA 没有弹出。我想添加一种方法,当我点击某个 URL 时,它会加载一个不同的 public/index.html 页面,然后 reactdom 呈现一个“不同”的 Main 组件来启动应用程序
如果不弹出这可能吗?我该怎么做?
或者
如果我确实弹出,最简单的方法是什么?
谷歌似乎没有提供太多有用的东西
解决方案
为了有多个入口点,您需要更改 webpack 的配置create-react-app
您可以使用react-app- rewired 覆盖 create-react-app 现有的 webpack 配置,如果没有,您需要从 create-react-app 中弹出并更改配置
这是讨论相同问题的链接
向 create-react-app 添加多个入口点的四个步骤(假设我们添加了一个 admin.html):
弹出项目
npm run eject
添加多个条目
webpack.config.dev.js
entry: { index: [ require.resolve('react-dev-utils/webpackHotDevClient'), require.resolve('./polyfills'), require.resolve('react-error-overlay'), paths.appIndexJs, ], admin:[ require.resolve('react-dev-utils/webpackHotDevClient'), require.resolve('./polyfills'), require.resolve('react-error-overlay'), paths.appSrc + "/admin.js", ] }, output: { path: paths.appBuild, pathinfo: true, filename: 'static/js/[name].bundle.js', chunkFilename: 'static/js/[name].chunk.js', publicPath: publicPath, devtoolModuleFilenameTemplate: info => path.resolve(info.absoluteResourcePath), },
修改 HtmlWebpackPlugin 添加新的插件节点:
new HtmlWebpackPlugin({ inject: true, chunks: ["index"], template: paths.appHtml, }), new HtmlWebpackPlugin({ inject: true, chunks: ["admin"], template: paths.appHtml, filename: 'admin.html', }),
4.webpack Dev Server 重写 urls
/config/webpackDevServer.config.js
:historyApiFallback: { disableDotRule: true, rewrites: [ { from: /^\/admin.html/, to: '/build/admin.html' }, ] }
推荐阅读
- concurrency - 操作系统错误负载平均无法获得 greenlet celery stackoverflow
- hyperledger-fabric - 集成时什么最适合 Hyperledger 结构?
- user-interface - 从可视模型生成密码查询
- java - 在 mongo db 或 java 程序中使用 Regax 搜索排序单词(通过搜索单词位置排序)
- java - 使用 Java 调用 .dll 函数
- python - Python API 错误 (3.6)
- c# - 询问 WCF 服务
- apache-kafka - 将 pyspark 数据框值转换为自定义模式
- spring-integration - 如何从 WMQ 获取 JMS 目标
- android - 我想避免在 vuforia unity 3d 中跟踪对象