Webpack so với webpack-dev-server so với webpack-dev-middleware so với webpack-hot-middleware vs v.v.


95

Tôi bắt đầu làm việc với webpackvới một node/expressmôi trường phát triển một ReactJSứng dụng phía máy chủ trả lại với react-router. Tôi đang rất bối rối về vai trò của mỗi gói webpack đối với môi trường dev và prod (thời gian chạy).

Đây là bản tóm tắt hiểu biết của tôi:

webpack: Là một gói, một công cụ để nối các phần khác nhau của một ứng dụng web lại với nhau và đóng gói lại trong một tệp .js duy nhất (thông thường bundle.js). Sau đó, tệp kết quả được cung cấp trong môi trường sản phẩm để ứng dụng tải và chứa tất cả các thành phần cần thiết để chạy mã. Các tính năng bao gồm mã thu nhỏ, thu nhỏ, v.v.

webpack-dev-server: Là một gói cung cấp một máy chủ để xử lý các tệp trang web. Nó cũng xây dựng một tệp .js ( bundle.js) từ các thành phần máy khách nhưng phục vụ nó trong bộ nhớ. Nó cũng có tùy chọn ( -hot) để giám sát tất cả các tệp xây dựng và xây dựng một gói mới trong bộ nhớ trong trường hợp thay đổi mã. Máy chủ được phục vụ trực tiếp trong trình duyệt (ví dụ http:/localhost:8080/webpack-dev-server/whatever:). Sự kết hợp giữa tải bộ nhớ, xử lý nóng và phục vụ trình duyệt cho phép người dùng cập nhật ứng dụng trên trình duyệt khi mã thay đổi, lý tưởng cho môi trường phát triển.

Nếu tôi nghi ngờ về dòng chữ trên, tôi thực sự không rõ lắm về nội dung bên dưới, mong các bạn tư vấn cho tôi nếu cần

Một vấn đề phổ biến khi sử dụng webpack-dev-servervới node/expressđó webpack-dev-serverlà máy chủ node/express. Điều đó làm cho môi trường này trở nên khó khăn khi chạy cả máy khách và một số mã nút / mã express (API, v.v.). LƯU Ý: Đây là những gì tôi đã phải đối mặt nhưng sẽ rất tuyệt nếu hiểu tại sao điều đó xảy ra chi tiết hơn ...

webpack-dev-middleware: Đây là một phần mềm trung gian có cùng chức năng webpack-dev-server(gói bộ nhớ, tải lại nóng), nhưng ở định dạng có thể được đưa vào server/expressứng dụng. Theo cách đó, bạn có một loại máy chủ (bên trong webpack-dev-server) máy chủ nút. Oops: Đây có phải là một giấc mơ điên rồ ??? Làm cách nào mà phần này có thể giải được phương trình dev và prod và làm cho cuộc sống trở nên đơn giản hơn

webpack-hot-middleware: Cái này ... Mắc kẹt ở đây ... tìm thấy mảnh này khi tìm kiếm webpack-dev-middleware... Không biết sử dụng nó như thế nào.

ENDNOTE: Xin lỗi, có bất kỳ suy nghĩ sai lầm nào. Tôi thực sự cần trợ giúp để phá hủy những biến thể này trong một môi trường phức tạp. Nếu tiện lợi, vui lòng thêm các gói / dữ liệu khác sẽ xây dựng toàn bộ kịch bản.


2
Không có gói nào được liệt kê ở đây được sử dụng ở phía máy chủ trong quá trình sản xuất - chúng chỉ là công cụ dành cho nhà phát triển. Bạn sẽ sử dụng webpack-dev-middleware(và có khả năng webpack-hot-middleware) nếu bạn muốn viết máy chủ phát triển tùy chỉnh của riêng mình. Trừ khi có một tính năng cụ thể mà bạn muốn mà webpack-dev-serverkhông có, bạn chỉ nên sử dụng tính năng đó.
Joe Clay

Câu trả lời:


120

webpack

Như bạn đã mô tả, Webpack là một trình gói mô-đun, nó chủ yếu gói các định dạng mô-đun khác nhau để chúng có thể chạy trong trình duyệt. Nó cung cấp cả API CLINode .

webpack-dev-middleware

Webpack Dev Middleware là phần mềm trung gian có thể được gắn trong một máy chủ express để phục vụ việc biên dịch gói mới nhất của bạn trong quá trình phát triển. Điều này sử dụng webpackAPI Node của trong chế độ xem và thay vì xuất ra hệ thống tệp, nó sẽ xuất ra bộ nhớ .

Để so sánh, bạn có thể sử dụng một cái gì đó như express.staticthay vì phần mềm trung gian này trong sản xuất.

webpack-dev-server

Bản thân Webpack Dev Server là một máy chủ cấp tốc dùng webpack-dev-middlewaređể phân phát gói mới nhất và xử lý thêm các yêu cầu thay thế mô-đun nóng (HMR) cho các bản cập nhật mô-đun trực tiếp trong máy khách.

webpack-hot-middleware

Webpack Hot Middleware là một giải pháp thay thế cho webpack-dev-servernhưng thay vì tự khởi động một máy chủ, nó cho phép bạn gắn nó vào một máy chủ express hiện có / tùy chỉnh cùng với webpack-dev-middleware.

Cũng thế...

webpack-hot-server-middleware

Thậm chí còn làm mọi thứ nhầm lẫn hơn nữa, còn có Webpack Hot Server Middleware được thiết kế để sử dụng cùng với webpack-dev-middlewarewebpack-hot-middlewaređể xử lý việc thay thế mô-đun nóng của các ứng dụng được hiển thị trên máy chủ.


2
Đối với những người đang tìm kiếm sự cố thay thế mô-đun nóng front-end vs back-end, vui lòng xem bài đăng này: stackoverflow.com/questions/46086297/… Xlee làm rất tốt khi giải thích các yêu cầu cho mỗi bên - phía máy chủ cần khởi động lại , giao diện người dùng cho phép tải trong các gói javascript được cập nhật.
abelito

9

Kể từ bản cập nhật vào năm 2018 và xem xét lưu ý webpack-dev-server trên trang GitHub chính thức của nó:

Dự án đang bảo trì Xin lưu ý rằng webpack-dev-server hiện đang ở chế độ chỉ bảo trì và sẽ không chấp nhận bất kỳ tính năng bổ sung nào trong thời gian tới. Hầu hết các yêu cầu tính năng mới có thể được thực hiện với phần mềm trung gian Express; vui lòng xem xét việc sử dụng các hook trước và sau trong tài liệu.

Lựa chọn tự nhiên để xây dựng một HMR webpack là gì?


2
Nó cũng nói Use webpack-serve for a fast alternative. Use webpack-dev-server if you need to test on old browsers.Vì vậy, bạn có thể muốn thử phục vụ webpack .
Bruce Sun

3
Ghi chú bảo trì đã bị xóa. Vì vậy, tôi đoán nó được đề xuất một lần nữa ??? Thật đáng buồn khi một công cụ dành cho nhà phát triển quan trọng như vậy lại có một đội ngũ bảo trì khủng khiếp xung quanh nó.
Thuyền trưởng Fogetti 27/09/18

5
webpack-serve không được dùng nữa và như @CaptainFogetti cho biết ghi chú bảo trì đã bị xóa khỏi webpack-dev-server kể từ hôm nay
Anoop D
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.