Truy cập DOM trong WebAssugging


10

Gần đây tôi đã bắt đầu sử dụng WebAssugging cho một số dự án của mình. Tôi đang làm điều này bởi vì tôi nghe nói rằng Wasm nhanh hơn javaScript.
Khi tôi thực sự bắt đầu dự án Wasm đầu tiên của mình, tôi nhận ra rằng tôi không biết cách thao túng DOM trong C ++.
Có cách nào để làm điều này bằng cách sử dụng Wasm không?


Thao tác với DOM là một nửa hành trình, bạn cũng cần gọi lại lắp ráp web từ JavaScript.
amirouche

Trừ khi hiệu suất của các tập lệnh của bạn thực sự quan trọng, tôi sẽ xem xét việc gắn bó với JavaScript. Một nửa số trang web sử dụng lắp ráp web dường như sử dụng nó cho mục đích xấu , vì vậy một số người dùng đã cố gắng vô hiệu hóa lắp ráp web trong trình duyệt của họ.
mzuther

Câu trả lời:


1

Gần đây tôi đã bắt đầu sử dụng Web hội cho một số dự án của mình. Tôi đang làm điều này bởi vì tôi nghe nói rằng wasm nhanh hơn javascript.

WebAssugging nhanh hơn JavaScript, nhưng chỉ trong một số trường hợp sử dụng nhất định. Với WebAssugging, trình duyệt của bạn phải thực hiện ít công việc hơn để tải xuống và biên dịch mã của bạn, giúp thời gian khởi động nhanh hơn. Tuy nhiên, khi hiệu năng thời gian chạy của WebAssugging thường chỉ nhanh hơn 2 đến 3 lần so với JavaScript. Xem bài viết sau để so sánh rất tốt và thiết thực:

https://hacks.mozilla.org/2018/01/oxidizing-source-maps-with-rust-and-webassugging/

Tuy nhiên, WebAssugging không có quyền truy cập DOM trực tiếp, do đó, mặc dù hiệu năng vượt trội của nó, bạn có thể thấy rằng nó chậm hơn JavaScript cho trường hợp sử dụng của bạn do có thêm chi phí I / O.

Vì lý do này, hiện tại mọi người đang tìm kiếm thành công nhất với WebAssugging cho các tác vụ chuyên sâu / tính toán.

tôi nhận ra rằng tôi không biết cách điều khiển dom trong c ++. Có cách nào để làm điều này bằng cách sử dụng wasm?

Để thao tác với DOM, bạn phải thực hiện việc này thông qua máy chủ JavaScript - mô-đun WebAssugging của bạn phải gửi tin nhắn đến JavaScript 'yêu cầu' nó xử lý DOM thay mặt.

Vì đây là một thách thức chung, có nhiều dự án cộng đồng khác nhau có giải pháp cho vấn đề này. Khi bạn đang sử dụng C ++, điều này có thể khiến bạn quan tâm:

https://github.com/mbasso/asm-dom

Trong tương lai, điều này sẽ trở nên dễ dàng hơn, các đề xuất như Kiểu giao diện sẽ giúp việc giao tiếp với môi trường máy chủ dễ dàng hơn và có thể cho phép các API Web được gọi trực tiếp từ WebAssugging.


1

Thật không may, DOM chỉ có thể được truy cập trong luồng JavaScript chính của trình duyệt. Công nhân dịch vụ, Công nhân web và các mô đun Web hội sẽ không có quyền truy cập DOM. Thao tác gần nhất bạn sẽ nhận được từ WASM là thao tác với các đối tượng trạng thái được truyền đến và được kết xuất bởi luồng chính với các thành phần UI dựa trên trạng thái như Preact / React.

Tuần tự hóa JSON thường được sử dụng để chuyển trạng thái với postMessage()hoặc Kênh phát sóng . Các đối tượng nhị phân hoặc nhị phân có thể được sử dụng với TransferrableArrayBuffers cho các thông báo hiệu suất cao hơn để tránh chi phí tuần tự hóa / giải tuần tự hóa JSON.


"Thật không may, DOM chỉ có thể được truy cập trong luồng JavaScript chính của trình duyệt" - trong khi đó là sự thật, đó không phải là lý do tại sao WebAssugging không thể tương tác với DOM.
ColinE
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.