Почему React размер файла настолько большой, учитывая его небольшой API?

Вот цифры

  • min + gzip 26k
  • gzip 90k
  • оригинал 450 + k

И React не содержит много функций в документации. Почему он так велик?

У меня такое ощущение, что это реализация облегченного DOM. Но я хочу быть уверенным.

Ответ 1

Реакция идет совсем немного! Самая большая неочевидная часть React - это, вероятно, система событий - не только React реализует собственную диспетчеризацию событий и пузырь, он нормализует общие события в браузерах, поэтому вам не нужно беспокоиться об этом. Например, SelectEventPlugin является встроенным событием "плагин", который предоставляет событие onSelect, которое ведет себя одинаково во всех браузерах.

Реализация "виртуальной DOM" также требует достойного количества кода; на оптимизацию производительности затрачивается много усилий, поэтому в неиниминированную версию входит ReactPerf, которая является инструментом для измерения производительности рендеринга. При обновлении DOM React также делает некоторые удобные вещи для вас, как поддержание любого выбора ввода и сохранение текущей позиции прокрутки.

Реакция также имеет несколько других трюков в рукаве. Один из самых классных - это то, что он полностью поддерживает рендеринг компонента в строку HTML, даже если у вас нет среды браузера, поэтому вы можете отправить страницу, которая работает даже до загрузки JS.


С чем вы сравниваете React? response-15.0.2.min.js - 43k (gzipped), но jQuery - 33k, тогда как ember-2.6.0.prod.js - 363k (также gzipped). Очевидно, что эти структуры не выполняют точно то же самое, но у них много перекрытий, поэтому я считаю, что сравнение разумно.

Если вы беспокоитесь о размере загрузки, я бы не стал слишком беспокоиться о том, что JS-код способствует этому. Здесь объявление, которое я вижу в правой части моей страницы прямо сейчас:

Его размер загрузки составляет 95 тыс. - я бы не подумал дважды о включении такого изображения на странице, потому что (даже если меня беспокоило производительность), как правило, так много других проблем, связанных с производительностью, для исправления, которые больше прибыльный.


Короче говоря, я не думаю, что React такой большой, и какой размер он действительно имеет, это из-за многих мелких вещей, которые он делает, чтобы помочь вам. Вы цитируете React small API в качестве причины того, что код React должен быть небольшим, но лучшим может быть вопрос: "Как React API может быть настолько простым, учитывая все, что он делает для вас?"

... но это совершенно отдельный вопрос.:) Надеюсь, я ответил на ваш вопрос - рад расширить, если я этого не сделал.

Ответ 2

Несколько мыслей. У меня были некоторые из тех же проблем с этим размером, но после его использования, без шуток, я бы использовал его, если он был размером 5 МБ. Это просто хорошо. Тем не менее, я решил уменьшить как можно больше зависимостей от других библиотек. Я использовал jquery для двух вещей: ajax и автоматический ответ ajax и обработку запросов (beforeSend и т.д.), Которые будут обрабатывать, когда токен был в ответе после входа в систему, а затем убедитесь, что каждый запрос ajax добавил его в заголовок авторизации перед отправка. Я заменил это на супер маленький простой бит собственного javascript. Прекрасно работает. Кроме того, я пытался использовать _underscore. Я заменил его lodash, который меньше и быстрее, хотя в настоящее время я его не использую, поэтому он может полностью удалить его.

Вот одна статья из многих в google, которую я обнаружил, что имеет некоторые альтернативы, используя встроенный JS поверх jquery.

http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/