vuejs, nuxtjs 에 대해서 좀 더 자세히 알아보자.
vuejs 란?
내가 알고있던 vuejs
- 웹, SPA (Single Page Application) 개발을 위한 javascript framework
- SPA : 단일 페이지, 즉 하나의 페이지에서 동작하는 어플리케이션
- SPA 처음 웹 페이지 접속 시, 모든 웹 자원 서버로부터 가져와 로딩
- CSR (Client Side Rendering) 방식 사용
- 화면 이동을 위한
router
기능 제공
- 양방향 바인딩을 통한 웹 개발 편의성 제공
- jquery의 경우, html 영역에 데이터를 직접 설정하거나 가져와야 했음.
- 컴포넌트 분리를 통한 재사용 용이
더 알아본 vuejs
- UI 개발을 위한 Progressive Framework
- Progressive : native 앱의 장점 (빠르고, 뛰어난 UI 제공) 을 모두 수용하고, 표준 패턴을 사용해 개발한 것
MVVM
패턴의 ViewModel에 해당
- Model : 데이터 저장 공간 (javascript)
- View : 화면 (HTML
DOM
)
- ViewModel : Model - View 중간영역.
DOM
Listener (DOM
변경에 반응하여 특정 로직 수행)와 Data Binding(View 화면과 Model 데이터 동기화) 제공.
- 가상
DOM
- 데이터 바인딩으로 인한
DOM
복잡도 증가 및 성능 저하 방지
- javascript로 이루어진 가상의
DOM
에 한번 렌더링하여 기존 DOM
과 비교 후, 변화가 필요한 곳에만 update & 동기화!
- 변화가 많은 화면에서 실시간으로
DOM
을 직접 갱신하는 방식이 아니기 때문에, 렌더링 성능 GOOD! 👍
router 란?
- vuejs 에서 페이지 간 이동을 위한 라이브러리
- vue 프로젝트 내부에서 미리 url 주소 정의, 각 주소마다 vue 화면 연결
- $router 객체를 통해 화면 이동 가능. (push, replace, go)
- url 이동 시 히스토리 스택에 추가.
※ replace의 경우, 히스토리 스택에 쌓지 않고 화면만 전환.
nuxtjs 란?
- vuejs application을 쉽고, 효율적으로 개발하기 위한 강력한 framework
- SSR (Server Side Rendering) 지원
- 설치만으로 프로젝트 구조화 (scaffolding)
- nuxtjs 파일 생성만으로 라우팅 자동 생성
- webpack을 통한 빌드 시스템 구현 (npm run)
- nuxtjs Lifecycle hooks 의
asyncData()
를 활용하여 페이지 컴포넌트가 로딩되기 전에, vue instance가 생성 되는 created()
전에, 서버 통신을 통해 조회성 데이터를 Model에 초기화, 값 할당 할 수 있다.
참고