일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 깊은 복사
- 주소창에 naver 입력시 일어나는 일
- 이벤트 버블링
- 프로미스
- 서버 사이드 렌더링
- 클라이언트 사이드 렌더링
- 이벤트 캡처링
- MPA
- 호이스팅
- 얕은 복사
- props와 state 차이점
- 자바스크립트 함수
- 자바스크립트
- 로컬 스토리지
- 자바스크립트의 클래스
- async/await
- react
- CSS
- 실행 컨텍스트
- 리액트의 생명 주기
- webpack
- 변수 생성 단계
- polyfill
- 세션 스토리지
- CORS
- 가상 dom
- 리액트
- 스코프 체인
- undeclared
- 브라우저 렌더링원리
Archives
- Today
- Total
Gapus Dev Blog
[CS] SPA와 MPA에 대해 본문
SPA(Single Page Application)
설명
- 단일 페이지 애플리케이션
- 한 번의 페이지 로드 후에는 서버로부터 추가적인 페이지를 받지 않고 동적으로 콘텐츠를 업데이트하는 방식
- 초기에 필요한 리소스를 한 번만 로드하고, 이후에는 Ajax나 WebSocket 등을 통해 서버와 비동기적으로 데이터를 주고받아 페이지를 업데이트
- 사용자 경험을 향상 시키고, 애플리케이션의 반응 속도를 빠르게 만들어 준다.
- 주로 React, Angular, Vue.js와 같은 프레임워크나 라이브러리를 사용하여 개발
- 예시
import React, { useState } from 'react';
function App() {
const [message, setMessage] = useState('안녕하세요!');
const updateMessage = () => {
setMessage('새로운 메시지입니다!');
};
return (
<div>
<h1>{message}</h1>
<button onClick={updateMessage}>메시지 업데이트</button>
</div>
);
}
export default App;
MPA(Multi Page Application)
설명
- 다중 페이지 애플리케이션
- 각각의 페이지가 서버로부터 독립적으로 로드되고 각각의 페이지마다 서버로 부터 HTML을 받아와 렌더링하는 방식
- 사용자가 페이지를 요청할 때마다 서버에 새로운 요청을 보내고, 서버는 해당 페이지에 대한
HTML을 응답으로 보내준다. - 전통적인 웹 애플리케이션 개발 방식이며, 주로 PHP, Java, Ruby 등의 서버 사이드 언어와 HTML, CSS, JS를 사용하여 개발
- 예시
import React from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
function Home() {
return <h1>홈 페이지</h1>;
}
function About() {
return <h1>소개 페이지</h1>;
}
function Contact() {
return <h1>연락처 페이지</h1>;
}
function App() {
return (
<Router>
<nav>
<ul>
<li><Link to="/">홈</Link></li>
<li><Link to="/about">소개</Link></li>
<li><Link to="/contact">연락처</Link></li>
</ul>
</nav>
<div id="content">
<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
<Route path="/contact" component={Contact} />
</div>
</Router>
);
}
export default App;
SPA와 MPA의 차이점
SPA(Single Page Application) | MPA(Multi Page Application) |
초기에 필요한 리소스를 한 번만 로드 | 각각의 페이지가 서버로부터 독립적으로 로드 |
Ajax나 WebSocket 등을 통해 서버와 비동기적으로 데이터를 주고받아 페이지를 업데이트 |
사용자가 페이지를 요청할 때마다 서버에 새로운 요청을 보내고, 서버는 해당 페이지에 대한 HTML을 응답 |
SPA는 페이지 간의 전환 시에 화면이 깜빡이지 않고 부드럽게 전환되어 사용자 경험을 향상 | 페이지 간 전환 시에는 서버로부터 새로운 페이지를 로드해야 하므로 화면이 깜빡이거나 잠시 멈출 수 있음 |
SPA는 초기 로딩 시에 필요한 리소스를 한 번에 로드하기 때문에 초기 로딩 속도가 느릴 수 있음 | 각각의 페이지를 독립적으로 로드하기 때문에 초기 로딩 속도가 빠르다. |
한 번에 로드하고, 동적으로 콘텐츠를 업데이트를 하기 때문에 검색 엔진이 콘텐츠를 수집하기 어려울 수 있다. | 각각의 페이지가 서버로부터 독립적으로 로드되기 때문에 검색 엔진이 콘텐츠를 수집하기 용이 |
혼합 방식
- Hybrid Application이라고도 한다.
- 메인 페이지나 인증이 필요한 페이지와 같이 동적인 기능이 필요한 부분은 SPA로 개발
- 블로그 게시물이나 제품 목록과 같이 정적인 콘텐츠가 많은 부분은 MPA로 개발
- SPA로 인해 얻을 수 있는 부드러운 사용자 경험과 MPA로 인해 얻을 수 있는 초기 로딩 속도와 SEO 등을 조합
- 혼합해서 사용하는 경우 개발 방식과 아키텍처를 조정해야 하기 때문에 복잡 가능
'CS' 카테고리의 다른 글
[CS] Webpack, Babel, Polyfill에 대해 (0) | 2023.12.07 |
---|---|
[CS] CORS에 대해 (0) | 2023.12.06 |
[CS] npm에 대해 (0) | 2023.12.01 |
[CS] 이벤트 캡처링과 이벤트 버블링에 대해 (0) | 2023.11.22 |
[CS] 이벤트에 대해 (0) | 2023.11.21 |