Повтор импорта приложения React

Мне интересно, для приложений React, происходит ли import на компоненте во время выполнения? При разработке приложений React обычно весь код React объединяется в один файл, и это заставило меня задаться вопросом, происходит ли импорт компонента каждый раз, когда компонент монтируется.

Например;

import About from '../components/About';

class About extends React.component {
   render() {...}
}

Когда весь код собран и во время производства или разработки, компонент About импортируется только один раз или каждый раз при монтировании компонента?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
0
334
2

Ответы 2

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

import оценка должна происходить только один раз в ECMA-262, 9-е издание, июнь 2018 г. Спецификация языка ECMAScript® 2018, а именно в 15.2.1.16.5.1 Оценка внутреннего модуля и в 15.2.1.17 Семантика среды выполнения: HostResolveImportedModule:

  • This operation must be idempotent if it completes normally. Each time it is called with a specific referencingModule, specifier pair as arguments it must return the same Module Record instance. Multiple different referencingModule, specifier pairs may map to the same Module Record instance. The actual mapping semantic is implementation-defined but typically a normalization process is applied to specifier as part of the mapping process. A typical normalization process would include actions such as alphabetic case folding and expansion of relative and abbreviated path specifiers.

~ 15.2.1.17

2. If module.[[Status]] is "evaluated", then
a. If module.[[EvaluationError]] is undefined, return index.
b. Otherwise return module.[[EvaluationError]].
[3]. If module.[[Status]] is "evaluating", return index.
[4]. Assert: module.[[Status]] is "instantiated".
[5]. Set module.[[Status]] to "evaluating".
...snip ...
[12]. Assert: module occurs exactly once in stack.

~ 15.2.1.16.5.1

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

Если это происходит только один раз, знаете ли вы, как загружаются модули CSS в JS? Я думал, что файлы SASS, импортируемые в файлы компонентов React, будут импортироваться каждый раз при монтировании этого конкретного компонента, предотвращая конфликт стилей CSS.

henhen 27.03.2019 19:02

То, как они загружаются, зависит от вашего упаковщика. С точки зрения спецификации нет окончательной концепции (пока) модулей, отличных от JS. Существует несколько способов загрузки модулей CSS-to-JS мая: от «один раз, так же, как модули JS» для подхода веб-пакета style-loader до «монтирования и размонтирования, как компоненты» для определенных подходов компонентов более высокого порядка, используемых такими вещами, как эмоция / стиль-компоненты, чтобы «никогда, CSS не находится в отдельном файле, за загрузку которого вы отвечаете», как при использовании веб-пакета css-loader с плагином mini-css-extract.

Sean Vieira 28.03.2019 04:48

Другие вопросы по теме