> 웹 프론트엔드 > JS 튜토리얼 > 단일 페이지 애플리케이션을 위한 JavaScript 라우팅 시스템

단일 페이지 애플리케이션을 위한 JavaScript 라우팅 시스템

DDD
풀어 주다: 2024-12-13 13:50:11
원래의
870명이 탐색했습니다.

A routing system in JavaScript for Single Page Application

? SPA용 바닐라 JavaScript로 간단한 라우팅 시스템 구축

단일 페이지 애플리케이션(SPA)의 세계에서는 프레임워크 없이 경로를 관리하는 것이 어렵게 느껴질 수 있습니다. 하지만 바닐라 자바스크립트를 사용하면 간단하면서도 강력한 라우팅 시스템을 만들 수 있습니다! ?


시작하는 데 도움이 되는 빠른 가이드는 다음과 같습니다.

1️⃣ 라우팅의 기본 이해

SPA의 라우팅에는 URL을 특정 보기 또는 콘텐츠에 매핑하는 작업이 포함됩니다. 페이지를 다시 로드하는 대신 앱이 URL을 기반으로 콘텐츠를 동적으로 업데이트합니다.

2️⃣ 핵심 개념

  • 해시 기반 라우팅: window.location.hash(예: /#/home)를 사용합니다. 간단하고 서버 구성이 필요하지 않습니다.
  • 기록 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿