[Nuxt] 형제 컴포넌트끼리 데이터 공유하기
·
🥁 Frontend/⛰️ Vue.js & Nuxt
📍목표- Nuxt3(Vue.js) 에서 형제 컴포넌트끼리 데이터 공유하기 📍React vs Vue 데이터 공유 비교- React는 단방향 데이터 플로우이므로 아래 사진처럼 부모 컴포넌트에서 자식 컴포넌트로 데이터가 흐른다- 반면, Vue 에서는 자식 컴포넌트에서 부모 컴포넌트로 데이터를 전달할 수 있다. event emit을 활용하면 된다  📍자식1 컴포넌트에서 상태 변경- defineEmits() 를 활용해서 emit 함수 정의하기- 상태를 변경할 자식 컴포넌트에서 먼저 defineEmits()로 emit 함수를 선언한다- 그리고 컴포넌트가 마운트 되면 mountain 기본값을 emit 해준다- 상태가 변경될 때마다 emit을 실행하기 위해 watch를 사용한다 MountainHeader.vue ..
[Nuxt] composables, utils, types 폴더의 auto import 사용하기
·
✏️ Study/⛰️ Vue.js & Nuxt
📍composables/composables 폴더에 기능 단위로 파일을 만들고 내부에서 use + 파스칼 케이스의 함수를 선언하고 개별 named export- 예시) /composables/math.ts 생성export function useSum(x: number, y: number) { return x + y;}// 화살표 함수 사용 가능export const useMultiply = (x: number, y: number) => { return x * y;};export function useMinus(x: number, y: number) { return x - y;}export function useMyNumber() { // util 호출 가능 return MY_NUMBER;} /..
Nuxt3 프로젝트에 ESLint, Prettier 적용하기
·
✏️ Study/⛰️ Vue.js & Nuxt
📍prettier 설치prettier 설치eslint-config-prettier eslint-plugin-prettier 등은 설치할 필요 없음 yarn add -D prettier 루트 경로에 .prettierrc 파일을 만들고 아래 내용을 추가한다 { "tabWidth": 2, "semi": true, "singleQuote": false, "trailingComma": "all", "printWidth": 90, "useTabs": false, "endOfLine":"auto"} 사용중인 IDE에서 prettier 설정을 켜준다 📍eslint 설치원래는 cli 를 통해 간편하게 eslint를 설치했지만..yarn create @eslint/config 터미널에서 Vue.js를 선..
Nuxt3 폴더구조와 컴포넌트
·
✏️ Study/⛰️ Vue.js & Nuxt
📍app.vue- Nuxt 프로젝트에서 진입점 역할을 함- 여기에 직접 렌더링될 코드를 작성하면 모든 경로에서 보여짐- NuxtPage 컴포넌트를 렌더링하여 pages 폴더에 만들어진 라우트들이 보여지게 할 수 있음 📍pages- 폴더 기반 라우팅 기능 제공- index.vue 에 작성하는 내용이 폴더의 기본 라우트 페이지가 됨- 라우트명.vue 처럼 파일을 만들 수도 있음 📍NuxtPage- NuxtPage 컴포넌트를 app.vue 내부에서 호출하여  pages 폴더에 작성된 라우트가 나타나게 함 📍NuxtLink- 역할을 수행하면서 성능상의 이점을 제공- 이동 시 full page refresh를 방지하고 animated transition 효과를 제공- 또한, 뷰포트에 NuxtLink 컴포..
Vue.js & Nuxt 기초
·
✏️ Study/⛰️ Vue.js & Nuxt
📍Client-side rendering: 전통적인 Vue.js 어플리케이션의 렌더링 방식렌더링 과정1. 브라우저가 빈 HTML을 다운로드2. 브라우저가 JS를 다운받고 실행3. 앱이 렌더링되고 인터랙티브해짐 📍Universal Rendering: CSR + SSR 하이브리드 방식 -> Nuxt 방식- 서버에서 완전히 렌더링된 HTML 페이지를 반환(SSR) 하는데,- 이는 Nuxt가 서버 환경에서 JS(Vue.js) 코드 실행하기 때문- 이후에 추가로 브라우저가 JS를 다운받고 실행(CSR) 하면서 Vue.js가 통제권 가짐 📍CSR, SSR의 장단점 비교CSR 장점1. 개발 속도가 빠름- 서버 환경과의 호환을 신경쓰며 코딩하지 않아도 됨- 예) 서버에서는 window 객체, DOM API 사용 ..