Резюме
В этой статье мы развернем create-react-app
(с маршрутизацией) на действующий URL-адрес, размещенный на страницах GitHub, мы настроим приложение так, чтобы оно служило из подпапки, а наша маршрутизация работала должным образом. Некоторые предварительные условия перед тем, как мы начнем;
- Аккаунт GitHub
- Узел ≥ 6 нм ≥ 5,2
Примечание. Пожалуйста, замените мое имя пользователя GitHub 8eni
своим собственным на протяжении всей статьи.
Мы добьемся своей цели за 3 простых шага:
- Создайте репозиторий GitHub и добавьте
create-react-app
приложение (перейдите к шагу 2, если у вас уже есть) - Добавьте маршрутизацию в наше приложение
- Добавить страницы GitHub и развернуть приложение
Прежде чем мы углубимся, давайте разберемся, что такое GitHub Pages.
Веб-сайты для вас и ваших проектов, размещенные непосредственно в вашем репозитории GitHub. Просто отредактируйте, нажмите, и ваши изменения будут опубликованы.
Создайте репозиторий GitHub и добавьте приложение React
Перейдите в свою учетную запись GitHub и создайте новый репозиторий. Я назвал свое приложение my-react-app.
Клонируйте наш репозиторий локально и запустите create-react-app
из того же каталога, который вы также клонировали.
$: git clone https://github.com/8eni/my-react-app.git
$: npx create-react-app my-react-app
Примечание.
npx
- это средство запуска пакетов, входящее в состав npm 5.2+.
Добавьте маршрутизацию в наше приложение
Для маршрутизации воспользуемся пакетом react-router-dom. Перейдите в наш новый каталог и установите пакет
$: cd my-react-app
$: npm install react-router-dom
Затем импортируйте HashRouter, Route и Link из react-router-dom
в наше приложение. Важно отметить, что мы используем здесь HashRouter
, так как без его обновления при обновлении браузера мы получили бы 404 на нашем текущем URL-адресе страниц GitHub.
// App.js import React, { Component } from 'react'; import { HashRouter, Route, Link } from "react-router-dom";
Затем замените метод render()
в App.js следующим.
// App.js render() { return ( <HashRouter basename='/'> <div> <ul> <li><Link to="/">Home</Link></li> <li><Link to="/about">About</Link></li> </ul> <hr /> <Route exact path="/" component={Home} /> <Route path="/about" component={About} /> </div> </HashRouter> ); }
Поскольку мы будем обслуживать приложение из подкаталога /my-react-app
на нашем URL-адресе страниц GitHub, мы захотим добавить свойство basename
в наш <HashRouter>
. Это будет нашим базовым URL для всех наших маршрутов.
Затем мы добавим несколько видов для наших маршрутов. Добавьте следующие функции в App.js непосредственно перед экспортом компонента.
// App.js ... const Home = () => <div><h2>Home</h2></div> const About = () => <div><h2>About</h2></div> export default App;
Теперь наш файл App.js должен выглядеть следующим образом:
Это все, что нам нужно для работающего приложения React с маршрутизацией. Обслуживайте приложение локально через npm start
и убедитесь, что маршрутизация работает должным образом.
Добавление страниц GitHub и развертывание приложения
Для этого нам потребуется установить пакет gh-pages.
$: npm install gh-pages
Прежде чем мы создадим наше приложение для развертывания, нам нужно добавить свойство homepage
в наш package.json
файл. Это устанавливает базовый URL-адрес для всех наших маршрутов, а также позволяет GitHub Pages знать, где их развернуть. Нам также необходимо обновить свойство scripts
, чтобы мы могли запускать deploy
из командной строки.
// package.json { "name": "my-react-app", "homepage": "https://8eni.github.com/my-react-app" .... "scripts": { ... "predeploy": "npm run build", "deploy": "gh-pages -d build" ... }
Сценарий predeploy
запускается после того, как мы запускаем наш deploy
сценарий, он объединяет наше приложение для развертывания. Развернем наше приложение на страницах GitHub;
$: npm run deploy
Если наша сборка и развертывание прошли успешно, вы должны увидеть Published
в последней строке вашего терминала, а если вы перейдете в свой репозиторий на GitHub и увидите новую созданную ветку с именем gh-pages
.
На вкладках настроек вашего репозитория вы также должны увидеть подтверждение развертывания на ваш новый URL
Перейдя по нашему URL-адресу, мы должны увидеть наше приложение в действии «https://8eni.github.io/my-react-ap Факp.
Примечание. Вы можете увидеть страницу с ошибкой 404 при просмотре URL-адреса после успешного развертывания / публикации. Это нормально, дайте ему 30–60 секунд, обновите браузер, и ваше приложение должно присутствовать.
Заключение
Мы успешно развернули приложение create-response-app с маршрутизацией на действующий URL-адрес на страницах GitHub. Используя HashRouter react-router-dom
, нам не нужно беспокоиться об ошибке 404 при обновлении страницы. Поскольку мы размещаем приложение в подкаталоге, это означает, что мы можем развернуть несколько приложений в разных подкаталогах на нашем URL-адресе страниц GitHub.
Надеюсь, вам понравилась эта статья. Если у вас есть предложения по улучшению, связанные с содержанием этой статьи или вопросы, пожалуйста, оставьте их в комментариях.