Ось цифри
- хв + gzip 26k
- gzip 90k
- оригінал 450 + k
І React не має багато можливостей у своїй документації. Чому він такий великий?
У мене відчуття, що це реалізація полегшеного DOM. Але я хочу бути впевненим.
Ось цифри
І React не має багато можливостей у своїй документації. Чому він такий великий?
У мене відчуття, що це реалізація полегшеного DOM. Але я хочу бути впевненим.
Відповіді:
React робить зовсім небагато! Найбільша неочевидна частина React - це, мабуть, система подій - React не тільки реалізує власну диспетчеризацію та бульбашку подій, вона нормалізує загальні події в браузерах, так що вам не потрібно так сильно турбуватися про це. Наприклад, SelectEventPlugin - це вбудований "плагін" onSelect
події, який забезпечує подію, яка поводиться однаково у всіх браузерах.
Віртуальна DOM реалізація дійсно займає пристойну кількість коду , а також; на оптимізацію продуктивності витрачається багато зусиль, саме тому немініфікована версія включає ReactPerf , який є інструментом для вимірювання продуктивності візуалізації. Оновлюючи DOM, React також робить для вас кілька зручних речей, як-от підтримка будь-якого вибору вхідних даних та збереження поточної позиції прокрутки незмінною.
У React також є кілька інших хитрощів. Одне з найкрутіших - це те, що він повністю підтримує візуалізацію компонента в рядку HTML, навіть якщо у вас немає середовища браузера, тому ви можете надіслати сторінку, яка працює ще до завантаження JS.
З чим ви порівнюєте React? react-15.0.2.min.js
є 43k (gzipped)
, але jQuery становить 33 тис., а ember-2.6.0.prod.js
є 363k (also gzipped)
. Очевидно, що ці фреймворки не роблять абсолютно однакових речей, але у них є багато перекриттів, тому я думаю, що порівняння є розумним.
Якщо вас турбує розмір завантаження, я б не надто хвилювався, чи сприяє цьому код JS. Ось оголошення, яке я зараз бачу в правій частині сторінки переповнення стека:
Його розмір завантаження становить 95 тис. - Я б не думав двічі про те, щоб включити подібне зображення на сторінку, тому що (навіть якби я турбувався про продуктивність), як правило, існує так багато інших речей, пов’язаних з продуктивністю, які є більш вигідними.
Коротше кажучи, я не думаю, що React настільки великий, і який розмір він має, походить від безлічі дрібниць, які він робить, щоб допомогти вам. Ви називаєте невеликий API React як причину того, що код React повинен бути маленьким, але краще запитання: "Як React's API може бути таким простим з огляду на все, що він робить для вас?"
... але це абсолютно окреме питання. :) Сподіваюся, я відповів на ваше запитання - із задоволенням розширю, якщо цього не зробив.
Кілька думок .. У мене були однакові проблеми з його розміром, але після його використання, не жарт, я б використовував його, якби розмір був 5 Мб. Це просто так добре. Тим не менш, я вирішив зменшити якомога більше залежностей від інших бібліотек. Я використовував jquery для двох речей .. ajax та автоматичної відповіді та обробки запитів ajax (beforeSend тощо), які обробляли б, коли маркер був у відповіді після входу, а потім переконувався, що кожен запит ajax додавав його до заголовка авторизації до відправлення. Я замінив це супер маленьким простим шматочком рідного javascript. Чудово працює. Крім того, я намагався використовувати _underscore. Я замінив його на lodash, який менший і швидший, хоча зараз я його не використовую, тому може взагалі його видалити.
Ось одна із багатьох статей у Google, яку я виявив, що існує кілька альтернатив використання рідного JS над jquery.
http://www.sitepoint.com/jquery-vs-raw-javascript-1-dom-forms/