Рубрики
Без рубрики

Строительство легких мобильных удобных

Написание пользовательского светового веса реагировать домо

Автор оригинала: Manas Jayanth.

Хороший дизайн очевиден. Отличный дизайн прозрачен. Но как мы создаем такие конструкции, когда мегабайт вашего пакета должен загрузить в браузере пользователя над ненадежными сетевыми подключениями ¯_ (ツ) _/¯

Достаточно сказано о сокращении размера приложений. Существуют и тестируемые способы уменьшения размера расслоения через минификацию, удаление мертвых кодов, кодовая расщепление и et cetea. Поскольку мы начали объединение крупных приложений, эти методы проверены необходимы со временем. Но, к счастью, с реагированием, это не конец этого! React 16.1 Сделал первый выпуск React-Exconier: библиотека, которая позволяет использовать ядро ​​Rection, чтобы написать рендерер, который отображает любую среду, а не просто DOM. Это был уже известным фактом, что реагирование – это среда агностики: реагировать родная была история успеха, свидетельствующая о ней. Но с помощью React-Conconiers никто не может образурывать любую среду хозяина. Популярная попытка объяснить, как это сделано, – это крошечный реагированный рендеры Dustan Kasten (я уверен, что есть больше). Теперь можно писать рендерры для аппаратного обеспечения на основе фирмы, PDFS, QML, REGL, анимации Framer и SO. Так почему бы не пытаться написать еще один рендерер, предназначенный для самого дома, но на этот раз начинающий с голыми минимальными, сосредоточившись на устройствах с низким питанием, убедившись, что он легкий. И это история реакций Дом Lite. Давайте посмотрим, как это работает.

Вот рендерер Файл Вы можете быстро тестировать его, создавая приложение React, используя App-ract – app, используя функцию Render из нашего нового рендерера вместо импорта {Render} из «React-DOM»

API

Во-первых, давайте будем ясно с одним: все здесь упрощено. Я старался изо всех сил, чтобы быть фактически правильным, но ловушки упрощения не должны быть упущены из виду. Вам рекомендуется рапать глубже или добраться до нас. В этом руководстве это не конец, но просто начало в этом процессе обучения.

Функция визуализации: .Render ()

Давайте начнем с того места, где мы уже знакомы: представляют метод рендеринга. READ-DOM RENDER работает, создавая контейнер для дерева DOM DOM, используя Render.createContainer и создает узлы DOM внутри него, используя Render.UpdateContainer. Хотя я думаю, что код говорит сам по себе, в предстоящих разделах я пытался рационализировать их ретроспективно проходить через источник. Я надеюсь, что эти умственные модели вам помогут вам

Суммарирование рендерера

Это сделано с заводской функцией, подверженной воздействию по умолчанию на React-Exconier, эта функция принимает объект, свойства которого могут широко классифицироваться на 3 категории:

  1. Функции, которые помогают мутировать структуры данных хоста (DOM)
  2. Вычисление мутаций, которые будут подталкиваться в хост-среду (DOM)
  3. Увлажняя уже отображаемое домо.

Функции, управляющие структурами данных хоста

Хост-среда часто предоставляют императивные API для нас, чтобы сделать формы, текст и другие такие элементы. Дом ничем не отличается. Однако важно отметить, что DOM предоставляет нам сохраненное режим графики. Часто контрастируют через графику немедленного режима, что разработчики HTML5 Canvas знакомы, обновление UI, построенного на DOM, не требует от нас для создания логики кадров. Нам дают дерево, как структура данных, и мы добавляем, удаляем и изменим узлы в дереве. Учитывая, как манипулирование узлами зависят от самой среды хозяина, нам нужно обеспечить реагирование с способами сделать именно то, что: обновление свойств/атрибутов (с использованием CUSTUPDATE), добавления ребенка (AppendChild и AppendChildTocontainer), вставив перед (insertefore) и вставлять Ребенок (Removechild и RemovechildFromcontainer). Альтернативный способ взглянуть на эти операции: это подпрограммы, которые выполняются во время фазы Commit, когда все мутации рассчитаны.

Хотя вышеупомянутое обновление уже существующего DOM, это методы, такие как AppEdsinitialChild, CreateInStance (создание самого основного узла в дереве, в нашем случае элемент DOM), CreateTextInstance, FinalizeInitialChildren (применяя исходные реквизиты на дерево DOM), наряду с Некоторые прочитанные операции, такие как GetroothostContext, GetChildHostContext, GetPublicIngstance, которые помогают построить дерево в первую очередь.

Вычисление мутаций, которые должны быть толкаться в домо

Мутации, которые мы толкнули на Дом, должны быть рассчитаны в первую очередь. Опять же, этот расчет является Cost Conficate – любое обновление для UI, наконец, не что иное, как изменение в базовой структуре данных. И это снова зависит от хозяина. pepareupdate исключительно обрабатывает эту задачу. Это только цель – вернуть структуру данных, которые реагируют основной алгоритм, который может запланировать будущие мутации. Обратитесь в функцию Diffprops, чтобы получить расплывающее понимание того, как необходимо выглядеть непрерывным алгоритмом с помощью React-Exciller.

Ради краткости, я не покрываю гидратацию в этом посте. Определенно тема для будущих постов

О, кстати, отказ от ответственности: открытие цитата «Хороший дизайн очевиден. Отличный дизайн прозрачен». Приписывается Joe Sparano, графическим дизайнером для оксидной конструкции Co. Ни в коем случае я не собирался звучать так, как если бы это было моим, не стесняйтесь добраться до нас. Я тихо живу под ручкой в Твиттере @manasjayanth. Мы будем любить его, если вы бросаете, отреагируйте до DOM Lite и поделитесь своими мыслями.