Tiny Bunny
[Vue.js] Props와 Emit으로 부모-자식 컴포넌트 소통하기
·
🖥️Frontend/Vue.js
Vue.js 기본 컴포넌트 구조Props - 부모에서 자식으로 데이터 전달Emit - 자식에서 부모로 이벤트 전달실무 꿀팁 모음기본 구조 - Vue 컴포넌트 작성 순서Vue 컴포넌트를 작성할 때는 다음 순서를 권장합니다:변수 선언과 메서드 작성 순서 🎁 Props - 부모에서 자식으로 데이터 전달개념 설명Props는 부모 컴포넌트에서 자식 컴포넌트로 데이터를 전달하는 방법입니다. 마치 함수의 매개변수처럼 동작합니다. 🔑 핵심 포인트:부모 → 자식으로만 데이터가 흐름 (단방향)자식에서는 props를 직접 수정하면 안됨타입 검증과 기본값 설정 가능기본 예제부모 컴포넌트 (Parent.vue) 부모 컴포넌트 자식 컴포넌트 (UserCard.vue) ..
[Vue.js] Axios로 API 통신 구현하기
·
🖥️Frontend/Vue.js
API 통신이 왜 중요한가?현대 웹 애플리케이션은 프론트엔드와 백엔드가 분리되어 있습니다. Vue.js는 사용자 인터페이스를 담당하고, 실제 데이터는 서버의 API를 통해 가져옵니다.🌐 사용자 브라우저 (Vue.js) ↕️ HTTP 통신🖥️ 웹 서버 (REST API) ↕️ 🗄️ 데이터베이스일반적인 API 통신 패턴// 1. 데이터 조회 (GET)const products = await axios.get('/api/products');// 2. 데이터 생성 (POST) const newProduct = await axios.post('/api/products', productData);// 3. 데이터 수정 (PUT/PATCH)const updated = await axios...
[Vue.js] computed와 watch 이해하기
·
🖥️Frontend/Vue.js
computed() computed가 무엇인가요?computed는 다른 반응형 데이터에 의존하여 자동으로 계산되는 값입니다. 마치 Excel의 수식 셀처럼, 참조하는 셀의 값이 바뀌면 자동으로 다시 계산됩니다.// 기본 데이터const firstName = ref("김");const lastName = ref("철수");// 자동으로 계산되는 값const fullName = computed(() => { return `${firstName.value} ${lastName.value}`;});// firstName이나 lastName이 바뀌면 fullName도 자동으로 업데이트!computed의 핵심 특징핵심: computed는 의존하는 데이터가 변할 때만 다시 계산됩니다!const expensiveCo..
[Vue.js] 트리 구조 - 1차원 데이터를 계층 구조로 변환하기
·
🖥️Frontend/Vue.js
왜 트리 구조가 필요한가?현실의 계층적 데이터실제 비즈니스 시스템에서는 자연스러운 계층 구조가 존재합니다:🏪 쇼핑몰 └── 📂 카테고리 (전자제품) └── 📦 브랜드 (삼성) └── 📱 상품 (Galaxy S24) └── ⚙️ 옵션 (128GB, 256GB, 512GB)🏢 회사 조직도 └── 📊 부서 (개발팀) └── 👥 팀 (프론트엔드팀) └── 👤 직원 (김개발) └── 📋 프로젝트 (쇼핑몰, 관리자페이지)1차원 DB 데이터의 한계// 데이터베이스에서 가져온 1차원 배열const flatData = [ { category: "전자제품", brand: "삼성", product: "Galaxy S24", option: "128..
[Vue.js] 반응형 데이터 ref()와 reactive()
·
🖥️Frontend/Vue.js
Vue.js 반응형 데이터란?Vue.js의 반응형 데이터는 값이 변경될 때 자동으로 UI가 업데이트되는 특별한 데이터입니다. 마치 Excel에서 셀의 값을 바꾸면 연결된 다른 셀들이 자동으로 업데이트되는 것과 같은 원리입니다.// ❌ 일반 JavaScript 변수let count = 0;count = 5; // 화면은 그대로... 😢// ✅ Vue.js 반응형 변수const count = ref(0);count.value = 5; // 화면이 자동으로 업데이트! 🎉ref() 함수 완벽 이해하기ref()의 기본 구조const variableName = ref(초기값);ref("") 한 글자씩 분해해보기const username = ref(""); 부분역할비유ref()반응형 객체 생성📡 "변화 감지..
[Vue.js] Naive UI 날짜 컴포넌트와 C# DateTime - UTC vs 로컬 시간
·
🖥️Frontend/Vue.js
웹 개발에서 날짜 처리는 생각보다 복잡하고 까다로운 영역입니다.특히 Vue의 Naive UI 날짜 컴포넌트에서 선택한 날짜가 C# 백엔드를 거쳐 SQL Server 데이터베이스까지 전달되는 과정에서 수많은 변환 과정을 거치게 됩니다.핵심 개념: 날짜 데이터는 프론트엔드(JavaScript Date) → 백엔드(C# DateTime) → 데이터베이스(SQL DateTime) 순으로 전달되며, 각 단계마다 타임존과 포맷 변환이 발생합니다. 이번 포스팅에서는 실제 개발 현장에서 자주 발생하는 날짜 관련 오류들을 분석하고,UTC와 로컬 시간 구분부터 데이터베이스 저장까지의 전체 과정을 상세히 알아보겠습니다.JavaScript Date 객체의 기본 이해Naive UI 날짜 컴포넌트의 반환값Naive UI의 n-d..
[Vue.js] Vue 컴포넌트 데이터 전달 방법: Props & Emit
·
🖥️Frontend/Vue.js
Vue.js를 처음 배울 때 가장 헷갈리는 부분 중 하나가 바로 컴포넌트 간의 데이터 전달입니다.특히 부모 컴포넌트와 자식 컴포넌트가 어떻게 서로 소통하는지 이해하는 것은 Vue 개발의 핵심입니다.컴포넌트(Component)란?재사용 가능한 코드 블록으로, HTML, CSS, JavaScript를 하나로 묶은 독립적인 UI 요소입니다. 마치 레고 블록처럼 여러 컴포넌트를 조합해서 완전한 웹 애플리케이션을 만들 수 있습니다. 오늘은 Vue의 Props와 Emit을 통한 부모-자식 컴포넌트 통신을 완전히 이해해보겠습니다.Vue 컴포넌트 통신의 기본 원칙Vue에서 컴포넌트 간 데이터 흐름은 단방향입니다:부모 컴포넌트 ──(Props)──> 자식 컴포넌트부모 컴포넌트 Props: 부모 → 자식으로 데이터 전달E..
[Vue.js] Naive UI Date Picker 날짜 형식 변환
·
🖥️Frontend/Vue.js
Naive UI Date PickerNaive UI Date Picker는 JavaScript timestamp(숫자)를 반환합니다일반적인 HTML input[type="date"]는 문자열을 반환하지만, Naive UI는 다릅니다. // 예상했던 것 (일반 HTML input)dateValue = "2025-08-14"// 실제 Naive UI 결과dateValue = 1754751600000 // timestamp!왜 timestamp를 사용할까?1. 정확성: 문자열보다 날짜 계산이 정확합니다2. 국제화: timezone 변환이 용이합니다3. 성능: 숫자 연산이 문자열 파싱보다 빠릅니다실무에서 자주 사용하는 변환 함수기본 날짜 변환const formatDate = (timestamp: number)..
[Vue.js] onMounted와 import/export
·
🖥️Frontend/Vue.js
Vue 컴포넌트 라이프사이클라이프사이클(Lifecycle)은 Vue 컴포넌트가 생성되고 소멸되기까지의 과정에서 특정 시점에 실행되는 함수들을 말합니다.컴포넌트의 생명주기를 사람의 일생에 비유하면:태어남 (생성) → 성장 (마운트) → 변화 (업데이트) → 죽음 (소멸)Java Spring의 @PostConstruct, @PreDestroy 어노테이션과 비슷한 개념으로, 특정 시점에 원하는 로직을 실행할 수 있습니다.주요 라이프사이클 훅 소개Vue 3 Composition API에서 주로 사용하는 라이프사이클 훅들:import { onBeforeMount, // 마운트 직전 onMounted, // 마운트 완료 후 (가장 많이 사용) onBeforeUpdate, // 업데이트 ..
[Vue.js] ref와 반응형 데이터 관리
·
🖥️Frontend/Vue.js
Vue 3 Composition APIComposition API는 Vue 3에서 도입된 새로운 방식으로, 컴포넌트 로직을 더 유연하게 구성할 수 있게 해주는 API입니다.기존의 Options API(data, methods, computed 등을 객체로 정의)와 달리, Composition API는 setup() 함수 안에서 모든 로직을 작성합니다. 이는 Java에서 객체지향에서 함수형 프로그래밍으로 패러다임이 바뀐 것과 비슷한 개념입니다.refref는 Vue 3에서 반응형 데이터를 만드는 가장 기본적인 함수입니다.import { ref } from 'vue'// 숫자형 ref 생성const count = ref(0)// 문자열 ref 생성const message = ref('안녕하세요')// 객체 r..