DOM ảo là bản sao trọng lượng nhẹ của DOM, được lưu trữ/lưu trữ cục bộ trước khi chèn vào DOM thực tế. Chúng ta có thể thay đổi nó như chúng ta muốn và sau đó lưu vào cây DOM thực của chúng ta. Nó sử dụng các thuật toán khác nhau hiệu quả để cập nhật thay đổi qua lại và các trường hợp sử dụng khác.
Tất cả điều này được thực hiện để tránh thao tác trực tiếp với DOM vì đây là một hoạt động tốn kém.
Chúng tôi có phương thức document.createDocumentFragment() có thể được sử dụng trong JavaScript, cũng tạo ra các đối tượng nút cây tưởng tượng để chèn vào DOM.
Tôi muốn biết, nếu tôi không có chế độ xem/thành phần cần quan sát ở bất kỳ trạng thái nào hoặc liên kết hai chiều (ví dụ: chỉ hiển thị mẫu bằng các tùy chọn đã chuyển và xử lý sự kiện trên DOM), Virtual DOM có thực sự tạo sự khác biệt hay không trong các tình huống như vậy?
Hoặc nó là tốt như createDocumentFragment() nếu tất cả nó phải làm là chỉ cần dựng hình và không quan sát trên nhà nước.Việc triển khai thực thi ảo của Virtual khác với createDocumentFragment() nếu không có trạng thái nào được quan sát?
Trả lời
Câu trả lời đơn giản nhất là NodeJS làm (/ sẽ) không có document.createDocumentFragment
, cũng không document.createElement
hoặc bất cứ điều gì như thế.
Điểm của VirtualDOM là cho phép không chỉ chỉnh sửa quy mô lớn cho các hệ thống mà DOM sau này được tiêm, mà còn cho phép bất kỳ chỉnh sửa nào trong môi trường mà DOM chỉ đơn giản không tồn tại.
Đây là sự khác biệt lớn nhất giữa ứng dụng thực tế của DocumentFragment
s và VirtualDOM.
Các lợi ích bổ sung về các trường hợp ảo hóa DOM cụ thể sẽ là các thư viện xem nhất định (React, nói) xử lý những điều này khá đơn giản, so với chèn thủ công vào phân đoạn và con cái của chúng.
Không có gì liên quan đến NodeJS tại đây. Bạn có thể sử dụng "document.createDocumentFragment" trong javascript của bạn để tạo các đoạn và sau đó thêm toàn bộ cây vào DOM. Ngoài ra, tôi đã chỉnh sửa câu hỏi cho cùng một. – vivekj011
Vâng, trong trường hợp đó nó chỉ đơn giản là đi xuống đến những thư viện bạn đang sử dụng, và những gì * họ * sử dụng. Bởi vì nếu bạn làm tất cả bằng tay, không có nhiều chức năng trợ giúp, việc chuyển đổi giữa hai chức năng sẽ cung cấp cho bạn thực tế không có lợi ích, để sử dụng thêm bộ nhớ ... Điểm của VirtualDOM là ... Vritualize the DOM . ... không làm cho nó tốt hơn hoặc nhanh hơn, hoặc huyền diệu hơn hoặc thậm chí dễ dàng hơn để làm việc với. Các thư viện sử dụng VirtualDOM (hoặc là kỹ thuật hoặc thư viện virtual-dom thực tế) có thể làm tất cả những thứ đó và hơn thế nữa. Không chuyển đổi để làm điều đó bằng tay ... – Norguard
Ngoài ra còn có lợi ích trong kiểm thử tích hợp, cho các bài kiểm tra đơn giản, nơi bạn không muốn dành thời gian xây dựng và xé các trang HTML, đặc biệt để có quyền truy cập DOM, để kiểm tra giá trị của một phần tử/thuộc tính (chẳng hạn như chạy một thiết lập CI bằng cách sử dụng Mocha). Nhưng một lần nữa, nếu thử nghiệm không được tính là một lợi ích, một trong hai, thì nó vẫn nằm trong Elms và Reacts và những thứ tương tự. – Norguard
- 1. Cách triển khai mẫu quan sát trong C++
- 2. Trạng thái của Dịch vụ quản trị triển khai OSGi
- 3. Nhóm của bạn thực thi tiêu chuẩn nào cho việc triển khai mã phiên bản chính?
- 4. Việc thực thi java.util.Iterator có sử dụng mẫu trạng thái không?
- 5. Trạng thái hiện tại của việc triển khai WebCL trên các trình duyệt chính là gì?
- 6. Tránh phơi bày chi tiết triển khai khi triển khai mẫu quan sát trong Java?
- 7. Cách truy vấn một thể hiện dòng công việc cho trạng thái thực thi của nó
- 8. Mẫu quan sát được triển khai trong C# với các đại biểu?
- 9. Các tiêu chuẩn ECMAScript nào tuân thủ việc triển khai ExtendScript của Adobe? (nếu có)
- 10. Tại sao việc triển khai Python và thực thi Java của MSER của OpenCV tạo ra đầu ra khác nhau?
- 11. Có khả thi để ảo hóa máy phát triển không?
- 12. Cách triển khai xác thực cookie không trạng thái bằng Play Silhouette?
- 13. Làm thế nào để cho ReactiveCommands quan sát IsExecuting của riêng mình có thể quan sát được
- 14. RxJava, thực thi mã trong chuỗi quan sát trước khi chuỗi hai quan sát
- 15. Triển khai lập kế hoạch đa trạng thái
- 16. Có lỗi trình biên dịch nào được hiển thị bởi việc triển khai tính trạng kiểu is_complete của tôi không?
- 17. Việc ném một ngoại lệ có thay đổi trạng thái của nó không?
- 18. componentWillReceiveProps trạng thái khác với trạng thái hiển thị sau khi cập nhật trạng thái redux
- 19. RXJava - chạy nhiều quan sát cái khác (như concat, nhưng với onCompleted cho mỗi thể quan sát được)
- 20. Trạng thái SessionWizardView chỉ được lưu trên biểu mẫu cuối cùng, thực hiện() không được thực thi
- 21. KnockoutJS - Dải quan sát của các đối tượng quan sát
- 22. Tài khoản thực thi không được giám sát trong SSRS
- 23. Ví dụ siêu đơn giản về quan sát C#/quan sát được với các đại biểu
- 24. Thứ tự của bảng ảo có quan trọng không?
- 25. java.lang.IllegalStateException: Yêu cầu không thể được thực thi; Trạng thái lò phản ứng I/O: STOPPED
- 26. HTTPS có trạng thái hoặc trạng thái không?
- 27. Triển khai ASP.NET: Làm cách nào để tránh mất trạng thái phiên khi cập nhật mã?
- 28. Các quan sát được tính trên nguyên mẫu có khả thi trong KnockoutJS không?
- 29. Trạng thái điều khiển nào bắt đầu và kết thúc trạng thái đánh dấu của UIButton
- 30. Vấn đề C-tích hợp nào nảy sinh với việc triển khai VM không có ngăn xếp?
Câu trả lời phụ thuộc ** hoàn toàn ** vào kịch bản của bạn. Tôi không chắc chắn rằng trong kịch bản bạn mô tả rằng việc sử dụng một đoạn tài liệu sẽ tốt hơn so với thao tác và sửa đổi DOM điển hình hơn. Bạn cần phải kiểm tra kịch bản bạn có trong tâm trí. Phản ứng không chỉ là triển khai thực hiện Virtual DOM và cung cấp các trừu tượng thành phần nữa ... những thứ đó có thể có giá trị. – WiredPrairie