SPA (Single Page Application)
- 스파라고도 많이 부른다.
- html이 하나 / 어플리케이션이 갖고 있는 페이지가 여러개여도 html은 한개.
- angular는 css에 스코프를 줄 수 있다. ( 각 페이지에 유효한 css를 만들 수 있음.)
- spa의 css는 여러개의 css로 나누는 것이 좋다. (component별로)
- 첫페이지 로딩이 상대적으로 느린 단점이 있지만, 추후엔 빨라진다. (처음에 필요한 리소스들(css,js,이미지 등)을 한번에 받아오고 뿌려준다.) -> 부드럽게 화면전환이 가능하다.(기존의 페이지 이동시 깜박거리는 단점이 사라짐)
- 바닐라 자바스크립트로 하기엔 어렵다. ( 리액트, 뷰, 앵귤러를 쓰자!)
- SPA의 장점 : 화면전환이 부드럽다. (사용자 경험 향상)
- SPA의 단점 : SEO이슈에서 자유롭지 못하다. 구조적 특성상 첫 로딩이 느리다.(초기구동속도가 느리다)
Routing
- 경로를 결정하는 방식
브라우저가 화면을 전환하는 경우
-
브라우저의 주소창에 URL을 입력하면 해당 페이지로 이동한다.
-
웹페이지의 링크를 클릭하면 해당 페이지로 이동한다.
-
브라우저의 뒤로가기 또는 앞으로가기 버튼을 클릭하면 사용자가 방문한 웹페이지의 기록(history)의 뒤 또는 앞으로 이동한다.
SPA와 Routing
페이지들이 SEO에 의해서 검색이 되기 위해서 고유한 URL을 가지고 있어야한다.
3.1 전통적 링크 방식
<ul>
<li><a href="/">Home</a></li> // 루트, 여기선 reload와 같음.
<li><a href="service.html">Service</a></li> // service.html로 싹다 갈아낀다.
<li><a href="about.html">About</a></li>
</ul>
SEO 전혀 문제 없고, 히스토리 또한 전혀 문제가 없다.
3.2 AJAX 방식
코딩이 들어가야함.
주소창이 변하지 않음. -> 히스토리가 안됨. SEO 이슈 자유로울 수 없다.
3.3 Hash 방식
URL은 변하지만 요청은 가지않음.
hash가 바뀔때마다 페이지가 이동해야되고(router함수가 호출되어야함)
그럼 어떻게 체크하나?
hashchange라는 이벤트가 있다.
또 그럼 언제 페이지가 바뀌나?
리로드 될때 -> DOMContentLoaded 이벤트(돔이 왔으면 이벤트가 발생)
** 식별자 명명규칙
알파벳, _ , $로만 시작 / 숫자로는 시작 x
객체의 프로퍼티 이름은 식별자 명명규칙을 따르지 않아도 된다.
일반적으로 hash 방식을 사용할 때 #!을 사용하기도 하는데 이를 해시뱅이라 부른다.
이 방식 역시 SEO이슈를 해결 불가.
3.4 PJAX 방식
프론트와 백엔드와 같이 일을 해야함.
구분 | History 관리 | SEO 대응 | 사용자 경험 | 서버 렌더링구현 | 난이도 | IE 대응 |
전통적 링크 방식 | ◯ | ◯ | ✗ | ◯ | 간단 | |
AJAX 방식 | ✗ | ✗ | ◯ | ✗ | 보통 | 7 이상 |
Hash 방식 | ◯ | ✗ | ◯ | ✗ | 보통 | 8 이상 |
PJAX 방식 | ◯ | ◯ | ◯ | △(백엔드처리요망) | 복잡 | 10 이상 |
=> 위 방식 필요없고.. 프레임워크를 사용하면 된다.....!!(react , vue 등 사용하자..)
반응형
'패스트캠퍼스 > 수업내용정리' 카테고리의 다른 글
2019-06-17 typescript generic / Angular template, Data binding (0) | 2019.06.17 |
---|---|
2019-06-12 TypeScript (0) | 2019.06.12 |
2019-06-05 실행컨텍스트 (0) | 2019.06.05 |
2019-06-04 mongoDB, Sass (0) | 2019.06.04 |
2019-06-03 npm, babel, webpack (0) | 2019.06.03 |