Исходный код: https://github.com/mochamadboval/multipage-vite-vanilla-js
Создайте проект Vite Vanilla JavaScript.
npm create vite@latest multipage-vite-vanilla-js -- --template vanilla cd multipage-vite-vanilla-js npm i
Настройте структуру папок проекта следующим образом.
|- node_modules/ |- src/ |- assets/ |- img/ |- javascript.svg |- js/ |- counter.js |- public/ |- vite.svg |- index.html |- main.js |- style.css |- .gitignore |- package-lock.json |- package.json
Поскольку index.html больше нет в основной папке проекта, npm run dev не может быть выполнен. Поэтому создайте файл vite.config.js и установите новый корневой путь к папке src. Это применимо только при выполнении команд npm run dev и npm run build.
// vite.config.js export default { root: "./src", };
Внесите некоторые изменения следующим образом и переместите метод импорта CSS в HTML.
// ./src/main.js import { setupCounter } from "./assets/js/counter"; import viteLogo from "/vite.svg"; import javascriptLogo from "./assets/img/javascript.svg"; document.querySelector("#app").innerHTML = ` `; setupCounter(document.querySelector("#counter"));
Vite App
Теперь мы можем выполнить команду npm run dev. Однако при запуске npm run build папка dist будет создана в папке src. Чтобы переместить его из этой папки, добавьте следующую конфигурацию.
// vite.config.js export default { root: "./src", build: { outDir: "../dist", emptyOutDir: true, }, };
Мы по-прежнему можем использовать команду npm run Preview для запуска папки dist, поскольку root: "./src" на нее не влияет (он по-прежнему указывает на основную папку проекта).
Далее создадим файл about.html в папке src и файлarticle.html в папке блога.
About | Multipage Vite Vanilla JavaScript About page.
Article | Multipage Vite Vanilla JavaScript Article page.
Затем добавьте следующую конфигурацию, чтобы оба файла также создавались в папке dist.
// vite.config.js export default { root: "./src", build: { outDir: "../dist", emptyOutDir: true, rollupOptions: { input: { index: "./src/index.html", about: "./src/about.html", article: "./src/blog/article.html", }, }, }, };
Теперь проект успешно стал многостраничным.
Однако вы могли заметить, что нам нужно добавлять новый путь во входные данные каждый раз, когда мы создаем новый HTML-файл. Если вы хотите, чтобы это работало динамически, давайте установим пакет glob и добавим следующую конфигурацию.
npm install -D glob
// vite.config.js import { sync } from "glob"; export default { ... build: { ... rollupOptions: { input: sync("./src/**/*.html".replace(/\\/g, "/")), }, }, };
Что можно улучшить и добавить:
Когда мы пишем неправильный URL-адрес, отображается главная страница. Мы можем сделать так, чтобы показывалась страница «Не найдено» по умолчанию.
// vite.config.js export default { appType: "mpa", root: "./src", ...
Если мы развернем проект в Netlify, мы сможем легко перенаправить страницу «Не найдено» по умолчанию на нашу собственную страницу 404.
Создайте 404.html в папке src и файл _redirects (без расширения) в общей папке.
Page not found | Multipage Vite Vanilla JavaScript Page not found.
_redirects /* /404.html 200
Мы можем минимизировать все HTML-файлы в процессе сборки с помощью этого плагина (дайте мне знать, смогу ли я сделать это без плагина).
npm install -D vite-plugin-minify
// vite.config.js ... import { ViteMinifyPlugin } from "vite-plugin-minify"; export default { plugins: [ViteMinifyPlugin()], appType: "mpa", ...
// vite.config.js ... import { resolve } from "path"; export default { resolve: { alias: { "@js": resolve(__dirname, "src/assets/js"), }, }, plugins: [ViteMinifyPlugin()], ...
// ./src/main.js import { setupCounter } from "@js/counter"; import viteLogo from "/vite.svg"; ...
Чтобы включить автоматическое предложение в текстовом редакторе (VS Code), создайте файл jsconfig.json и добавьте эту конфигурацию.
// jsconfig.json { "compilerOptions": { "paths": { "@js/*": ["./src/assets/js/*"] } } }
Вы можете ознакомиться с официальной документацией.
npm install -D tailwindcss postcss autoprefixer npx tailwindcss init
// tailwind.config.js /** @type {import('tailwindcss').Config} */ export default { content: ["./src/**/*.{html,js}"], theme: { extend: {}, }, plugins: [], };
// poscss.config.js export default { plugins: { tailwindcss: {}, autoprefixer: {}, }, };
/* ./src/style.css */ @tailwind base; @tailwind components; @tailwind utilities; root: { ...
Чтобы автоматически сортировать классы TailwindCSS при использовании Prettier, вы можете следовать этой документации.
npm install -D prettier prettier-plugin-tailwindcss
// .prettierrc { "plugins": ["prettier-plugin-tailwindcss"] }
Надеюсь, это вам поможет :)
Источник:
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3