ReactDOM не определен

У меня есть задача, это сайт, и мы можем вставить только один JS_SCRIPT в HTML. Так есть ли способ сделать это? Я хочу добавить скрипты с помощью document.createElement. Но не вышло.

index.html

<!DOCTYPE html>
<html>
<head>
    <meta charset = "utf-8">
    <meta http-equiv = "X-UA-Compatible" content = "IE=edge">
    <title>
        
    </title>
    <link rel = "stylesheet" href = "">
</head>
<body>
           
    <script src = "./build/test.js"></script>

</body>
</html>

./build/test.js

var app = document.createElement('div');
app.id = 'root';

document.querySelector('body').appendChild(app);

(function() {
  var hm = document.createElement("script");
  hm.src = "https://unpkg.com/[email protected]/umd/react.production.min.js";
  var s = document.getElementsByTagName("script")[0];
  s.parentNode.insertBefore(hm, s);
})();

(function() {
  var hm = document.createElement("script");
  hm.src = "https://unpkg.com/[email protected]/umd/react-dom.production.min.js";
  var s = document.getElementsByTagName("script")[0];
  s.parentNode.insertBefore(hm, s);
})();

(function() {
  var hm = document.createElement("script");
  hm.src = "./build/jsx.bundle.js";
  var s = document.getElementsByTagName("script")[0];
  s.parentNode.insertBefore(hm, s);
})();

./build/jsx.bundle.js

'use strict';

ReactDOM.render(React.createElement(
    'h1',
    null,
    'hello wolrd'
), document.querySelector('#root'));

Есть ли какое-нибудь ключевое слово для поиска? Большое спасибо

Можно немного расширить "не работает"? Получаете ли вы ошибку трассировки? Ваш путь кажется законным

keul 20.11.2018 09:18

Почему бы не сделать это с помощью приложения create react и вручную?

Tal Avissar 20.11.2018 09:20
Поведение ключевого слова "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) для оценки ваших знаний,...
0
2
793
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Попробуй это. Возможно, это не лучшее решение, но выполняет свою работу.

document.write('<script src = "https://unpkg.com/[email protected]/umd/react.production.min.js"></script>');

Боковое примечание: document.write считается вредным и не должен использоваться

keul 20.11.2018 09:25

Вы всегда можете использовать require.js, чтобы объединить все ваши файлы javscript в один большой файл javascript.

Я думаю, вам нужно включить 2 тега скрипта, чтобы создать одноминутное приложение без инструментов для сборки, как объяснил здесь Дэн Абрамов

И он работает с вашим кодом, см. Пример здесь при вставке только одного JS_SCRIPT в HTML

Обновление: Webpack в порядке!


/ * Я получил ответ, надо поменять ./build.js, у меня все отлично работает. * /

var app = document.createElement('div');
app.id = 'root';

document.querySelector('body').appendChild(app);

(function() {
  var hm = document.createElement("script");
  hm.src = "https://unpkg.com/[email protected]/umd/react.production.min.js";
  var s = document.getElementsByTagName("script")[0];
  s.parentNode.insertBefore(hm, s);
})();

(function() {
  var hm = document.createElement("script");
  hm.src = "https://unpkg.com/[email protected]/umd/react-dom.production.min.js";
  var s = document.getElementsByTagName("script")[0];
  s.parentNode.insertBefore(hm, s);

})();
// changed here
window.onload = function() {

  var hm = document.createElement("script");
  hm.src = "./build/jsx.bundle.js";
  var s = document.getElementsByTagName("script")[0];
  s.parentNode.insertBefore(hm, s);
}
Ответ принят как подходящий

Вы также можете использовать библиотеку сборщика, например веб-пакет или просматривать. Это сгенерирует только один файл js для вашего приложения React, который включает все библиотеки, код, CSS и т. д., А затем вы сможете импортировать его в html своего веб-сайта. В конце у вас будет только один файл с именем (например) bundle.js (который уже включает в себя сценарии response-dom и response), и вы можете импортировать его в свой html следующим образом:

<script src = "bundle.js"></script>

Таким образом, нет необходимости создавать свои собственные js-файлы, которые включают в себя все, например, сценарий test.js, который у вас есть. Использование этих сборщиков имеет и другие преимущества, такие как минимизация и некоторые другие преобразования для старых браузеров.

Примечание: использовать веб-пакет непросто, посмотрите официальную документацию, и этот учебник прост и полезен.

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