如果我使用像express这样的节点服务器,是否需要webpack-dev-server?

我正在跟随一些教程来构build一个同构的应用程序与快递和反应。 我对webpack-dev-server感到困惑。

webpack教程介绍了关于webpack-dev-server:

这绑定一个小型快递服务器localhost:8080,它为您的静态资产以及捆绑包(自动编译)提供服务。

它会在重新编译包(socket.io)时自动更新浏览器页面。 在浏览器中打开http:// localhost:8080 / webpack-dev-server / bundle 。

因为我有快递服务器,我真的需要webpack-dev-server吗? 或者使用它的优点和缺点是什么? 如果我想使用react-hot-loader,webpack-dev-server是否必要?

因为我有快递服务器,我真的需要webpack-dev-server吗?

是和不是。 您可以使用一种混合方法,它基本上将webpack-dev-server设置为代理。 你有你的快递服务器,除了资产服务的一切。 如果是资产,请求将被转发/代理到webpack-dev-server。 请参阅此处的答案以获取更多详细信息: 如何允许webpack-dev-server允许来自react-router的入口点

或者,如果您不想处理所有凌乱的代理逻辑并运行2个服务器,则可以使用webpack-dev-middleware和webpack-hot-middleware 。 看到这里的例子: https : //github.com/glenjamin/webpack-hot-middleware/blob/master/example/server.js

使用它的优点和缺点是什么?

实时重新加载和热模块更换。 在我看来非常有用的开发function

如果我想使用react-hot-loader,webpack-dev-server是否必要?

不,它可以在Webpack的热门模块更换界面上运行 。 如果你愿意,你可以创build自己的“热点服务器”。 webpack-dev-server客户端只是监听socket.io进行热更新,并调用postMessage( https://github.com/webpack/webpack-dev-server/blob/8e8f540b2f7b35f7b6c3ce616a7fd2215aaa6eea/client/index.js#L64-L67 )然后由服务器拾取https://github.com/webpack/webpack/blob/bac9b48bfb0f7dd9732f2faafb43ebb22ee2a2a7/hot/only-dev-server.js#L59-L67

或者我build议你可以使用上面提到的webpack-dev-middleware和webpack-hot-middleware。 这样,您不必担心代理逻辑​​,并且可以轻松地将热重新加载到现有的快速服务器中,而无需使用webpack-dev-server