«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Многостраничный Vite Vanilla JavaScript

Многостраничный Vite Vanilla JavaScript

Опубликовано 5 августа 2024 г.
Просматривать:692

Multipage Vite Vanilla JavaScript

Исходный код: 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 = `
  
  ...   ...     About |     Article  
`; 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, "/")),
    },
  },
};

Что можно улучшить и добавить:

Страница «404 не найдено»

Когда мы пишем неправильный 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

Мы можем минимизировать все 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/*"]
    }
  }
}

Установите TailwindCSS

Вы можете ознакомиться с официальной документацией.

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"]
}

Надеюсь, это вам поможет :)

Источник:

  • https://vitejs.dev/guide/#scaffolding-your-first-vite-project
  • https://vitejs.dev/guide/build.html#multi-page-app
  • https://stackoverflow.com/a/66877705
  • https://github.com/isaacs/node-glob
  • https://www.npmjs.com/package/vite-plugin-minify
Заявление о выпуске Эта статья воспроизведена по адресу: https://dev.to/mochamadboval/multipage-vite-vanilla-javascript-3i0l?1. В случае нарушения авторских прав свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3