일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- dotenv
- scss
- npm
- git
- 앙상블
- loop
- vue.js
- vuetify
- machine learning
- condition
- webpack
- BOJ
- leetcode
- TypeScript
- 보안
- C++
- docker
- JavaScript
- C#
- nginx
- Python
- generic
- AI
- VUE
- Clone
- security
- bash
- type
- var
- property
- Today
- Total
목록JavaScript (22)
ice rabbit programming
지난 글에서 인터페이스에 대해 다루었다. 이번 글에서는 객체지향의 가장 중요한 개념 중 하나인 클래스를 다룰 것이다. C++이나 C#에서의 Class 사용법과 비슷하다. 관례적으로 한 파일에 한 클래스를 사용하는 것도 비슷하다. 아래 class 작성 예시를 보면서 차이점을 보도록 하자. class Person { private _age: number // 관례적으로 private 변수에는 _ 를 붙인다. public name: string = 'ice' // class 내에서 초기화 가능 address: string // default가 public이다. static country: string = 'Korean' // 전역으로 사용 가능 constructor(name: string, age: numbe..
기본적으로 웹 페이지에서는 CSS를 적용하여 스타일을 입힐 수 있다. 우리가 보는 세련된 페이지들도 궁극적으로는 CSS를 태그에 적용한 것이다. Vue.js에서는 UI 프레임워크를 적용하여 이러한 CSS 적용에 대한 수고를 덜 수 있다. (단, 2020년 12월 현재 기준으로 Vue 3.0 버전에 대하여는 아래 UI 프레임워크가 지원하지 않는다!!!) 여담으로, 필자가 typescript의 공식적인 적용을 위해 Vue 3.0으로 새 프로젝트를 시작하려 했다가, UI 프레임워크들이 지원하지 않아 2.6대로 회귀했다. 프론트엔드 경험이 많은 것도, 디자인에 자신이 있는 것도 아니기에.. UI 프레임워크 많이 쓰는 UI 프레임워크들은 아래와 같은 것들이 있다. - BootstrapVue : bootstrap-..
타입스크립트에서는 타입의 정적 체크와 더불어, OOP의 인터페이스와 클래스도 지원한다. 용법은 C#이나 자바에서의 용법과 비슷하다. 인터페이스 자체에 관한 이야기는 다른 OOP 언어에서 다루었을 것이므로, 간단하게만 짚고 넘어가겠다. 인터페이스를 사용함으로 겹치는 규격을 정하여 규격(형태)이 같은 클래스 간에 재사용성을 높이고, 클래스 간의 결합도를 줄일 수 있다. (자세한 내용은 추상 클래스 혹은 인터페이스를 찾아보자) interface Person { name: string; age: number; } const person: Person = { name: 'KDH', age: 35 } 만약 자바스크립트처럼 interface를 쓰지 않고 사용하려하면 아래처럼 항상 정의해주어야한다. const pers..
타입스크립트란 자바스크립트가 가진 다른 C계열 언어들과의 차이는 크게 두 가지라고 개인적으로 생각한다. 첫 번째로는 비동기, 두 번째는 타입이다. 이 중에 동적 타입은, 자바스크립트만의 특징은 아니다. 파이썬과 같이 런타임에 정해지는 스크립트 언어도 존재한다. 어쨌거나 그런 이유로, 컴파일 언어와는 다르게 정적 타입으로 사전에 체크할 수가 없었고, 이를 해결하고 실행 전 단계에서 에러를 최대한 거르고자 여러가지 방법이 나왔다. 그 중 하나가 바로 타입스크립트이다. 타입스크립트는 자바스크립트의 상위호환(SuperSet)으로, 단순하게 생각하면 타입을 가진 자바스크립트의 느낌이다. 거기에 class, interface 등을 추가해서 자바나 C#과 같은 OOP 프로그래밍을 할 수 있다. 인터프리터 언어인 자바..
자바스크립트를 사용하면 var, let, const로 변수를 선언하게 된다. 순수 자바스크립트는 컴파일 타임에 타입을 알 수 없기 때문에, 타입 추론을 통해 런타임에 타입을 정하게 된다. var, let, const 각각의 차이에 대해 간단하게 정리해보았다. var : ES5 이전까지 쓰이던 변수 키워드. 함수 스코프에서 유효하다. 재선언이 가능하고, 호이스팅도 가능하다. let(값 변경 가능), const(값 변경 불가) : ES6부터 쓰이는 변수 키워드. 블록({}) 스코프에서 유효하다. 재선언 및 호이스팅이 불가능하다. 즉 간단하게 말하면 var는 예전에 쓰던 것, let과 const는 요즘 쓰는 것인데 스코프(범위)나 재선언은 들으면 바로 감이 올 텐데 호이스팅이라는 개념은 잘 와닿지 않는 분들도..
최근 Vue.js를 사용하며 WebPack을 사용했는데, local에서 proxy table의 사용을 환경 변수에 따라 다르게 설정하고 싶었다. (webpack이 아닌 vue-cli를 활용한다면 이 글을 참고) dotenv 패키지 적용 그러던 중에 dotenv 패키지를 찾아서 적용하였다. npm install dotenv dotenv 패키지는 여러 프레임워크에 존재하는데, .env 파일을 통해 환경 변수를 설정해주는 패키지이다. const dotenv = require('dotenv'); dotenv.config(); 이렇게 간단하게 사용할 수가 있는데, dotenv.config 내에 아무 것도 명시해주지 않으면 루트에 있는 .env 파일을 찾아 적용하게 된다. 경로를 지정해주고 싶으면 아래와 같이 적으..
webapp과 webapi를 분리하여 개발하다보면, webapi 호출이 CORS 이슈로 인해 제대로 불리지 않는 경우가 많다. CORS는 Cross Origin Resource Sharing로, 도메인 또는 포트가 다를 경우에 호출을 허용하지 않는 정책을 말한다. 보안을 위해 고안된 정책으로, SPA를 기반으로 호출할 때에는 번거로운 것이 사실이다. 물론 개발 서버나 운영 서버에 올리고 나면 백엔드에 render를 붙이든, 따로 구성했지만 nginx를 통해 내부 호출을 구성하든간에 CORS 이슈를 위반하지는 않게 되어 운영상에 문제되지는 않는다. 다만 local에서 개발할 때 API 호출을 통해 테스트가 되어야 코드를 올리고, 빌드를 하고 배포가 될 것이다. CORS를 해결하기 위해 크게 두 가지 방법이..
npm은 node.js에서 사용하는 패키지 관리자인데, 많은 편리한 플러그인들이 있어 유용하게 사용할 수 있다. python의 pip와 유사하다. 그런데 npm도 버전이 다양한데, apt-get 등으로 설치할 경우에 버전이 제각각으로 설치되어, 나중에 꼬이게 되는 문제가 발생한다. 로컬에서 npm 버전을 업그레이드하거나, CI 서버에서 빌드를 할 때 등... 보통 그럴 때는 npm의 cache를 지워서 해결한다. npm cache는 일반적으로 npm-cache/_cache 폴더에 저장된다. 이 디렉토리는 모든 HTTP 요청 데이터와 패키지 관련 데이터를 저장하는 캐시이다. npm cache clean --force 첫 번째 방법은 npm cache clean --force 명령어이다. npm 버전 5 이..