본문 바로가기

programming

(21)
[webpack] 오래된 글을 보고 웹팩 설정을 하다가 바뀐 부분이 많아 고생했던 일 벨로퍼트님의 블로그( https://velopert.com/1492 )를 보고 일부 babel 및 webpack 설정을 하다가 업데이트되어 바뀐 부분이 너무 많아서 웹팩으로 컴파일이 안되서 한참 고생했다. 그래서 바뀐 부분을 정리해 보고자 한다. babelbabel-cli , babel-core , babel-preset-es2015 , babel-preset-react 는 더 이상 쓰지 않는게 좋은 듯하다. 웹팩 컴파일에 경고나 오류같은 것이 떴고, 찾아보니 더이상 안쓴다는 말이 있었다. 이것들은 @babel/cli , @babel/core , @babel/preset-env (이거는 babel 홈페이지에 보면 babel-preset-2015, 2016, 2017 등을 대신 한다고 나와있다. 이게 편하..
React를 왜 쓸까? 부트캠프기간 중 지난 약 두 달간 Javascript '라이브러리'인 React를 계속해서 썼다. 사실 커리큘럼에 포함된 거라 프로젝트에 쓴 것 일뿐 왜 쓰는지는 모르고 썼었다. 개발이 많이 진전되었을 때 쯤에 왜 내가 이걸 쓰고 있는지가 궁금해지기 시작했다. 소프트웨어 공학 전공 학생으로서 아직 학부에서 배워야 할 언어가 많이 있고, 세상에 나와있는 언어도 무수히 많다는 것을 알고 있다. 그런데, 왜 굳이 React를 배웠고, 왜 쓰고 있는 지를 이곳 저곳에서 찾아보고 공감하였다. React는 페이스북에서 만든 javascript 라이브러리이다. 프레임워크가 아닌 라이브러리. Router와 같은 웹을 만드는 데 필요한 도구들이 기본적으로 포함되지 않는다. 그래서 가볍다고들 많이 표현하고, learnin..
[jquery] offset 화면에 어떤 객체를 랜덤의 좌표로 만들어 주었을 때 두 곳의 거리를 구하려면 흔히 피타고라스의 정리로 구하면 된다고 알고 있다.그것을 구현하려면, 각 객체의 좌표(스타일에서 left, top 값)를 알아야 X,Y로 지정을 해주고 피타고라스정리로 구할 수 있다.그런데 그 값을 가져오려면 그 객체의 스타일에 접근 해야하는데, document.getElementById(객체)style.left 이런 식으로 불러 올 수는 있다. 근데 이값은 '111px' 이런식으로 string 값으로 불러오는데다가 px까지 붙어서 나오기 때문에 피타고라스 정리로 계산하려면 까다롭다. 그 대신 쓸 수 있는게 있는데, offset이라는 jquery 메서드이다. 객체를 불러와서 뒤에 offset() 만 붙여주면 top과 left 값..
[ES6] 클래스(class) 클래스JS에는 정확히 클래스라는 개념 자체가 있지는 않았다. 그러나 그와 비슷한 프로토타입 기반 방식을 구현해서 상속 등을 구현했는데, ES6 에서는 클래스라는 개념이 명시적으로 생겼다. class Book{// 속성(프로퍼티) constructor(title, author, price){this.title = title;this.author = author;this.price = price;} // 메서드(프로토타입객체에 쓰던것)book_info() {console.log(`${this.title}, ${this.author})`;}} // end class let book = new Book('난중일기', '이순신', '12000'); book.book_info(); // '난중일기, 이순신' 이런 ..
[ES6] 배열과 객체의 비구조화 배열과 객체의 비구조화비구조화 할당(destructuring assignment) 구문은 배열이나 객체에 있는 각 데이터의 값을 자동으로 추출하기 위한 방법이다. 배열 비구조화let [a, b] = [3, 4]; // a = 3, b = 4 를 대입console.log(`${a}, ${b}`); // "3, 4" [a, b] = [b, a]; // a = b, b = a를 대입(교환)console.log(`${a}, ${b}`); // "4, 3" [a, b] 에 우측 배열 [3, 4]의 값을 추출해 각각 순서대로 전달받는다. 순서를 바꾸어 대입하면 값을 서로 교환하는 처리가 가능해진다. (원래는 temp같은 임시 저장할 변수가 필요한데 간단해졌다.) 대입할 변수의 갯수와 배열의 크기가 일치하지 않아도 ..
[ES6] 템플릿 표현식 템플릿 표현식자바스크립트는 코드를 쓸 때 문자열, HTML 등과 같이 쓰면, 보기에도 쓰기에도 불편하다. 예를 들면, let a = 1, b = 2, c = 3; let sentenceWithVar = 'a = ' + a + ', b = ' + b + ', c = ' + c + '\n';console.log(sentenceWithVar); // a = 1, b = 2, c = 3 문자열(HTML) 부분과 변수 부분을 따옴표로 하나하나 나누고 ' + ' 기호로 다 붙여주어야 한다. 그래서 ES6에서 나온 해결책이 템플릿 표현식이다.ES6에서는 역따옴표( ` )로 이를 간단히 표현할 수 있다. let a = 1, b = 2, c = 3;let sentenceWithVar = `a = ${a}, b = ${b..
[ES6] for ~ of문 for of 문 let numbers = [1, 2, 3, 4, 5]; for(let i of numbers){console.log(i); // 1 2 3 4 5} 이처럼 ES6에는 반복을 쉽게하기 위한 일반 for문 말고도 for~of 문이 있다. 기존에 있던 for~in문과 별다른 차이는 없지만, for of 문은 배열을 다룰 때 적합하다. for~in 문에는 다음과 같은 문제점이 있다. let numbers = [1, 2, 3, 4, 5]; for(let i in numbers){console.log(i); // "0" "1" "2" "3" "4"} 문자가 되어 나온다. 그렇기에 for~in문은 객체를 순회하면서 값을 조회하는데 편하고, for~of문은 배열에 적합하다. (* for~in문으로 객체..
[ES6] 파라미터 핸들링(parameter handling) 파라미터 핸들링기본파라미터 function addNum(a, b){console.log(a + b); // NaNconsole.log(a); // 5console.log(b); // undefined} addNum(5); 위처럼 전달받을 변수는 2개인데 한개만 전달했을 경우 값의 연산이 제대로 되지 않는다. API 같은 경우 필요한 파라미터만 전달하도록 만들어져있으므로 전달받은 값이 없을 경우 기본적으로 나머지는 0 으로 처리해서 연산하도록 해야한다. 이것을 기본 파라미터 설정이라 하는데, 아래와 같이 할 수 있다. var addNum = (a = 0, b = 0 ) => { // 파라미터 기본값을 설정함.console.log(a + b); // 5console.log(a); // 5console.log..