Я делаю статический веб-сайт и использую Gulp для обработки всех файлов.
Статический HTML
Во-первых, у меня была куча статических HTML-файлов, каждый из которых содержал содержимое страницы. Пример index.html
:
<p>Home</p>
Затем у меня был файл layout.html
с HTML, одинаковым для каждой страницы. Это выглядело так:
<!DOCTYPE html>
<html lang="en">
<head>
<link rel="stylesheet" href="assets/styles.min.css">
</head>
<body>
<div id="contents">
<%= contents %>
</div>
<script src="assets/scripts.min.js"></script>
</body>
</html>
Затем в gulpfile
я обрабатывал страницы с помощью плагина gulp-wrap, подобного этому :
gulp.task("html", () => {
return gulp.src(["html/**/*.html", "!html/layout.html"])
.pipe(wrap({ src: project.layout }))
.pipe(gulp.dest(project.build));
});
И это, как и ожидалось, создало все нужные файлы HTML.
Использование реакции
Теперь я хочу использовать React. Итак, в моем основном скрипте, который включается на каждую страницу, я написал следующее:
import React from "react";
import { render } from "react-dom";
render((
<p>This would be some Page component...</p>
), document.body);
Это, конечно, заменяет основное содержимое каждой страницы, поэтому я обратился к react-router. :
import React from "react";
import { render } from "react-dom";
import { Router, Route, browserHistory } from "react-router";
render((
<Router history={ browserHistory }>
</Router>
), document.body);
Я предполагаю, что это сработает (конечно, после добавления некоторых маршрутов в маршрутизатор), но для чего нужны HTML-файлы?
Вопросы
- Как использовать файлы HTML? Оставлю ли я их пустыми, чтобы Gulp генерировал один и тот же HTML-файл
layout.html
везде, где это необходимо? (Или что-то равное, чтобы скопировать файл...) Мне нужны некоторые файлы, чтобы маршруты типаsite.me/about
работали. Это оставило бы все до маршрутизатора. - Нужно ли визуализировать компонент, специфичный для страницы, в каждом HTML-файле страницы? Это означает наличие чего-то подобного в файле
index.html
:
<script>render(<Index />, document.body);</script>
- Какое-то другое
react-router
волшебство?
Как бы вы это сделали?