테스트 주도 개발

  • Mocha
    • 테스트 코드를 실행시켜준다.
    • describe: 테스트의 범위(테스트 수트)
    • it: 단위 테스트(테스트 케이스)
  • Should
    • 검증 라이브러리
    • Nodejs 문서에는 기본 모듈인 assert가 아닌 서드파티 라이브러리 사용을 권장하고 있다.
    • 가독성 높은 테스트 코드를 작성할 수 있다.
  • 파일이름에 spec이 들어가면 테스트 코드
// test/utils.js
function capitialize(str){
    return str;
}

module.exports = { capitialize };  
// test/utils.spec.js
const utils = require('./utils');
const should = require('should');

describe('utils.js 모듈의 capitialize() 함수는', () => {  
    it('(1)문자열의 첫번째 문자를 대문자로 변환한다.', () => {  
        const result = utils.capitialize('Hello');  
        result.should.be.equal('Hello');  
    });  
    it('(2)문자열의 첫번째 문자를 대문자로 변환한다.', () => {  
        const result = utils.capitialize('Hello');  
        result.should.be.equal('hello');  
    });  
});

'Node js' 카테고리의 다른 글

FileSystem  (0) 2020.01.26
Express  (0) 2020.01.26
Node js 버전 관리  (0) 2019.09.02
Node js란?  (0) 2019.09.02
ES6  (0) 2019.08.30

File System

  • 디렉터리 생성
fs.mkdir('.temp', err => {
});
  • 디렉터리 삭제
fs.rmdir('./temp', err => {
  if(err) throw err
});
  • 파일 생성
fs.open('./text.txt', 'wx', (err, fd){
        if(err) throw err;
});
  • 파일 삭제
fs.unlink('./text.txt', err => {
  if(err) throw err;
}
  • 이름 변경
fs.rename('temp', 'temp2', err => {
  if(err) throw err;
});
  • 파일 읽기
fs.readFile('./temp/newFile', 'utf8', (err, data) => {
  if(err) throw err;
  console.log(data);
});
  • 파일 쓰기
fs.writeFile('./temp/new', 'Node js Practice', err => {
  if(err) throw err;
  console.log("생성 완료");
});

'Node js' 카테고리의 다른 글

TDD  (0) 2020.02.03
Express  (0) 2020.01.26
Node js 버전 관리  (0) 2019.09.02
Node js란?  (0) 2019.09.02
ES6  (0) 2019.08.30
const express = require('express');
const app = express();

Application

  • app.set(name, value): "name"에 "value"를 할당한다.

  • app.get(name): "name"에 해당하는 "value"를 가져온다.

  • app.use([path], callback [, callback...]): 미들웨어를 사용한다.

Request

  • req.query: GET 방식으로 전송되는 querystring을 포함한다.

  • req.body: POST 방식으로 전송되는 parameter를 포함한다. body-parser 사용을 요한다.

  • req.cookies: 해석된 쿠키의 값을 가져온다. cookie-parser 사용을 요한다.

  • req.params: parameter를 URL경로에서 얻는다.


app.get('/InJaee/:TEST', (req, res) \=\> {

console.log(req.params.TEST);

// http://127.0.0.1/InJaEE/paramtest => paramtest

});
  • req.headers: HTTP의 Header 정보를 담고있다.

Response

  • res.send([body])

  • res.json([body])

  • res.render(view [, locals] [, callback])

  • res.redirect([status,] path)

'Node js' 카테고리의 다른 글

TDD  (0) 2020.02.03
FileSystem  (0) 2020.01.26
Node js 버전 관리  (0) 2019.09.02
Node js란?  (0) 2019.09.02
ES6  (0) 2019.08.30

NVM 설치

https://github.com/coreybutler/nvm-windows/releases

 

 

# Node 버전 설치

$ nvm install <version>

ex) nvm install 8.9.4

 

# 설치된 Node 버전 목록 확인

$ nvm ls

 

# 사용할 Node 설정

$ nvm use <version>

ex) nvm use 8.9.4

 

$ nvm use <alias>

ex) nvm use default

 

# 사용할 alias 설정

$ nvm alias <alias> <version>

ex) nvm alias test-v 8.9.4

'Node js' 카테고리의 다른 글

TDD  (0) 2020.02.03
FileSystem  (0) 2020.01.26
Express  (0) 2020.01.26
Node js란?  (0) 2019.09.02
ES6  (0) 2019.08.30

Node js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다.

 

- 빠르다

- Single Thread

- 비동기 방식

- 자바스크립트로 백엔드 서버를 개발할 수 있다

 

- V8 엔진

구글이 개발한 자바스크립트 기반으로 머신코드로 작동하여 속도를 개선한 엔진

- 자바스크립트 문법

문법이 기존에 익숙하게 사용하던 문법을 사용 가능하여 수월하게 개발할 수 있다.

-Event-driven

이벤트가 발생할 시에만 자원을 사용하여 최소화하는 방식

-non-blocking

비동기 방식을 사용하여 속도가 빠르고 메모리 점유율이 낮다.

'Node js' 카테고리의 다른 글

TDD  (0) 2020.02.03
FileSystem  (0) 2020.01.26
Express  (0) 2020.01.26
Node js 버전 관리  (0) 2019.09.02
ES6  (0) 2019.08.30

ES6 Syntax

let

  • 지역변수

const

  • 상수

  • 선언과 할당을 동시에 해야한다.


Arrow Function

  • 항상 익명함수이다.

  • 생성자를 사용할 수 없다.

// ES5
var test = function(str){
  console.log(str)
}
// ES6
var test = (str)=>{
  console.log(str);
}
  • 리턴 값을 가지고 있는 한 줄 함수 축약법
// ES5
var arrow = function(str){
  return str+str;
}

// ES6  
var arrow = str => str+str;

Template literal

  • 문자열과 자바스크립트 표현식을 함께 사용하기 좋다.
// ES5
var name = "백인재";
var introduce = "안녕하세요 "+name+"라고 합니다.";

// ES6  
const name = "백인재";  
var introduce = `안녕하세요 ${name}라고 합니다.`;

비구조화 할당

  • 객체 안의 필드를 손쉽게 꺼내여 변수로 대입할 수 있다.
// ES5
var person = {
  name : "백인재",
  job : "developer",
  family : ["mother", "father", "brother"]
}
var name = person.name;
var job = person.job;

// ES6  
var person = {  
name : "백인재",  
job : "developer",  
family : \["mother", "father", "brother"\]  
}  
var {name, job, family} = person;

Enhanced object literals

  • key:value 형태가 아닌 변수명만 작성해주면 변수명과 동일한 변수값이 대입된다.
// ES5
var name = "백인재";
var job = "developer";
var info = {
  name : name,
  job : job
}

// ES6  
const name = "백인재";  
const job = "developer";  
var info = {  
name, job  
}

Class

  • class와 constructor 선언이 가능해졌지만 내부적으로는 ES5의 짝퉁객체와 동일한 구조
// ES5(짝퉁객체)
var Sample=(function(){
  // 생성자. 객체명과 똑같이 쓴다.
  this.firstName;
  this.lastName;
  function Sample(firstName, lastName){
    this.firstName=firstName;
    this.lastName=lastName;
  }
  // 메서드
  Sample.prototype.fullName=function(){
    console.log(this.firstName+this.lastName);  
  }
  return Sample;
})(); // IIFE 즉시실행
var hong=new Sample("홍", "길동");
hong.fullName();

// ES6

class Sample{  
constructor(age, name){  
this.age=age;  
this.name=name;  
}  
speak(){  
console.log(`${this.name}은(는) ${this.age}살 입니다.`);  
}  
}  
const hong2=new Sample(27, "백인재");  
hong2.speak();

Default Parameter

  • parameter의 기본값을 설정할 수 있다.
// ES5
function paramTest(a, b, c){
  console.log(a, b, c);
}
paramTest("백", "인", "재");

// ES6  
function paramTest(a, b="인", c="재"){  
console.log(a, b, c);  
}  
paramTest("백");  

'Node js' 카테고리의 다른 글

TDD  (0) 2020.02.03
FileSystem  (0) 2020.01.26
Express  (0) 2020.01.26
Node js 버전 관리  (0) 2019.09.02
Node js란?  (0) 2019.09.02

+ Recent posts