Чи правда, що браузер повинен буде завантажувати бібліотеку Webassembly щоразу, коли сторінка завантажується?
Ні, браузери можуть кешувати файли. Загальний CDN для додатків Blazor зробить трюк.
Чи швидше ця система працює, ніж, наприклад, React / Vue, складена в JavaScript?
Blazor використовує веб-збірку. На папері веб-збірка повинна бути швидшою за будь-яку js-бібліотеку, однак ще не всі браузери мають зрілий аналізатор веб-збірок. Тож ви можете виявити, що браузери не запускатимуть веб-збірку з оптимальною швидкістю на сьогодні.
Ви можете створити невеликий додаток blazor і запустити його у Firefox, chrome або edge. У більшості випадків Firefox запускає програми blazor набагато швидше, ніж chrome або edge, що означає, що виробникам браузерів все одно потрібно вдосконалюватися, навіть Firefox може вдосконалюватись.
Якщо вашій програмі потрібно часто отримувати доступ до DOM, тоді веб-збірка / Blazor буде повільнішою у порівнянні з будь-якими бібліотеками JS, оскільки веб-збірка не може безпосередньо отримати доступ до DOM без використання Invokes (що на даний момент є повільним, будь ласка, зверніться до мого тесту blazer нижче) .
У Firefox 10 000 RegisteredFunction.InvokeUnmarshalle
викликів порожніх методів займає 250 мс, тоді як chrome та edge потребують більше 2400 мс на моєму ПК. ' У чистому JS для того самого сценарію потрібно менше 10 мілізондів.
Крім того, поточна реалізація Blazor має власний механізм MSIL поверх веб-браузера веб-браузера, що означає, що для запуску проекту Blazor працюють два інтерпретатори, як два перекладачі, які замість цього інтерпретують розмову. В даний час Microsoft працює над компілятором AOT, який ще не випущений. Після випуску Blazor стане набагато швидшим, ніж поточна реалізація.
http://www.mono-project.com/news/2018/01/16/mono-static-webassembly-compilation/
Ми можемо сміливо припустити, що веб-збірка - це майбутнє веб-розробки, але наразі ми не можемо сказати нічого про майбутнє Блазора. На папері Blazor може бути швидшим, ніж будь-який інший фреймворк, проте нам потрібні зобов’язання розробників веб-збірок, розробників браузерів, Microsoft та спільнот, щоб зробити теорії практичними.
Оновлення 10 липня 2018 р
У репозиторіях WebAssembly є нові пропозиції.
Дозвіл безпосередньо обробляти DOM WebAssembly.
https://github.com/WebAssembly/proposals/issues/8
Типи посилань для WebAssembly з GC. https://github.com/WebAssembly/reference-types/blob/master/proposals/reference-types/Overview.md
Вище дві пропозиції прокладуть шлях до набагато швидшої взаємодії між DOM та веб-збіркою в майбутньому. IOW Blazor буде набагато швидшим у майбутньому.
Оновлення від 17 жовтня 2018 р
Команда Firefox змогла досягти виклику JS -> WASM так само швидко, як виклики JS -> JS. На сьогоднішній день FireFox набагато випереджає будь-які інші браузери, що стосується підтримки WebAssembly
https://hacks.mozilla.org/2018/10/calls-between-javascript-and-webassembly-are-finally-fast-%F0%9F%8E%89/