我正在使用
以下是我的理解总结:
注:如果方便,请添加更多的软件包或数据以构建整个场景。
webpack
在node/express
环境下开发一个ReactJS
服务器端渲染应用程序,并使用react-router
。我对每个webpack包在开发和生产(运行时)环境中的角色感到非常困惑。以下是我的理解总结:
webpack
:是一个工具,将Web应用程序的不同部分合并在一起并打包在单个`.js`文件(通常是)。结果文件在生产环境中提供加载应用程序所需的所有组件运行代码的功能,包括缩小代码、最小化等。
webpack-dev-server
:它是一个提供服务器来处理网站文件的工具。它还从客户端组件构建一个单独的`.js`文件(bundle.js),但仅在内存中提供服务。它还有选项(-hot
),可以监视所有构建文件,并在代码更改时在内存中构建新的bundle。该服务器直接在浏览器中提供(例如:http:/localhost:8080/webpack-dev-server/whatever
)。内存加载、热处理和浏览器提供的组合使用户在代码更改时可以在浏览器上获得更新的应用程序,这是开发环境中的理想情况。
webpack-dev-server
与node/express
一起使用时常见的问题是webpack-dev-server
是一个服务器,而node/express
也是一个服务器。这使得此环境难以同时运行客户端和一些node/express代码(如API等)。
webpack-dev-middleware
:这是一个中间件,具有与webpack-dev-server
相同的功能(内存捆绑、热重新加载),但以可以注入到server/express
应用程序的格式。这样,您就有了一个类似于服务器的东西(webpack-dev-server
)在节点服务器内部。通过这种方式,可以在不启动另一个服务器的情况下实现静态资源的快速开发和构建。
webpack-hot-middleware
: 它可以让你在运行过程中修改模块,而不需要刷新整个页面。注:如果方便,请添加更多的软件包或数据以构建整个场景。
webpack-dev-middleware
(以及可能的webpack-hot-middleware
)。除非有特定功能需要使用webpack-dev-server
没有的,否则应该直接使用它。 - Joe Clay