Как визуализировать компонент React с помощью экспресс-маршрутизатора? - PullRequest
0 голосов
/ 02 июня 2019

Итак, я начал свой проект как одностраничное приложение React. Но оказывается, что было бы удобнее иметь базовый сервер для рендеринга страниц и иметь реальную маршрутизацию. Кроме того, у меня есть некоторые переменные, которые должны быть доступны со всех страниц, и поместить их в качестве реквизита для всех компонентов очень тяжело. Поэтому отправка их со страницами может быть решением. Поэтому я добавил Express, и теперь я могу рендерить базовую HTML-страницу с ним. Но я не знаю, как я собираюсь связать свой компонент реагирования с этим HTML-файлом. Или передайте ему необходимые переменные.

Я использовал response-router-dom, но он не поддерживает обновление страницы. И это не помогает иметь глобальные переменные, которые должны быть доступны из всех компонентов.

Здесь, в моем index.js, вы можете увидеть, как я рендерил свой основной html-файл, а также в конце и прокомментировал, как был обработан мой реагирующий компонент перед добавлением express.

app.use(express.static('public'));

router.get('/', function(req, res, next) {
    res.sendFile('./public/views/loginView.html' , { root : __dirname});
});

app.use(router);
app.listen('8080');

// const wrapper = document.getElementById("app");
// wrapper ? ReactDOM.render(<App />, wrapper) : false;

Вот мой loginView.html

<!DOCTYPE html>
<html lang="fr">
    <head>
        <meta charset="utf-8">
        <!-- links and scripts -->
        <title>The login page</title>
    </head>
    <body>
        <div id="app">
            content
        </div>
    </body>
</html>

Есть ли простой способ связать мой html-файл с его компонентом реагирования и отобразить его? Если нет, есть ли другой способ сделать некоторые переменные (которые не являются константами) доступными из каждого реагирующего компонента (возможно, реакт-редукса)?

1 Ответ

0 голосов
/ 02 июня 2019

Итак, с помощью React вы хотите создать готовый к производству пакет.Обычно это включает в себя разделение пакета, чтобы вы не передавали пользователю файл размером 5+ Мб для загрузки (использование 4G, например, при плохом соединении может занять слишком много времени), а также минимизацию и извлечение кода (чтобы никто не крал ваш код),Эти связанные javascript-файлы будут затем размещаться на вашем сервере со ссылкой на них в файле HTML.

Затем приложение express будет идти по любому пути, просто отображая файл HTML, например, router.get('*', (req, res) => res.send('index.html)).

Я бы порекомендовал использовать веб-пакет для создания пакета, так как он помогает с разбиением и минимизацией и т. Д. Взгляните на веб-пакет для разработки и производства, а также приложение create-реагировать для быстрой настройки проекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...