Webpack 这个条目设置是如何工作的?

Webpack 这个条目设置是如何工作的?,webpack,Webpack,我使用的是react hot loader,它的webpack.config.js中有这个设置: entry: [ 'webpack-dev-server/client?http://0.0.0.0:3000', // WebpackDevServer host and port 'webpack/hot/only-dev-server', './scripts/index' // Your appʼs entry point ] 然而,在webpack的文档中,我只找到了这种设置

我使用的是
react hot loader
,它的
webpack.config.js
中有这个设置:

entry: [
  'webpack-dev-server/client?http://0.0.0.0:3000', // WebpackDevServer host and port
  'webpack/hot/only-dev-server',
  './scripts/index' // Your appʼs entry point
]
然而,在webpack的文档中,我只找到了这种设置:

 entry: {
    app: ["webpack/hot/dev-server", "./app/main.js"]
  }
问题:

  • webpack/hot/dev server
    webpack/hot/only dev server
    之间有什么区别
  • 第一行是什么?
    webpack dev server
    是否等于
    webpack/hot/dev server
    ?那么什么是
    客户端
    ,为什么它必须绑定到本地主机地址?最后,为什么您需要2
    dev server
    ——第二个服务器只是用于热模块重新加载吗
如何在webpack中实时重新加载和HMR webpack dev服务器的解决方案基于socket.io。它实现了一个套接字io服务器,并在检测到源文件发生更改时通过发送消息通知客户机。它还提供一个socket.io客户端库,用于连接到服务器,并提供有关如何处理来自服务器的消息的逻辑(例如,重新加载页面或应用热模块替换)

包含客户端库代码和一些消息处理程序的文件。如果服务器和客户机在不同的URL上运行,我们可以通过使用为客户机配置正确的服务器URL

因此,在您的webpack配置中,我们正在告诉webpack将此文件嵌入到我们的包中,并连接到在上运行的socket.io服务器(即webpack dev server)

另外,当我们运行
webpack dev server--inline
时,这个文件也会自动嵌入到我们的包中

为什么需要两台服务器? WebpackDevServer的主要用例是为我们的捆绑资产提供服务。如果我们的应用程序只是一个静态html文件,那么它也可以用于同时服务于我们的应用程序。当以这种方式使用WebpackDev服务器时,我们不需要运行两台服务器。尽管这是一个比使用两台服务器更简单的设置,但它并不能真正反映现实生活。通常,我们的应用程序运行在比静态http服务器(例如Rails、Django等)更复杂的服务器上

因此,我们将这些关注点分开,使用WebpackDevServer只在URL(例如)上提供捆绑包,并在不同的URL(例如)上运行应用程序

开发服务器,仅开发服务器 如果您并排打开,您会注意到这些文件之间几乎没有什么区别


根据这两者之间的区别,
dev server
提供了一种默认的回退机制(即当HMR由于某种原因失败时重新加载页面),而
只有dev server
没有这种行为。我想这可以让开发人员实现自己处理HMR故障的方法。

非常感谢您的澄清。webpack比browserify复杂得多,我很难消化所有的文档。我也不觉得webpack的文档很有帮助。这是其中一个库,真正理解将要发生什么的唯一方法是逐行调试代码。文档在填补空白方面变得更加有用。