Экономика стран

К сожалению, большинство людей, которые будут ими затронуты почти весь мир, не будут иметь никакого влияния на результат. Вести Экономика Дайджест иностранной прессы за 14 августа.
Вести Экономика Греции снова придется списывать долги Греция не сможет самостоятельно расплатиться по долгам, и понадобится новая реструктуризация долгов, чтобы спасти страну от банкротства.

5 звичайних практик, які можна припинити робити в React

  1. Оптимізація реагує з самого початку
  2. На стороні сервера для SEO
  3. Вбудовані стилі та імпорт CSS
  4. Вкладений потрійний оператор
  5. Закриття в реакції
  6. Висновок

На даний момент важко стверджувати, що React є однією з найулюбленіших бібліотек на планеті. Існує величезний інтерес до React, і нові розробники втягуються в платформу через свій підхід до інтерфейсу користувача. І хоча бібліотека і вся екосистема «Реакту» зріли протягом багатьох років, існують певні випадки, коли ви опиняєтеся, що ви запитуєте: «Який правильний спосіб це зробити?»

І це справедливе запитання: не завжди існує твердий «правильний» спосіб виконання речей. Насправді, як ви, напевно, вже знаєте, іноді кращі практики не так вже й великі. Деякі з них можуть поставити під загрозу продуктивність, читаність і зробити непродуктивні в довгостроковій перспективі.

У цій статті я опишу 5 загальноприйнятих практик розробки, які можна фактично уникнути при використанні React. Природно, я поясню, чому я вважаю, що практику можна уникнути, і запропонувати альтернативні підходи, які дозволять вам досягти того ж самого.

Оптимізація реагує з самого початку

Розробники React доклали багато зусиль для того, щоб React швидко і нові оптимізації додаються в мікс після кожного нового оновлення. На мою думку, ви не повинні витрачати час на оптимізацію матеріалу, поки не побачите фактичні показники продуктивності.

Чому?

Легше масштабувати React у порівнянні з іншими платформами, оскільки вам не потрібно переписувати цілі модулі, щоб зробити їх швидше. Звичайним винуватцем, що викликає проблеми з продуктивністю, є процес узгодження, який React використовує для оновлення віртуального DOM.

Давайте подивимося, як React обробляє речі під капотом. На кожному render () React генерує дерево, яке складається з елементів інтерфейсу - вершини листя є фактичними елементами DOM. Коли стан або реквізит оновлюються, React повинен створити нове дерево з мінімальними змінами чисел і зберегти речі передбачуваними.

Уявіть, що у вас є дерево, яке виглядає так:

Уявіть, що у вас є дерево, яке виглядає так:

Уявіть, що програма отримує нові дані, а наступні вузли потрібно оновити:

Уявіть, що програма отримує нові дані, а наступні вузли потрібно оновити:

Реакція зазвичай закінчується повторним відображенням всього піддерева, замість того, щоб відображати тільки відповідні вузли, подібні до цього:

Реакція зазвичай закінчується повторним відображенням всього піддерева, замість того, щоб відображати тільки відповідні вузли, подібні до цього:

Коли стан змінюється на компонентах вищого порядку, всі компоненти, що знаходяться нижче, отримують повторне зображення. Це поведінка за замовчуванням, і це добре для невеликих програм. Під час розширення програми слід врахувати фактичну ефективність за допомогою інструментів профілювання Chrome. Інструмент надасть точні відомості про час, витрачений на небажані рендери. Якщо цифри є значними, ви можете оптимізувати час візуалізації, додавши в компонент гачок shouldComponentUpdate.

Гачок запускається до того, як процес повторної рендеринга розпочнеться і за замовчуванням повертає true:

Коли він повертає true, алгоритм розбіжності React приймає і повторно відображає все піддерево. Ви можете уникнути цього, додавши логіку порівняння в shouldComponentUpdate і оновивши логіку тільки тоді, коли відповідні реквізити змінилися.

Компонент не оновлюватиметься, якщо будь-який інший реквізит / стан змінився, за винятком кольору / кількості.

Крім цього, існують певні трюки оптимізації, які не реагують, що розробники зазвичай пропускають, але вони впливають на продуктивність програми.

Я перерахував деякі звички, які можна уникнути, і рішення нижче:

  1. Неоптимізовані зображення - якщо ви будуєте на динамічних зображеннях, вам потрібно розглянути ваші варіанти під час роботи з зображеннями. Зображення з величезними розмірами файлів можуть створити враження, що програма працює повільно. Стисніть зображення, перш ніж натискати їх на сервер або використовувати a динамічна маніпуляція зображення замість цього. Особисто мені подобається оптимізувати реагування зображень з боку Cloudinary, оскільки у неї є власна бібліотека, але ви також можете використовувати Amazon S3 або Firebase.
  2. Розпаковані файли збірки - файли збирання Gzipping (bundle.js) можуть зменшити розмір файлу на велику кількість. Вам потрібно буде внести зміни до конфігурації веб-сервера. Webpack має модуль стиснення gzip, відомий як compression-webpack-plugin . Ви можете використовувати цю техніку для створення bundle.js.gz під час збирання.

На стороні сервера для SEO

Хоча програми з однією сторінкою є чудовими, існують дві проблеми, які досі відносяться до них.

  1. Коли програма завантажується спочатку, в браузері немає кешу JavaScript. Якщо програма велика, час, необхідний для завантаження програми, також буде величезним.
  2. Оскільки програма відображається на стороні клієнта, веб-сканери, які використовують пошукові системи, не зможуть індексувати створений вміст JavaScript. Пошукові системи побачать, що ваша програма буде порожньою, а потім погано класифікує вас.

Саме тут дуже зручна техніка візуалізації на стороні сервера. У SSR вміст JavaScript виводиться з сервера спочатку. Після початкового візуалізації, клієнтський скрипт бере на себе і він працює як звичайний SPA. Складність і витрати, пов'язані з налаштуванням традиційного SSR, вище, тому що вам потрібно використовувати сервер Node / Express.

Там є гарна новина, якщо ви в ній для SEO вигоду, Google індексує і сканує вміст JavaScript без проблем. Google фактично почав сканувати матеріал JavaScript ще в 2016 році, і алгоритм зараз працює бездоганно.

Ось уривок з блогу для веб-майстрів ще в жовтні 2015 року.

Однак, якщо ви робите це для поліпшення початкової швидкості візуалізації, то вам слід спробувати спростити реалізацію SSR за допомогою бібліотеки, наприклад Next.js. Далі зберігається ваш час, який ви могли б витратити на налаштування сервера Node / Express.

Вбудовані стилі та імпорт CSS

Працюючи з React, я особисто спробував різні ідеї, щоб знайти нові способи введення стилів у компоненти React. Традиційний підхід CSS-в-CSS, який існує протягом десятиліть, працює з компонентами React. Всі ваші таблиці стилів перейдуть до каталогу стилів, після чого ви зможете імпортувати необхідний CSS у ваш компонент.

Однак, коли ви працюєте з компонентами, таблиці стилів більше не мають сенсу. Хоча React заохочує вас думати про свою програму з точки зору компонентів, таблиці стилів змушують вас думати про це на рівні документа.

Для об'єднання CSS-коду та JS-коду в єдиний файл застосовуються інші підходи. Стиль Inline є, мабуть, найпопулярнішим серед них.

Вам більше не потрібно імпортувати CSS, але ви жертвуєте читабельністю і ремонтопридатністю. Крім того, вбудовані стилі не підтримують мультимедійні запити, псевдокласи, псевдоелементи і стильові зворотні шляхи. Звичайно, є хакі, які дозволяють вам робити деякі з них, але це просто не так зручно.

Ось де CSS-in-JSS дуже зручно, а Inline Styles - не зовсім CSS-в-JSS. Наведений нижче код демонструє концепцію з використанням стильових компонентів.

Те, що бачить веб-переглядач, виглядає приблизно так:

Новий тег <style> додається до вершини DOM і, на відміну від вбудованих стилів, тут створюються фактичні стилі CSS. Отже, все, що працює в CSS, теж працює у стилізованих компонентах. Крім того, ця методика покращує CSS, покращує читабельність і вписується в архітектуру компонентів. З бібліотекою стильових компонентів ви також отримуєте підтримку SASS, яка була вбудована в бібліотеку.

Вкладений потрійний оператор

У React популярні трійкові оператори. Це мій оператор go-to для створення умовних операторів, і він чудово працює в методі render (). Наприклад, вони допоможуть вам зробити елементи вбудованими в наведеному нижче прикладі, я використав його для відображення статусу входу.

Однак, коли ви знову і знову гніздять потрійні оператори, вони можуть стати потворними і важкими для читання.

Як ви можете бачити, скорочення нотатки є більш компактними, але вони роблять код безладним. Тепер зображення, якщо у вашій структурі було десяток або більше вкладених трійників. І це відбувається набагато частіше, ніж ви думаєте. Після того, як ви розпочнете з умовними операторами, ви легко зможете продовжувати вкладати його і, нарешті, ви досягаєте точки, де ви вирішите, що вам потрібна краща техніка для обробки умовного рендеринга.

Але добре, що у вас є багато альтернатив, які ви можете вибрати. Ви можете використовувати бабіновий плагін, наприклад JSX Control Statements, який розширює JSX для включення компонентів для умовних операторів і циклів.

Там інший популярний метод називається iify (IIFE - негайно викликається вирази функцій). Це анонімна функція, яка викликається відразу після визначення.

Ми перенесли функцію всередині пари дужок, щоб зробити анонімну функцію виразом функції. Цей шаблон популярний у JavaScript з багатьох причин. Але в React ми можемо розмістити всі функції if / else всередині функції і повернути все, що ми хочемо зробити.

Ось приклад, який демонструє, як ми будемо використовувати IFFE у React.

IIFE може вплинути на продуктивність, але в більшості випадків це не буде нічого істотного. Є більше методів для виконання умовних операторів у React, і ми розглянули це у 8 методів для умовного рендеринга в React .

Закриття в реакції

Закриття - це внутрішні функції, які мають доступ до змінних і параметрів зовнішньої функції. Закриття скрізь у JavaScript, і ви, ймовірно, використовуєте його, навіть якщо ви ще не зрозуміли.

Але коли ви використовуєте закриття в методі render (), це насправді погано. Щоразу, коли компонент SayHi візуалізується, створюється нова анонімна функція, яка передається в компонент Button. Хоча реквізит не змінився, <Button /> буде змушений повторно відтворити зображення. Як згадувалося раніше, втрачені віддачі можуть мати безпосередній вплив на продуктивність.

Замість заміни закриття методом класу. Методи класу більш зручні для читання і легко налагоджуються.

Висновок

Коли платформа зростає, щодня виникають нові моделі. Деякі зразки допомагають поліпшити загальний робочий процес, тоді як деякі інші мають значні побічні ефекти. Коли побічні ефекти впливають на продуктивність вашої програми або компрометують читаність, це, напевно, краща ідея шукати альтернативи. У цій посаді я розгляну деякі з практик у React, яких ви можете уникнути через їх недоліки.

Які ваші думки щодо реагування та кращих практик у React? Поділіться ними в коментарях.

І хоча бібліотека і вся екосистема «Реакту» зріли протягом багатьох років, існують певні випадки, коли ви опиняєтеся, що ви запитуєте: «Який правильний спосіб це зробити?
Чому?
Які ваші думки щодо реагування та кращих практик у React?
Навигация сайта
Реклама
Панель управления
Календарь новостей
Популярные новости
Информация
Экономика стран www.mp3area.ru © 2005-2016
При копировании материала, ссылка на сайт обязательна.