47

我正在按照一些教程来构建一个具有 express 和 react 的同构应用程序。我对 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?

4

1 回答 1

62

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

是和不是。您可以使用混合方法,它本质上将 webpack-dev-server 设置为代理。你有你的快递服务器,它可以服务于除资产之外的所有东西。如果它是资产,则请求将被转发/代理到 webpack-dev-server。有关更多详细信息,请参见此处的答案:如何允许 webpack-dev-server 允许来自 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 的热模块更换界面之上工作。如果需要,您可以创建自己的“热服务器”。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 代替。这样,您不必担心代理逻辑​​,您可以轻松地将热重载集成到现有的 express 服务器中,而无需 webpack-dev-server

于 2015-10-28T09:11:27.590 回答