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

时间:2015-10-28 07:32:16

标签: node.js express webpack webpack-dev-server

我正在按照一些教程来构建一个具有表达和反应的同构应用程序。我对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是否必要?

1 个答案:

答案 0 :(得分:58)

  

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

是和否。您可以使用混合方法,它基本上将webpack-dev-server设置为代理。您的快递服务器可以提供除资产之外的所有服务。如果它是资产,请求将转发/代理到webpack-dev-server。有关详细信息,请参阅此处的答案:How to allow for webpack-dev-server to allow entry points from react-router

或者,如果您不想处理所有混乱的代理逻辑并运行2台服务器,则可以使用webpack-dev-middlewarewebpack-hot-middleware。请参阅此处的示例:https://github.com/glenjamin/webpack-hot-middleware/blob/master/example/server.js

  

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

实时重装和热模块更换。我认为非常有用的开发功能

  

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

不,它适用于Webpack的hot module replacement interface之上。您可以创建自己的热门服务器'如果你想。 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接收。

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