const express = require('express');
const app = express();
app.get('/', (req, res) => {
res.send('홈 페이지');
});
app.get('/about', (req, res) => {
res.send('소개 페이지');
});
app.listen(3000, () => {
console.log('서버가 3000번 포트에서 실행 중입니다.');
});
클라이언트 측 라우팅은 웹 애플리케이션이 로드된 후 클라이언트 측에서 라우팅을 처리하는 방식입니다. 주로 JavaScript 프레임워크(예: Angular, React, Vue.js)를 사용하여 구현됩니다.
// app-routing.module.ts 파일에서 라우트 설정을 추가합니다.
import { NgModule } from '@angular/core';
import { RouterModule, Routes } from '@angular/router';
import { HomeComponent } from './home.component';
import { AboutComponent } from './about.component';
const routes: Routes = [
{ path: '', component: HomeComponent },
{ path: 'about', component: AboutComponent },
];
@NgModule({
imports: [RouterModule.forRoot(routes)],
exports: [RouterModule],
})
export class AppRoutingModule {}
<!-- app.component.html -->
<nav>
<ul>
<li><a routerLink="/">홈</a></li>
<li><a routerLink="/about">소개</a></li>
</ul>
</nav>
<router-outlet></router-outlet>
// routes.ts
import { Routes } from '@angular/router';
import { HomeComponent } from './home.component';
import { AboutComponent } from './about.component';
export const routes: Routes = [
{
path: '',
component: HomeComponent,
providers: [
// 라우트 레벨 프로바이더
]
},
{
path: 'about',
loadComponent: () => import('./about/about.component')
.then(m => m.AboutComponent),
// 지연 로딩 구현
}
];
// main.ts
import { bootstrapApplication } from '@angular/platform-browser';
import { AppComponent } from './app/app.component';
import { provideRouter } from '@angular/router';
import { routes } from './app/routes';
bootstrapApplication(AppComponent, {
providers: [
provideRouter(routes)
]
}).catch(err => console.error(err));
// app.component.ts
import { Component } from '@angular/core';
import { RouterOutlet, RouterLink } from '@angular/router';
@Component({
selector: 'app-root',
standalone: true,
imports: [RouterOutlet, RouterLink],
template: `
<nav>
<a routerLink="/">홈</a>
<a routerLink="/about">소개</a>
</nav>
<router-outlet />
`
})
export class AppComponent {}
// home.component.ts
import { Component } from '@angular/core';
@Component({
selector: 'app-home',
standalone: true,
template: '<h1>홈 페이지</h1>'
})
export class HomeComponent {}
서버사이드:
클라이언트사이드:
서버사이드:
클라이언트사이드:
현대 웹 애플리케이션에서는 두 방식을 하이브리드로 활용하는 것이 일반적입니다. Angular Universal과 같은 도구를 사용하여 서버사이드 렌더링과 클라이언트사이드 라우팅의 장점을 모두 활용할 수 있습니다.