Glimmer не обходит загрузку / синтаксический анализ / компиляцию, если просто изменить язык шаблона с JS или текста на двоичный байт-код, поэтому его загрузка намного меньше и быстрее, а анализ / компиляция выполняется с помощью GlimmerВМ вместо JS ВМ с простой грамматикой, которая действительно быстро анализируется и выполняется, также в будущем виртуальная машина может быть перемещена в WebAssembly, чтобы сделать ее еще быстрее.
Виртуальная машина Glimmer - это просто виртуальная машина, которая выполняетбайт-код, но именно Glimmer обрабатывает состояние, поэтому, когда он хочет визуализировать компонент, он берет этот шаблон компонента и выполняет байт-код шаблона в ВМ.Визуализация шаблонной программы, а также генерация байт-кода программы обновления, и она сохраняется связанной с компонентом, поэтому, когда компонентам требуется повторное рендеринг, в ВМ выполняется только программа обновления.В среде Virtual Dom обновления вызывают функции, которые изменяют виртуальный дом, а затем, мгновенно или когда тянет система рисования (для пакетных обновлений), она будет отличать виртуальный дом от предыдущего и обновлять узлы, которые необходимо обновить.
Виртуальный DOM имеет большой смысл в реакции, поскольку он не использует шаблоны, компоненты JSX переносятся в код JS, который использует реагирующий API для взаимодействия с DOM (отметьте this ).
Angular Ivy (новый движок представления Angular), похоже, похож на Glimmer в том, что он создает некоторый код Ivy вместо полноценного JS, но не создает программу обновления как Glimmer.(Не совсем уверен, что это то, что я получаю из статей Ivy, которые я нашел вокруг.)
Glimmer и Angular делают нечто похожее на Virtual DOM, но на уровне компонентов они контролируют изменения и воспроизводят только те компоненты, которые изменили своиданные.Основное отличие состоит в том, что Glimmer уже знает, что нарисовано, и выполняет байт-код шаблона обновления, сгенерированный предварительно, вместо разборки и полного рендеринга.