require
функция предназначена для добавления отдельных фрагментов кода («модулей») к текущей области, функция который не был частью языка JavaScript/ECMAScript до ES2015 specification.
Поэтому эта функция не является специфичной для ReactJS и не является частью языка, поэтому Firefox выдает сообщение об ошибке при попытке использовать его в среде браузера.
Использование require
для синхронного загрузки модулей обычно является частью метода, известного как CommonJS (см. this answer для получения дополнительной информации о форматах модуля). Хотя среда, такая как Node.js, предоставляет module API, подобную этой спецификации, браузеры этого не делают; поэтому вы должны принести функцию самостоятельно.
Есть много вариантов сделать это, и вам решать выбрать тот, который лучше всего подходит для вашего рабочего процесса и личного вкуса. Но в целом, модели сводятся либо:
- Явного использовать модуль загрузчик в браузере: используя
<script>
тега, принести загрузчик, такие как SystemJS и сразу же использовать его для загрузки своего собственного кода.
- Bundle кода для одного сценария: использования Bundler, такие как Browserify, Webpack или JSPM и загрузить результаты с помощью одного
<script>
тега. В комплект поставки входит собственный модуль-загрузчик.
Как правило, второй вариант более ориентирован на производственные среды, в то время как первый вариант более практичен в средах разработки.
В экосистеме JS имеется несколько конкурирующих систем модулей, некоторые из которых работают «на лету», некоторые из которых требуют предварительной обработки. Этот конкретный образец, например, будет работать с рабочим процессом Browserify, где Browserify будет «компилировать» все ваши JS-файлы в один. – Amadan