Đây là những con số
- tối thiểu + gzip 26k
- gzip 90k
- ban đầu 450 + k
Và React không có nhiều tính năng trong tài liệu của nó. Tại sao nó lớn như vậy?
Tôi có cảm giác rằng đó là việc triển khai DOM nhẹ. Nhưng tôi muốn chắc chắn.
Đây là những con số
Và React không có nhiều tính năng trong tài liệu của nó. Tại sao nó lớn như vậy?
Tôi có cảm giác rằng đó là việc triển khai DOM nhẹ. Nhưng tôi muốn chắc chắn.
Câu trả lời:
React thực hiện khá nhiều! Phần nổi bật nhất của React có lẽ là hệ thống sự kiện - React không chỉ thực hiện điều phối và tạo sự kiện của riêng mình, nó còn bình thường hóa các sự kiện phổ biến trên các trình duyệt để bạn không cần phải lo lắng nhiều về nó. Ví dụ: SelectEventPlugin là một "plugin" sự kiện được tích hợp sẵn, cung cấp một onSelect
sự kiện hoạt động giống nhau trong tất cả các trình duyệt.
Việc triển khai DOM ảo cũng cần một lượng mã khá lớn; rất nhiều nỗ lực được dành cho việc tối ưu hóa hiệu suất, đó là lý do tại sao phiên bản chưa được hoàn thiện bao gồm ReactPerf , một công cụ để đo lường hiệu suất hiển thị. Khi cập nhật DOM, React cũng thực hiện một số điều thuận tiện cho bạn như duy trì bất kỳ lựa chọn đầu vào nào và giữ nguyên vị trí cuộn hiện tại.
React cũng có một vài thủ thuật khác. Một trong những điều thú vị nhất là nó hỗ trợ hoàn toàn việc hiển thị một thành phần thành một chuỗi HTML ngay cả khi bạn không có môi trường trình duyệt, vì vậy bạn có thể gửi xuống một trang hoạt động ngay cả trước khi JS được tải.
Bạn đang so sánh React với cái gì? react-15.0.2.min.js
là 43k (gzipped)
, nhưng jQuery là 33k trong khi ember-2.6.0.prod.js
là 363k (also gzipped)
. Rõ ràng là những framework này không làm những việc giống hệt nhau nhưng chúng có rất nhiều điểm trùng lặp, vì vậy tôi nghĩ sự so sánh là hợp lý.
Nếu bạn lo lắng về kích thước tải xuống, tôi sẽ không lo lắng quá nhiều về mã JS góp phần vào điều đó. Đây là một quảng cáo mà tôi nhìn thấy ở bên phải của trang Stack Overflow của mình ngay bây giờ:
Kích thước tải xuống của nó là 95k - Tôi sẽ không nghĩ lại về việc đưa một hình ảnh như vậy vào một trang bởi vì (ngay cả khi tôi lo lắng về hiệu suất) thường có rất nhiều thứ khác liên quan đến hiệu suất để sửa chữa có lợi hơn.
Tóm lại, tôi không nghĩ React lớn đến vậy, và kích thước của nó đến từ rất nhiều điều nhỏ nhặt mà nó làm để giúp bạn. Bạn trích dẫn API nhỏ của React như một lý do khiến mã của React phải nhỏ, nhưng một câu hỏi hay hơn có thể là, "Làm cách nào để API của React có thể trở nên đơn giản như vậy với tất cả những thứ mà nó làm cho bạn?"
… Nhưng đó là một câu hỏi hoàn toàn riêng biệt. :) Hy vọng tôi đã trả lời câu hỏi của bạn - vui vẻ mở rộng nếu tôi không.
Một vài suy nghĩ .. Tôi đã có một số mối quan tâm tương tự với kích thước của nó, nhưng sau khi sử dụng nó, không đùa được, tôi sẽ sử dụng nó nếu nó có kích thước 5MB. Nó chỉ tốt như vậy. Điều đó nói rằng, tôi đã quyết định giảm càng nhiều phụ thuộc vào các thư viện khác càng tốt. Tôi đang sử dụng jquery cho hai việc .. ajax và phản hồi ajax tự động và xử lý yêu cầu (beforeSend, v.v.) sẽ xử lý khi mã thông báo trong phản hồi sau khi đăng nhập và sau đó đảm bảo rằng mọi yêu cầu ajax đã thêm nó vào tiêu đề Ủy quyền trước đó gửi. Tôi đã thay thế điều này bằng một đoạn javascript gốc đơn giản siêu nhỏ. Hoạt động tuyệt vời. Ngoài ra, tôi đã cố gắng sử dụng _underscore. Tôi đã thay thế nó bằng lodash, nhỏ hơn và nhanh hơn, mặc dù hiện tại tôi không sử dụng nó vì vậy có thể xóa nó hoàn toàn.
Đây là một bài báo, trong số rất nhiều bài viết trên google, mà tôi thấy rằng có một số lựa chọn thay thế bằng cách sử dụng JS gốc thay vì jquery.
http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/