Верно ли, что браузеру нужно будет загружать библиотеку 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. На бумаге Blazor может быть быстрее, чем любой другой фреймворк, однако нам нужна приверженность специалистов по сопровождению веб-сборки, разработчиков браузеров, Microsoft и сообществ, чтобы сделать теории практичными.
Обновление 10 июля 2018 г.
В репозиториях WebAssembly появились новые предложения.
Разрешение WebAssembly напрямую обрабатывать DOM.
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/