ホームページ > ウェブフロントエンド > jsチュートリアル > シングルページアプリケーション用のJavaScriptのルーティングシステム

シングルページアプリケーション用のJavaScriptのルーティングシステム

DDD
リリース: 2024-12-13 13:50:11
オリジナル
900 人が閲覧しました

A routing system in JavaScript for Single Page Application

? SPA 用のバニラ JavaScript でのシンプルなルーティング システムの構築

シングル ページ アプリケーション (SPA) の世界では、フレームワークなしでルートを管理するのは困難に思えるかもしれません。しかし、Vanilla JavaScript を使用すると、シンプルでありながら強力なルーティング システムを作成できます。 ?


開始するためのクイックガイドは次のとおりです:

1️⃣ ルーティングの基本を理解する

SPA でのルーティングには、URL を特定のビューまたはコンテンツにマッピングすることが含まれます。ページをリロードする代わりに、アプリは URL に基づいてコンテンツを動的に更新します。

2️⃣ コアコンセプト

  • ハッシュベースのルーティング: window.location.hash (例: /#/home) を使用します。シンプルでサーバー設定は必要ありません。
  • History API: よりクリーンな URL (/home など) のために PushState と Popstate を活用します。

3️⃣ 構築手順

ステップ 1: HTML 構造を設定する

<div>



<h3>
  
  
  <strong>Step 2: Create the Router</strong>
</h3>



<pre class="brush:php;toolbar:false">class Router {
  constructor(routes) {
    this.routes = routes;
    this.init();
  }

  init() {
    window.addEventListener("hashchange", () => this.handleRouteChange());
    this.handleRouteChange();
  }

  handleRouteChange() {
    const currentPath = window.location.hash.slice(1);
    const route = this.routes[currentPath];
    if (route) {
      route();
    } else {
      this.routes["/404"]();
    }
  }
}

// Usage
const router = new Router({
  "/": () => (document.getElementById("root").innerHTML = "Home Page"),
  "/about": () => (document.getElementById("root").innerHTML = "About Page"),
  "/404": () => (document.getElementById("root").innerHTML = "404 Page"),
});

ログイン後にコピー

4️⃣ 機能強化

  • URL をよりクリーンにするには、History API を使用します。
  • パフォーマンスを向上させるために、コンテンツまたはテンプレートを遅延読み込みします。
  • ユーザー エクスペリエンスを向上させるために 404 ルートとフォールバック ルートを追加します。

なぜこれを自分で構築するのでしょうか?

  • 深い理解: ルーティングの背後にある仕組みを学びます。
  • 柔軟性: ライブラリの制約を受けることなく、ニーズに合わせてカスタマイズできます。
  • パフォーマンス: 外部依存関係のオーバーヘッドを回避します。

? プロのヒント: より大きなアプリを構築している場合は、コードをモジュール化し、クエリ パラメーターやネストされたルートなどのエッジ ケースを処理することを検討してください。

独自のルーティング システムを構築したことがありますか?コメントであなたの経験を共有してください! ?

以上がシングルページアプリケーション用のJavaScriptのルーティングシステムの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート