React в классический JavaScript в браузере на лету <script src="https://unpkg.com/[email protected]/browser.min.js"></script> • Для ReactDOM.render <script src="https://unpkg.com/react@16/umd/react.development.js"></script> <script src="https://unpkg.com/react-dom@16/umd/react-dom.development.js"></script>
не эффективный, потом не удобный • Правильный подход — генерировать проект • Файлы React конвертируются в классический JavaScript до развертывания на сервере • Можно устанавливать сторонние библиотеки (например, с виджетами React) одной командой из репозитория NPM • Да, Node.js здесь используется для разработки клиентского кода на JavaScript (не путать здесь с кодом серверной части, она может быть любая — хоть Node.js, хоть PHP) • Скрипт-генератор проекта устанавливаем тоже из NPM
(не правим) webapp-client/public/manifest.json webapp-client/src/ webapp-client/src/index.js (не правим) webapp-client/src/App.js (основная разработка здесь) webapp-client/build/
] npm run build • Проект со всеми зависимостями появится в каталоге build/ • Его содержимое можно загрузить в корень с ресурсами и файлами html на сервер — там есть файл index.html • Это будет одностраничное приложение, только клиентский код • Файл build/index.html можно открыть и вручную, если добавить в package.json параметр { […] "homepage" : ".", […] }
var req = new XMLHttpRequest(); req.onreadystatechange = function() { if (req.readyState === 4) { // only if req is "loaded" if (req.status === 200) { // only if "OK" callback(undefined, req.responseText); } else { // error callback(new Error(req.status)); } } }; // can't use GET method here as it would quickly // exceede max length limitation req.open("POST", url, true); //Send the proper header information along with the request req.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); req.send(); } […] }
] npm run build • Копируем содержимое webapp-client/build в webapp- server/client-build/ (если есть символьная ссылка, то не нужно) • Запускаем сервер ] cd webapp-server ] node webapp-server.js • Открываем localhost:3000