我正在按照一些教程来构建一个具有表达和反应的同构应用程序 . 我对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 回答
是的,不是 . 您可以使用混合方法,它基本上将webpack-dev-server设置为代理 . 您的快递服务器可以提供除资产之外的所有服务 . 如果它是资产,请求将转发/代理到webpack-dev-server . 有关详细信息,请参阅此处的答案:How to allow for webpack-dev-server to allow entry points from react-router
或者,如果您不想处理所有混乱的代理逻辑并运行2台服务器,则可以使用webpack-dev-middleware和webpack-hot-middleware . 请参阅此处的示例:https://github.com/glenjamin/webpack-hot-middleware/blob/master/example/server.js
实时重装和热模块更换 . 在我看来,非常有用的开发功能
不,它适用于Webpack的hot module replacement interface . 如果需要,您可以创建自己的'hot server' . 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