본문 바로가기

ES6 자바스크립트 모듈 사용하기 (import, export) ES6 모듈 만들고 사용하기 자바스크립트에는 지금까지 C(#include)나 JAVA(import)의 모듈시스템이 활성화되지 않았을까?자바스크립트는 호이스팅이 되는 관계로 변수나 함수가 전역에서 사용할 수 있었기 때문에 이름으로 충돌을 일으키는 경우가 많아서 이용하기 어려웠다. (CommonJS로 사용할 수는 있었음)ES6부터는 모듈 시스템을 사용할 수 있게 만들었다.하지만 브라우저에서 지원이 되지 않고있기때문에 webpack같은 모듈 번들러를 사용해야만 모듈시스템(import, export)을 사용할 수 있다.export, import 1234567891011export const pi = Math.PI; export function square(x) { return x * x;} export clas..
이터레이터(Iterator)와 for of 문(인덱스말고 값을 순회한다.) 이터레이터(Iterator) 이터레이터는 '반복자'라는 의미로, 이터러블(Iterable, 순회 가능한 자료구조)의 요소를 탐색하기 위한 포인터로서 next()함수를 가지고 있는 객체다.단순하게 '컬렉션을 반복할 수 있게 하는 객체' 정도로 이해해본다.지난 포스트에서도 알아봤듯이 Array, String, Map, Set, DOM이 이터러블이고, 이런 것을 반복할 수 있게 하는 것이 이터레이터다.ex) Array.prototype[Symbol.iterator] ,String.prototype[Symbol.iterator], ...12345678const iterable = ['a', 'b', 'c'];const iterator = iterable[Symbol.iterator](); // 이터레이터는 va..
ES6 Class (클래스, Syntactic sugar, prototype을 이용하지만 문법적으로 예쁘게 만들어주는 class) 클래스(Class) - Syntactic sugar 문법적 설탕! 자바스크립트의 클래스(Class)다.기존 자바스크립트 ES5 문법으로도 객체 지향 프로그래밍을 할 수 있었다. (prototype을 이용해서)하지만 자바스크립트 문법을 배우는 사람들에게 가장 어려움을 안겨주던 것이 바로 prototype이다.그래서 ES6에서는 java와 같은 객체 지향 프로그래밍 언어에서 사용하는 것과 유사하게 class를 사용할 수 있게 문법을 제공한다.새로운 문법이 나온 것은 아니고 기존의 prototype으로 트랜스컴파일(?)해주는 것이다.1234567891011121314151617181920// ES5var Person = (function () { // Constructor function Person(name..
스프링 시큐리티 적용하기 (로그인, 회원가입, 관리자, 유효성 검사 등) Spring Security 적용하기 스프링 시큐리티를 사용해서 bcrypt 암호화와 회원가입 Validation, 관리자 인증등을 처리할 것이며, 여유 있으면 개인정보에 암호화까지 해볼 예정. A-Z까지 한번에 잘 정리한 곳이 안보여서 블로그를 돌아다니면서 정리할 예정이다. 몇 개의 포스트로 나눠서 올릴수도 있음. (2020-03-06 2년 전에 만들어놓은 글을 이제서야 작성합니다. 아래 링크 참조...)https://jeong-pro.tistory.com/205
Destructuring(디스트럭쳐링) - 배열과 객체의 값을 변수로 받는 방법 Destructuring? : 기존에 구조를 가지고 있던 객체(Array or Object)를 파괴(Destructure)하여 별도의 변수에 값을 할당하는 것이다.=> 배열이나 객체 안의 어떤 값을 추출할 때 쉽게 받아오는 방법배열 Destructuring 123456789101112//ES5var arr = [1, 2, 3];var one = arr[0];//1var two = arr[1];//2var three = arr[2];//3//ES6const arr = [1,2,3];const [one, two, three] = arr;// one = 1, two = 2, three = 3let x,y,z;[x,y,z] = arr;// x=1, y=2, z=3 기존에는 배열의 인덱스를 찾아서 가져올 수 있었..
Rest 파라미터와 Spread 연산자 정리하기 (feat. 함수의 가독성을 높이는 방법) Rest 파라미터 (Rest Parameter) Rest 파라미터는 Spread 연산자(...)를 사용하여 함수의 파라미터를 작성한 형태를 말한다. 즉, Rest 파라미터를 사용하면 함수의 파라미터로 오는 값들을 "배열"로 전달받을 수 있다.(Java에서 public static void func(String... strs){...} 이런식의 가변인자와 유사)사용 방법은 파라미터 앞에 (...)을 붙인다.12345function foo(...rest) { console.log(Array.isArray(rest)); // true console.log(rest); // [ 1, 2, 3, 4, 5 ]}foo(1, 2, 3, 4, 5); * function foo(param1, param2, ...rest)..
DB 인덱스의 구조는 어떻게 되어있나요? 인덱스는 언제 적용해야하나요? 데이터베이스 인덱스(Database Index) 데이터베이스의 인덱스, 개발을 하면서 상당히 많이 들었다.RDBMS에서 대용량의 데이터(레코드)가 있을 때, 특정 데이터를 검색하기 위해서 테이블의 레코드를 full scan하는 것이 아니라, 인덱스가 적용된 컬럼의 테이블(컬럼, 인덱스주소)을 따로 파일로 저장해놓고 그것을 검색해서 검색 효율을 높이는 방법이다.1234SELECT /*+INDEX(EMP EMPNO_INDEX) */EMPNO, ENAMEFROM EMPWHERE DEPTNO=10 /*+HINT~~~~ */ 이런식으로 사용하는 것까지는 누구나 안다. (HINT의 종류는 검색해보면 많음)그러나 '왜 이렇게 일어나지?', '어떻게 동작하지?' 이런 고민을 해보지 않고 + 직접 '체득'하지 않은 사람..
개인 마트 관리 시스템 DB 설계하기 (ERD 만들기, DB 구조, a.k.a 쇼핑몰DB) 개인 마트 관리 시스템 DB 테이블 설계하기 이 포스트를 계속 수정하면서 "마트 관리 애플리케이션"의 테이블을 만들어 볼 예정이다.사촌 형 부탁으로 마이크로 애플리케이션을 만들기 때문에 일반적인 쇼핑몰 or 마트 관리앱과는 다를 수 있다.* 배송X, 재고X, 결제(아임포트)X, 후기X, 댓글X- 필요한 테이블고객테이블상품테이블상품카테고리테이블주문테이블주문상세테이블장바구니테이블 (장바구니는 쿠키(?)로 짠다고 들었는데 모르겠다..)장바구니는 쿠키로 저장하기로 결정했다. 디비로 구성할 수도 있는것으로 알고 있는데 어떤 것이 더 좋은? 현명한 방법인지는 모르겠다.MySQL상에서 하고 있어서 워크벤치로 reverse engineer.. 를 실행시켜서 설계한 테이블의 ERD를 가져왔다.최대한 미니멀(?)하게 구성..