Как работает система экспорта в библиотеках по типу React и React Native?

Система экспорта в библиотеках, таких как React и React Native, основана на модулях, которые используются для организации и структурирования кода. Экспорт позволяет разработчикам изолировать функциональность или компоненты, чтобы они могли быть использованы в других частях приложений или даже в других проектах.

В JavaScript существует два основных типа экспорта: именованный экспорт и экспорт по умолчанию.

Именованный экспорт позволяет разработчикам экспортировать несколько элементов или компонентов из модуля с помощью ключевого слова export. При экспорте элемента из модуля с использованием именованного экспорта, этот элемент становится доступным для импорта в другие модули. Разработчик может экспортировать функции, константы, классы или объекты в качестве именованных элементов.

Пример именованного экспорта:

// module.js
export function add(a, b) {
  return a + b;
}

export const PI = 3.14;

export default function sayHello() {
  console.log('Hello!');
}

Компонент add и значение переменной PI экспортируются как именованные элементы, в то время как функция sayHello экспортируется по умолчанию.

В свою очередь, экспорт по умолчанию позволяет разработчикам экспортировать только один элемент, который будет импортирован без использования фигурных скобок. Ключевое слово export default используется для экспорта этого элемента. Экспорт по умолчанию может быть использован в случаях, когда требуется экспортировать единственный компонент или функцию из модуля.

Пример экспорта по умолчанию:

// module.js
export default function sayHello() {
  console.log('Hello!');
}

Этот модуль экспортирует только функцию sayHello в качестве значения по умолчанию. При импорте этой функции в другой модуль, она будет доступна без использования фигурных скобок.

Импорт экспортированных элементов происходит с помощью ключевого слова import в других модулях. В зависимости от типа экспорта может быть использовано одно или несколько имен для импорта элементов.

Примеры импорта элементов:

// import with named export
import { add, PI } from './module.js';

console.log(add(2, 3)); // Output: 5
console.log(PI); // Output: 3.14

// import with default export
import sayHello from './module.js';

sayHello(); // Output: Hello!

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

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

Использование системы экспорта позволяет библиотекам и фреймворкам, таким как React и React Native, предоставлять удобный способ организации кода, повторного использования компонентов и общего кода между проектами.