Запустить приложение React без сервера
Прежде чем задать свой вопрос, я хотел бы сказать вам, что я очень недавно реагирую, и до сих пор я узнал очень основные понятия реагировать на как компонент, состояние, опору, маршрутизатор и т.д. и может быть, этот вопрос очень забавный, но для этого мне нужно решение. Пожалуйста, поправьте меня, если я где-то ошибаюсь.
Итак, мой вопрос: можно ли запустить приложение на основе реакции без запуска приложения на сервере? В принципе, я хочу, чтобы я мог напрямую использовать путь к файлу index.html в веб-браузере, и мое приложение начинает работать.
Я понимаю, что React js - это библиотека javascript, и весь код в конечном итоге преобразуется в простые файлы javascript с помощью загрузчика babel (если мы используем ES6). Поэтому я думаю, что это должно быть возможно.
Я обнаружил, что могу использовать webpack, который сначала конвертирует мои файлы на основе React или другие js файлы в обычный javascript и создает один файл пакета, который можно использовать в файле Index.html для дальнейшего использования, Я пробовал это, но только некоторые функции работают нормально, как состояние, поддержка, но многие другие функции не работают, как реагировать-маршрутизатор, но когда я использовал сервер npm, все функции начинают нормально работать.
Теперь почему я хочу это сделать, потому что я хочу использовать js для создания веб-приложения Samsung Tizen TV, где я не думаю, что могу использовать сервер npm и все.
Если у кого-то есть какое-то решение, это будет очень полезно.
Благодаря
Ответы
Ответ 1
Я добавил следующее в package.json перед сборкой:
"homepage": "./",
Цитата реагирует на вывод терминала при сборке:
Проект был построен при условии, что он размещен в корне сервера. Чтобы переопределить это, укажите домашнюю страницу в вашем package.json. Например, добавьте это, чтобы создать его для GitHub Pages:
"homepage": "http://myname.github.io/myapp",
Примечание: я уверен, что это не будет работать в каждом проекте.
Ответ 2
Эти несколько концепций в основном все, что вам нужно (плюс методы lifecycles). Вот почему React rocks, это очень легко думать и рассуждать, даже если у вас есть огромное и сложное приложение.
React работает без сервера, просто добавьте теги script и убедитесь, что вы используете JavaScript, которые текущие браузеры понимают как или, загружают источник React и используют его где угодно, что говорит JS и имеет DOM.
<script src="https://unpkg.com/[email protected]/dist/react.js"></script>
<script src="https://unpkg.com/[email protected]/dist/react-dom.js"></script>
Например, Firefox использует React для своих новых devtools, а вот подсказка, которая экономит вам много времени: очень легко использовать встроенные стили с React, я не могу придумать лучшего инструмента для разработки ваших шаблонов электронной почты.
Ответ 3
У меня была такая же проблема сейчас, с приложением по умолчанию react
/react-router
. И react-router
также не работал у меня при использовании BrowserRouter. Но я нашел issue, где рекомендуется изменить BrowserRouter
на HashRouter. Он исправил мою проблему. Чтобы запустить приложение на эмуляторе (на самом деле я пишу для webOS), я меняю src
в теге script
в index.html
на мое местоположение сборки.
Ответ 4
Если вы создали свое приложение с помощью create-реагировать на приложение, вы можете выполнить в командной строке npm run build.
Это соберет ваше приложение и поместит связанные файлы для вашего приложения в папку /build:
Теперь остается сделать только одно: скопируйте содержимое папки /build в свое веб-пространство.
Вы должны настроить веб-сервер таким образом, чтобы все запросы всегда направлялись на ваш index.html
посмотрите эту статью:https://www.andreasreiterer.at/react-app-without-nodejs-server/
Ответ 5
"Главный": ""
используйте это для работы без веб-серверов. его работа для меня очень хорошо.
Ответ 6
//Это мой код, как я запускаю приложение React в Tizen Studio
index.html в tizen.. запустите приложение и добавьте IP-адрес как я :)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta
name="viewport"
content="width=device-width, initial-scale=1.0, maximum-scale=1.0"
/>
<link rel="stylesheet" href="css/style.css" />
<script src="main.js"></script>
</head>
<body>
<script>
window.open("http://1.1.1.1:4000")
</script>
</body>
</html>
настроить xml
<?xml version="1.0" encoding="UTF-8"?>
<widget xmlns:tizen="http://tizen.org/ns/widgets" xmlns="http://www.w3.org/ns/widgets" id="http://yourdomain/HelloWorld" version="1.0.0" viewmodes="fullscreen">
<tizen:application id="7bo2fXhVaD.HelloWorld" package="7bo2fXhVaD" required_version="2.3"/>
<access origin="*" subdomains="true"></access>
<content src="index.html"/>
<feature name="http://tizen.org/feature/screen.size.normal.1080.1920"/>
<icon src="icon.png"/>
<name>AnalyticsTesting</name>
<tizen:profile name="tv-samsung"/>
<tizen:privilege name="http://developer.samsung.com/privilege/network.public"/>
<tizen:privilege name="http://tizen.org/privilege/application.launch"/>
<tizen:privilege name="http://tizen.org/privilege/tv.inputdevice"/>
<tizen:privilege name="http://tizen.org/privilege/tv.display"/>
<tizen:privilege name="http://tizen.org/privilege/fullscreen"/>
<tizen:privilege name="http://tizen.org/privilege/internet"/>
<tizen:privilege name="http://tizen.org/privilege/volume.set"/>
<tizen:privilege name="http://developer.samsung.com/privilege/productinfo"/>
<tizen:setting pointing-device-support='disable' />
<tizen:setting screen-orientation="landscape" context-menu="disable" background-support="enable" encryption="disable" install-location="auto" hwkey-event="enable"/>
</widget>