Web 32

부모 자식 Component간에 데이터 바인딩(prop, emit, defineModel)

데이터 바인딩 부모 컴포넌트에서 자식 컴포넌트를 사용하려면, 데이터를 전달하거나 전달 받아야 합니다.  vue3.3 이후 버전에서는 defineModel 기능이 지원되는데 이걸 사용하면 양방향 바인딩이 됩니다. 자식 코드  부모코드 Change Data 이렇게 하면 부모쪽에서 changeData 함수를 호출하면 항상 자식 컴포넌트에 반영되는걸 알 수 있다. 전통적인 데이터 바인딩 지금까지도 자주 사용하는 방법은 prop과 emit을 이용하는 방법입니다.  prop은 부모에서 자식으로 데이터 전달하는 단방향이고, emit은 자식에서 부모에 이벤트 트리거를 단방향으로 하는거라서 양방향 바인딩하려면 조금 복잡합니다.  그리고 무엇보다 부모의 데이터의 반응성을 자식에서도 계속 유지..

Web/Vue 2024.08.02

Axios를 이용한 통신 모듈 구조화 - ts 버전

연계 컨텐츠1. Axios를 이용한 통신 :  https://dev-leon.tistory.com/822. Axios를 이용한 통신 모듈 구조화 : https://dev-leon.tistory.com/83 구조화가 필요한 이유1. 통신 결과를 Interface로 선언하여, 통신 결과를 사용하는 개발자는 ts 모듈이 약속된 타입을 모두 알려줍니다.2. 요청과 응답을 한곳에서 관리하므로, 백엔드 API가 변경되더라도 프런트엔드의 한 곳에서만 수정해주면 전체에 반영됩니다.즉 개발자들이 호출한 곳을 일일이 찾아가며 변경할 필요가 없어 집니다. 통신의 반환값의 타입을 Interface로 지정하는 방법ts에서는 반환값을 지정할수 있는데, 함수를 하나 만들어서 백엔드와 약속된 형식이 있다면 해당 형식을 Promise..

Web/Quasar 2024.07.09

Axios를 이용한 통신 - ts 버전

연계 컨텐츠1. Axios를 이용한 통신 :  https://dev-leon.tistory.com/822. Axios를 이용한 통신 모듈 구조화 : https://dev-leon.tistory.com/83 Axios란프런트엔드에서 Promise 방식으로 HTTP 통신을 수행하는 라이브러리입니다.프런트엔드에서 가장 많이 사용하는 라이브러리입니다. 설치방법  npm 방식    npm install axios  yarn 방식     yarn add axios 사용 방법  api.ts 파일에 Axois 객체 생성하고 intercepters까지 적용import axios, { Axios } from 'axios';const api: Axios = axios.create({ baseURL: 'your-backen..

Web/Quasar 2024.07.09

Quasar에서 환경 변수 사용하기 - 보류(파일로 사용하는 방식은 보안이 안됨)

환경 변수가 필요한 이유  개발과 테스트 배포, 실제 서비스 배포에서 각각 다른 설정값을 사용해야 할 경우에 현재 구동되는 환경을 알아야 하는데 이때 사용하는 방법이 환경 변수입니다.  Quasar에 환경 변수 알아보기  process.env 변수안에 현재 환경에 대한 값들이 들어 있습니다.  개발시 구동할때, env 변수의 값을 보여줍니다. Quasar에 환경 변수 사용하는 법  환경변수로 구분해야 할 것은 개발과 테스트 배포, 실서비스 배포 이렇게 3가지 인데, 위에 나온 변수들을 이용하여 구분하여 보겠습니다.   각 환경에 맞는 명령어를 사용하여 서비스 실행    개발 모드  : $ quasar dev    테스트 배포 모드 : $ quasar build -d (--debug)     제품 배포  ..

Web/Quasar 2024.07.02

CORS(Cross Origin Resource Sharing) 오류 발생과 해결 방안

CORS(Cross Origin Resource Sharing) 에러라고?프런트엔드, 백엔드 따로 개발하다보면 프런트엔드 개발자들이 주로 보는 에러메시지 중 하나입니다. 웹브라우저의 특수성우리가 사용하는 웹브라우저(IExpoler, Chrome 등등)는 굉장히 편리하게 많은 일을 처리할 수 있게 도와줍니다.인터넷뱅킹, 쇼핑, 예약, 민원처리 등등 너무 편한게 많이 있습니다.그런데 웹브라우저라는 하나의 Application을 통해서 이루어지므로, 이 안에서 수많은 인터넷 사기도 많아지게 됩니다.사기꾼들이 웹개발만 알게 되면, 정말 무궁무진한 창조경제가 탄생하기 때문에 일반 인터넷 사용자들은 인터넷 사기에서 자유로울 수 없습니다.따라서 웹브라우저를 개발하는 회사들은 이러한 웹의 취약점을 잘 파악해서 문제가 ..

Web/Vue 2024.06.20

v-slot 을 이용한 UI 커스터마이징

향후 수정 필요  아래 이라는 태그를 사용하면 그 부분을 외부에서 만든 html로 치환이 가능하다. 아래의 예시는 Button에서 Label을 외부에서 변경하는 간단한 예시이다.   위에서 만든 BaseButton 컴포넌트의 slot 부분을 변경하려면, 사용하는 vue에서 으로 입력하면 BaseButton의 부분이 치환이 된다. Click me! import BaseButton from './BaseButton.vue';

Web/Vue 2024.06.11

Quasar App의 생명주기와 저장소별 생명주기

Quasar Application 생명주기 웹프로그램에 생명주기가 있을까 싶지만, 의외로 몇가지 사항들이 존재합니다. 일단 웹사이트에 접속할때와 웹사이트에서 종료할때가 있습니다. 그리고 새로고침이라는 웹사이트만의 전용 상태가 존재합니다.  다행이 웹의 생명주기는 단순합니다.  [브라우저 시작] => [App 초기화] => [새로고침] => [App 초기화] => [브라우저 종료] 이렇게 됩니다.그리고 [App 초기화] 상태에서는 사용자가 작성한 Boot 부터 다시 수행됩니다. 따라서 [App 초기화] 상태만 봐서는 브라우저가 시작한것인지 새로고침 한것인지 판단이 어렵습니다.  저장소별 생명주기 웹프로그램은 크게 3가지 저장소가 존재합니다. 프로그램 메모리, Session Storage, Local Sto..

Web/Quasar 2024.05.03

Quasar용 SessionStorage, LocalStorage 사용하기

Quasar 전용 SessionStorage, LocalStorage의 장점 데이터 직렬화 없이 바로 사용가능하다.// 일반적인 storage 사용시에는 직렬화해서 데이터를 입출력 해야함.// 따라서 JSON.stringify, JSON.parse 가 항상 따라다님.const user = { name: 'John', age: 30 };localStorage.setItem('user', JSON.stringify(user));const storedUser = JSON.parse(localStorage.getItem('user'));console.log(storedUser.name); // John// 반면에 $q.localStorage는 직렬화 없이 바로 입출력이 가능함.const user = { name..

Web/Quasar 2024.05.03

Quasar UI 개발 4 - 심화 예시

화면 중앙 정렬 로그인 화면은 화면의 가운데에 입력을 받게 만드는데, 이때 필요한게 화면 중앙정렬입니다. 중앙정렬은 q-page 태그에 flex flex-center 속성을 주면 가능합니다. Click Me!  이미지를 백그라운드에 배치하기 사이트를 예쁘게 꾸미려고 백그라운드에 이미지를 넣는데, 일반적인 Grid 시스템으로는 어렵습니다.  여기서는 absolute-full flex flex-center 구문을 이용하여 처리해 보겠습니다.  Echo Test   Gutter-Col와 Col-Size 함께..

Web/Quasar 2024.04.29