Node.js
-
Node.js - async/awaitNode.js 2018. 8. 31. 18:39
- async/await async/await 의 문법을 알기전에 그전에 정리했던 내용들을 복습해보자.Node.js는 비동기방식으로 처리를 하게 되며 처리가 끝나면 자동적으로 callback 함수가 호출되게된다.callback 함수는 특정함수에 매개변수로서 전달되는 함수로 비동기 코드를 동기식으로 처리 가능하게 해준다.하지만 여러개의 callback 을 연달아 사용하게 되면 에러가 발생할 가능성이 높고, 코드의 가독성이 크게 떨어진다.아래의 그림은 '콜백 지옥' 이라고 불리는 좋지않은 현상이다. 이러한 callback의 지옥을 벗어나기위해 Promise 개념이 ES6에서 도입되었고 좀더 효율적으로 동기적 처리가 가능하게 되었다.(resolve,reject). 하지만 C,Java 와 같은 절차 언어처럼 좀..
-
Node.js - PromiseNode.js 2018. 8. 15. 15:56
- Promise "A promise is an object that may produce a single value some time in the future: either a resolved value, or a reason that it’s not resolved" Promise는 ES6 에서부터 지원된 문법으로서 JavaScript 비동기 처리에 사용되는 객체이다.비동기 처리라는 뜻은 글 목록 처음( Node.js[1] - Single thread,Async,Callback )에도 설명했듯이 '하나의 요청 처리가 끝날때까지 기다리지 않고 다른 요청을 동시에 처리할수 있는 방식' 을 뜻한다.이러한 비동기 처리의 단점중 critical 한 단점으로 동기식 처리가 필요한 작업을 해결하기 어렵다는 것이다..
-
Node.js - MochaNode.js 2018. 8. 13. 18:09
- TDD & BDD Mocha 를 먼저 얘기하기전에 TDD 와 BDD 에 대한 개념이 먼저 잡혀야 될꺼같애서 공부해보았다. 먼저 TDD(Test-driven-development) TDD 의 정의를 5단계로 나누어볼수 있다. 먼저 개발자는 몇 가지 테스트를 작성한다. - Add Tests 개발자는 그런 테스트를 실행하고 실제로 테스트할 구현된 기능이 없으므로 당연히 실패한다. - See Tests Fall다음으로 개발자는 코드에서 이러한 테스트를 실제로 구현한다. - Write Code개발자가 코드를 잘 작성하면 다음 단계에서 테스트가 통과하는 것을 볼수 있다. - Run Tests개발자는 새로운 코드가 무언가를 망치면 테스트가 실패할 것이라는 것을 알고 있기 때문에 원하는대로 코드를 리펙토링하고 주석..
-
Node.js - WebpackNode.js 2018. 8. 9. 13:31
- Webpack 아직 내가 알지 못하는 JS 모듈 시스템들이 엄청나게 많다. ES2015모듈, RequireJS, CommonJS, UMD 같은 JS 모듈 시스템들이 나오면서 JS파일도 다른 프로그래밍 언어처럼 모듈개념이 생겨나서 상당한 의존 관계를 가지게 된다.이러한 의존관계를 가진 JS 파일들을 파일별로 모듈을 관리할수 있게하여 각 파일의 스코프범위를 유지시켜 충돌의 위험성을 줄여야한다. 하지만 브라우저 상에서는 이러한 파일 단위 모듈 시스템을 사용하는 것이 쉽지 않다.웹 프론트쪽에서의 JavaScript 언어는 웹페이지에 html,css,img,JSON 등 수많은 구성요소들과 엉켜있어 모듈을 IIFE 스타일로 변경해 주는 과정 뿐만 아니라 하나의 파일로 묶어(Bundled) 네트워크 비용을 최소화..
-
Node.js - BabelNode.js 2018. 8. 7. 18:59
- Babel Babel , 바벨 이라고 불리우는 이 녀석은 뭐하는 애일까?일단 이 친구를 알기 전에 ES6,7 과 ES5 간의 차이를 알아야 한다. ES5는 2009년도 에 표준화된 JavaScript로 우리가 익히 알고 있던 JavaScript 표준 언어(동적 언어)이다.그러다 2015년에 개정판으로 표준화된 JavaScript가 나오게 됬는데 이것을 ECMAScript2015(EC2015) , ECMAScript6(ES6) 이라고 한다.더 나아가서 2016년에도 추가로 개정되어 ES7 이 나와서 최신 표준이 되었지만 아직까지 ES6가 대세이고 이 ES6에 들어와서 획기적인 변화들이 생기게 되었다. 변화된 문법들중 대표적으로 import & exportlet & constclassarrow funct..
-
Node.js[2] - Event Loop, 주의사항Node.js 2018. 4. 1. 00:41
- Event Loop Javascript의 큰 특징 중 하나는 'Single Thread' 기반의 언어라는 점이다.Thread가 하나라는 말은 곧, 동시에 하나의 작업만을 곧, 동시에 하나의 작업만 처리할 수 있다는 말이다.하지만 실제로 Javascript가 사용되는 환경을 생각하보면 많은 작업이 동시에 처리되고 있는걸 볼수 있다.예를 들면, 웹 브라우저는 애니메이션 효과를 보여주면서 마우스 입력을 받아서 처리하고, Node.js기반의 웹서버에서는 동시에 여러 개의 HTTP 요청을 처리하기도 한다. 여기서 드는 질문은 "어떻게 Thread가 하나인데 이런 일이 가능할까? " 다시 말해서 " Javascript는 어떻게 동시성(Concurrency)을 지원할까?" 이때 등장하는 개념이 바로 'Event ..
-
Node.js[JWT] - 토큰 기반 인증 - 2Node.js 2018. 3. 24. 17:01
- Token 인증방식 REST API에서 로그인은 일반적인 로그인과 다른 방식을 가진다. 일반적으로 로그인은 서버의 session을 통해 이루어지는데, 서버는 접속중인 클라이언트들을 이 session을 통해 관리한다.사이트에 접속하면 session에 해당 클라이언트가 기록되고 로그인을 하게 되면 해당 클라이언트가 로그인한 것을 저장하게 된다.이후 해당 클라이언트는 로그인이 요구되는 정보에 접근할수 있게 된다.이 방식은 접속자수가 늘어나면 서버의 메모리 사용량이 증가하게 되고 성능에 영항을 미친다. REST API에서는 서버가 session을 가지는 방식이 아닌 Token 인증 방식을 사용한다. 로그인 API로 아이디와 패스워드가 일치함이 확인되면 서버는 토큰을 발행하고, 로그인후 이용가능한 API들에는..
-
Node.js[JWT] - 토큰 기반 인증 - 1Node.js 2018. 2. 24. 15:02
- Token 기반 인증 - 토큰을 사용하여 유저들의 인증작업을 처리하는 방법 Token 기반의 인증방법을 알기전에 세션에 대해 알고있어야한다.세션(Session)은 서버가 클라이언트에게서 요청을 받을때 마다, 클라이언트의 상태를 계속해서 유지하고, 이정보를 서비스 제공에 이용한다.서버가 세션을 관리하고 있으며 사용자의 정보를 서버컴퓨터의 메모리 또는 데이터베이스 시스템에 담아둔다. 세션에 대해서 다시 정의 해보자면 유저가 인증을 할때 , 서버는 이 기록을 서버에 저장하는데 이를 세션이라고 한다.세션의 단점은 만약 서버에 다수의 유저들이 인증을 시도한다면 아마 서버에선 과부하가 걸릴 위험이 있게될것이다.또한 세션을 관리하기 위해 서버는 확장을 하기가 어려워진다. 만약에 세션을 서버측에 저장하고 있고, 서..