「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > 複数ページの Vite バニラ JavaScript

複数ページの Vite バニラ JavaScript

2024 年 8 月 5 日に公開
ブラウズ:916

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 ファイルを作成し、新しい root パスを 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 を実行すると、src フォルダー内に dist フォルダーが作成されます。そのフォルダーから移動するには、次の構成を追加します。

// vite.config.js

export default {
  root: "./src",
  build: {
    outDir: "../dist",
    emptyOutDir: true,
  },
};

root: "./src" は影響しないため、dist フォルダーを実行するために npm runreview コマンドを引き続き使用できます (メイン プロジェクト フォルダーを指しているままです)。

次に、srcフォルダーにabout.html、blogフォルダーに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 ページに簡単にリダイレクトできます。

src フォルダーに 404.html を作成し、パブリック フォルダーに _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: {
  ...

Prettier の使用時に TailwindCSS クラスを自動的に並べ替えるには、このドキュメントに従ってください。

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] に連絡して削除してください。
最新のチュートリアル もっと>
  • Webスクレイピング - 面白いですね!
    Webスクレイピング - 面白いですね!
    クールな用語: CRON = 指定された間隔でタスクを自動的にスケジュールするプログラミング技術 ウェブって何? プロジェクトなどを調査するとき、私たちは通常、日記、エクセル、ドキュメントなど、さまざまなサイトから情報を書き込みます。 私たちはウェブをスクレイピングし、手動でデータ...
    プログラミング 2024 年 11 月 6 日に公開
  • お客様の声グリッドセクション
    お客様の声グリッドセクション
    ? CSS グリッドを学習しながら、このお客様の声グリッド セクションの作成が完了しました。 ?グリッドは構造化されたレイアウトの作成に最適です。 ?ライブデモ: https://courageous-chebakia-b55f43.netlify.app/ ? GitHub: https://gi...
    プログラミング 2024 年 11 月 6 日に公開
  • REGISTER_GLOBALS が PHP の主要なセキュリティ リスクとみなされるのはなぜですか?
    REGISTER_GLOBALS が PHP の主要なセキュリティ リスクとみなされるのはなぜですか?
    REGISTER_GLOBALS の危険性REGISTER_GLOBALS は、すべての GET 変数と POST 変数を PHP スクリプト内でグローバル変数として使用できるようにする PHP 設定です。この機能は便利に見えるかもしれませんが、潜在的なセキュリティ脆弱性やコーディング方法のため、使...
    プログラミング 2024 年 11 月 6 日に公開
  • Nodemailer の概要: Node.js での簡単な電子メール送信
    Nodemailer の概要: Node.js での簡単な電子メール送信
    Nodemailer は、メールを送信するための Node.js モジュールです。簡単な概要は次のとおりです: トランスポーター: 電子メールの送信方法を定義します (Gmail、カスタム SMTP など経由)。 const transporter = nodemailer.createTra...
    プログラミング 2024 年 11 月 6 日に公開
  • JavaScript での簡単なエラー処理: 安全な代入演算子がコードを簡素化する方法
    JavaScript での簡単なエラー処理: 安全な代入演算子がコードを簡素化する方法
    JavaScript でのエラー処理は面倒になる場合があります。 try/catch ステートメントで大きなコード ブロックをラップすることは機能しますが、プロジェクトが成長するにつれて、デバッグは悪夢のようになります。幸いなことに、もっと良い方法があります。 安全な代入演算子 (?=) を入力しま...
    プログラミング 2024 年 11 月 6 日に公開
  • Javascript は難しい (ESadness あり)
    Javascript は難しい (ESadness あり)
    長文になりますが、もう一度言わせてください。 JAVASCRIPTは難しいです。最後に会ったとき、私は Javascript の世界に足を踏み入れていました。目を輝かせ、希望に満ちたプログラマーが野生のジャングルに足を踏み入れ、「これはどれほど難しいことでしょう?」と言いました。私はどれほど間違っ...
    プログラミング 2024 年 11 月 6 日に公開
  • ## JavaScript を使用せずに CSS で円グラフのセグメントを作成できますか?
    ## JavaScript を使用せずに CSS で円グラフのセグメントを作成できますか?
    CSS を使用した円のセグメントborder-radius を使用して CSS で円を作成するのが一般的です。しかし、円グラフに似たセグメントを使用しても同様の効果を達成できるでしょうか?この記事では、JavaScript の使用を除き、HTML と CSS だけでこれを実現する方法について詳しく説...
    プログラミング 2024 年 11 月 6 日に公開
  • 小さなベクター ストアをゼロから構築する
    小さなベクター ストアをゼロから構築する
    With the evolving landscape of generative AI, vector databases are playing crucial role in powering generative AI applications. There are so many vect...
    プログラミング 2024 年 11 月 6 日に公開
  • Chrome で AI 実験 API を使用する方法
    Chrome で AI 実験 API を使用する方法
    Chrome で試験運用版 AI API を使用するには、次の手順に従ってください: ハードウェア要件 4GB RAM GPU が利用可能 最低 22GB のスペース Windows 10.11 または macOS Ventura 以降のバージョン (Linux 仕様なし) 次はまだ...
    プログラミング 2024 年 11 月 6 日に公開
  • レビュー: Django DX をブーストする (Adam Johnson 著)
    レビュー: Django DX をブーストする (Adam Johnson 著)
    本のレビューはデリケートです。ネタバレするつもりはありませんが、潜在的な読者に何が期待されるのかを感じてもらいたいと考えています。これは、コンテキストの提供と興味を維持することの間の巧みなバランスです。このレビューでは、あまり多くを明らかにせずに、あなたを誘惑するのに十分なだけの情報を提供することで...
    プログラミング 2024 年 11 月 6 日に公開
  • 配列要素をグループ化し、多次元配列の別の列の値を結合する方法
    配列要素をグループ化し、多次元配列の別の列の値を結合する方法
    配列要素を列ごとにグループ化し、別の列の値を結合する2 つの列を持つネストされた配列を含む配列が与えられた場合、タスクはグループ化することです。特定の列に基づいてサブ配列を作成し、各グループ内の別の列の値を連結して、カンマ区切りのリストを作成します。次の配列の例を考えてみましょう。$array = ...
    プログラミング 2024 年 11 月 6 日に公開
  • 新たに追加された 3 つの例外機能
    新たに追加された 3 つの例外機能
    JDK 7 以降、例外処理は 3 つの新機能 (自動リソース管理、マルチキャッチ、より正確な再スロー) で拡張されました。 マルチキャッチを使用すると、同じ catch 句で複数の例外をキャッチでき、コードの重複を回避できます。 マルチキャッチを使用するには、例外のリストを | で区切って指定しま...
    プログラミング 2024 年 11 月 6 日に公開
  • ES6 コード実行時の「予期しないトークンのエクスポート」エラーを修正する方法?
    ES6 コード実行時の「予期しないトークンのエクスポート」エラーを修正する方法?
    「予期しないトークン エクスポート エラーのトラブルシューティング」プロジェクト内で ES6 コードを実行しようとすると、「予期しないトークン エクスポート」エラーが発生する場合があります。このエラーは、使用されている環境が ES6 モジュールで採用されているエクスポート キーワード構文をサポートし...
    プログラミング 2024 年 11 月 6 日に公開
  • アンインストールしても VSCode 拡張機能がファイル システムから削除されないため、解決策を作成しました。
    アンインストールしても VSCode 拡張機能がファイル システムから削除されないため、解決策を作成しました。
    つまり、これは vscode ベースのエディターの問題です。拡張機能をアンインストールした後でも、拡張機能はファイル システムに残り、時間の経過とともにシステムが停止します。簡単なソリューションを作成しました。この Python スクリプトを実行すると、vscode にインストールされていない拡張機...
    プログラミング 2024 年 11 月 6 日に公開
  • GitHub Actions を介して Web サイトのコンテンツをスケジュールどおりに更新する
    GitHub Actions を介して Web サイトのコンテンツをスケジュールどおりに更新する
    従来の意味でのコンテンツ データベースを必要としない、自立可能なコンテンツ管理システムを構築する私のこれまでの道のりを共有したいと思います。 問題 この Web サイトのコンテンツ (ブログ投稿とブックマーク) は Notion データベースに保存されています: ブックマークのあるデ...
    プログラミング 2024 年 11 月 6 日に公開

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3