SlideShare uma empresa Scribd logo
1 de 70
ES6 STUDYS E C O N D T I M E
2 0 1 8 . 1 0 . 2 7
장 승 빈
TODAY SUBJECTS
• 지난시간 복습
• 개발 환경 (보완)
• ES6
– FUNCTION PARAMETER
– SPREAD OPERATOR
– DESTRUCTURING ASSGINMENT
– MODULE SYSTEM
• Node.js
– npm
– heroku
지난 시간 복습
이 라 고 쓰 고 보 정 이 라 고 읽 는 …
지난 시간에…
• 변수 선언 : let
– 상수는 const (objec는 ref 재할당하지 않는)
– ES6이상 에선 var를 사용하지 않기
• 템플릿 리터럴 : template literal
– 문자열 보간법 : string interpolation
– 함수 전달
(FUNCTION) HOISTING
• 끌어올림(hoisting)은 함수에서 사용할 때 문제
// 변수 호이스트
console.log(hoistVariable);
var hoistVariable = "hoist Variable";
// 함수 호이스트
hoistFunc();
function hoistFunc(){
console.log('hoist Function!');
}
지난 시간에…
• 화살표 함수 : arrow function
– 변수 선언과 달리 모든 함수를 화살표 함수로 변경하면 안됨
– lexical this의 특징을 잘 생각해서 사용할 것!
화살표 함수 사용하면 안되는 경우
• 클래스의 메소드에 사용하면 안됨!
var obj = {
i: 10,
b: () => console.log(this.i, this),
c: function() {
console.log( this.i, this)
}
}
obj.b();
obj.c();
화살표 함수 사용하면 안되는 경우
• OOP(객체지향)적으로 개발할 때 생성자로 사용하면 안됨
개발 환경
C O D E R U N N E R 플 러 그 인
E S L I N T 플 러 그 인
CODE RUNNER PLUGIN
• code runner
– 스크립트 실행 가능
ESLINT 플러그인
• 에디터 자체에서 problem 패널에 출력
• fix 기능도 사용 가능
아직 FIX 하지 마시고...
ESLINT RULES 추가
• console.log를 오류로 잡지 않기
– no-console
• var를 사용하지 않도록
– no-var
{
"env": {
"es6": true,
“node”: true
},
“extends”: “eslint:recommended”,
“parserOptions”: {
“ecmaVersion”: 2015
},
“rules”: {
“indent”: [
“error”,
“tab”
],
“linebreak-style”: [
“error”,
“windows”
],
// ...
],
"no-console": [
"error",
{ "allow": ["log"] }
],
"no-var": "error"
}
}
],
// 주의: 위 콤마도 같이 추가
"no-console": [
"error",
{ "allow": ["log"] }
],
"no-var": "error"
다시 돌아오면
ES6
F U N C T I O N PA R A M E T E R
S P R E A D O P E R AT O R
D E S T R U C T U R I N G A S S G I N M E N T
M O D U L E S Y S T E M
FUNCTION - DEFAULT PARAMETER
• 함수 인자의 기본값을 지정 가능!
const sum = ( a, b, c=10, d=20 ) => a+b+c+d;
console.log( sum( 1 ) );
console.log( sum( 1, 2 ) );
console.log( sum( 1, 2, 3 ) );
console.log( sum( 1, 2, 3, 4 ) );
console.log( sum( 1, 2, 3, 4, 5 ) );
FUNCTION - REST PARAMETER
• 개수를 알 수 없는 여러 개의 파라미터를 받는 방법
function restParamsFunc(arg1, arg2, ...args){
console.log(arg1);
console.log(arg2);
for(let i=0; i<args.length; i++){
console.log(args[i]);
}
}
restParamsFunc(1,2,3,4,5,6,"칠", "팔");
FUNCTION - TAGGED TEMPLATES
• 쓸데가 있을까 싶습니다만...
function taggedTamplateFunc(strings, a, b) {
let x = a;
let y = b;
let str1 = strings[0];
let str2 = strings[1];
console.log( str1 + x + str2 + y );
}
let x = 30;
let y = 28;
taggedTamplateFunc`x=${ x }, y=${ y }`;
SPREAD OPERATOR
• 전개 연산자 사용법 : ...(배열/객체명)
– 2개 이상의 함수인자 또는 배열 요소를 확장할 수 있는 표현식(?) 구문
– 배열/객체명은 반복 가능한(iterable) 객체를 반환(대입?)
// iterable에 관해서는 다음주에…
• 함수 인자로 사용
– rest parameter 참고
• 배열 요소 할당에 사용
– (뒷장에서)
DESTRUCTURING ASSIGNMENT
• 비구조화 데이터 할당
– 배열의 구조화 할당
const someArray = [1, 2, 3];
let one = someArray[0];
let two = someArray[1];
let three = someArray[2];
console.log(one, two, three);
– 배열의 비구조화 할당
const someArray = [1, 2, 3];
let [one, two, three] = someArray;
console.log(one, two, three);
ARRAY DESTRUCTURING
• 전개 연산자 활용
const someArray = [1, 2, 3, 4, 5, 6];
let [one, two, ...numbers] = someArray;
console.log(one, two, numbers.length);
• 기본값 지정 가능
let [a, b, c=10] = [1,2];
console.log(a, b, c);
• 매칭 건너뛰기~
let [x, , , y] = [1, 2, 3, 4];
console.log(x, y);
TIPS - VARIABLE SWAP
• 변수의 값을 교차할 때 temp를 선언하지 않아도
let first = 1;
let second = 2;
console.log(first, second);
[first, second] = [second, first];
console.log(first, second);
OBJECT DESTRUCTURING
• 배열과는 달리 key가 일치하는 값만 가져옴
const someObject = {
numberProp: 200,
booleanProp: true,
stringProp: "어떤속성"
};
let {numberProp, stringProp} = someObject;
console.log(numberProp, stringProp);
// 다른 이름으로
let {stringProp: str, booleanProp: bool} = someObject;
console.log(str, bool);
OBJECT DESTRUCTURING
• 기본값 설정
const someObject = {
numberProp: 200,
booleanProp: true,
stringProp: "어떤속성"
};
let {stringProp, a=10, b=20} = someObject;
console.log(stringProp, a, b);
// 다른 이름으로
let {stringProp: str, a:x=10, b:y=20} = someObject;
console.log(str, x, y);
MODULE SYSTEM
• 프로그램의 조각(?)
– 함수(클래스)보다 크면서 라이브러리보다 작은 그 사이 어딘가 속하는 코드 집합
• 하나의 프로그램을 여러 개의 파일로 나눌 때 사용하는 방법
– export
– import
• 그러나 node.js에서는 ES6 모듈 문법이 기본 지원이 아님
EXPORTS / REQUIRE
NODE.JS
2 - R O U N D
NPM.JS
• Node Package Manager
• Nodejs로 개발된 프로그램을 관리하는 콘솔(CLI) 프로그램
기본 사용법
• 설치 : npm install [모듈명]
– install 약자로 i 사용 가능
• 삭제 : npm remove [모듈명]
– 역시 remove 약자로 rm 사용 가능
• 전역 설치
– 옵션 -g 를 사용
– 시스템의 node.js모듈 디렉터리에 설치됨
EXPRESS.JS
• node.js 가장 많이 사용되는 웹(http) 서버 Frameworks
• 새 프로젝트 디렉토리를 생성한후 VSCode 로 엽니다.
EXPRESS.JS 시작하기
• 터미널(ctrl+`)을 열고 npm i express --save 실행
EXPRESS.JS 시작하기
• index.js 파일을 만들고 [공식 예제]를 입력합니다.
EXPRESS.JS 시작하기
• 터미널에서 node index.js 실행 후
• 웹 브라우저에서 localhost:3000으로 접속
EXPRESS.JS
• 터미널에서 [Ctrl + C] 를 눌러 테스트를 종료합니다.
EXPRESS GENERATOR
• express (프로젝트 템플릿) 생성기
– https://expressjs.com/ko/starter/generator.html
• 전역 설치해야하는 유틸리티
– npm i -g express-generator
테스트
npm install
npm start
http://localhost:3000
HEROKU
• PaaS 형태의 서비스
– 사용자가 서버를 세팅하거나 관리(유지보수)할 필요 없고
– 프로그램 소스만 전속하면 자동으로 프로그램 서버가 동작
• 무료플랜이 있음
– 30분만 접속자가 없을 시 서버가 sleep
(개발시에는 무리 없을 듯..)
• git 을 사용해 node.js 프로그램 소스를 전송
HEROKU 가입
HEROKU 가입
HEROKU 가입
HEROKU 가입
HEROKU 가입
HEROKU 가입
HEROKU 프로젝트 생성
HEROKU 프로젝트 생성
HEROKU 프로젝트 생성
HEROKU 도메인 확인
HEROKU 도메인 확인
HEROKU 도메인 확인
HEROKU 관리도구 설치
HEROKU 관리도구 설치
HEROKU 관리도구 설치
HEROKU 서버에 전송
HEROKU 서버에 전송
HEROKU 서버에 전송
[TIP] HEROKU 사용시
• 전송할 필요 없는 파일 제외
– 모듈들은 업로드 해봐야 package.json 파일 기반으로 다시 설치됨
– .gitignore 파일 생성
– node_modules/ 입력
• package.json 파일이 필요
– 내용 중 build script에 start 스크립트가 필요
HEROKU 서버에 전송
HEROKU 서버에 전송
[프로젝트명].herokuapp.com
수고하셨습니다.

Mais conteúdo relacionado

Mais procurados

자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
유진 변
 

Mais procurados (20)

1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초1.Startup JavaScript - 프로그래밍 기초
1.Startup JavaScript - 프로그래밍 기초
 
프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function프론트엔드스터디 E04 js function
프론트엔드스터디 E04 js function
 
Javascript 교육자료 pdf
Javascript 교육자료 pdfJavascript 교육자료 pdf
Javascript 교육자료 pdf
 
호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE호이스팅, 클로저, IIFE
호이스팅, 클로저, IIFE
 
동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 Clojure동시성 프로그래밍 하기 좋은 Clojure
동시성 프로그래밍 하기 좋은 Clojure
 
자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초자바스크립트 기초문법~함수기초
자바스크립트 기초문법~함수기초
 
iOS 메모리관리
iOS 메모리관리iOS 메모리관리
iOS 메모리관리
 
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
[새차원, 코틀린(Kotlin) 강좌] 5. Control Flow
 
Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약Effective c++ chapter 1,2 요약
Effective c++ chapter 1,2 요약
 
자바 8
자바 8자바 8
자바 8
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
[Main Session] 미래의 Java 미리보기 - 앰버와 발할라 프로젝트를 중심으로
 
자바스크립트 함수
자바스크립트 함수자바스크립트 함수
자바스크립트 함수
 
100511 boost&tips 최성기
100511 boost&tips 최성기100511 boost&tips 최성기
100511 boost&tips 최성기
 
Exception&log
Exception&logException&log
Exception&log
 
Effective c++ 정리 1~2
Effective c++ 정리 1~2Effective c++ 정리 1~2
Effective c++ 정리 1~2
 
Go
GoGo
Go
 
JavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and ConstructorsJavaScript Patterns - Chapter 3. Literals and Constructors
JavaScript Patterns - Chapter 3. Literals and Constructors
 
골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료골때리는 자바스크립트 발표자료
골때리는 자바스크립트 발표자료
 
Memory & object pooling
Memory & object poolingMemory & object pooling
Memory & object pooling
 

Semelhante a ES6 for Node.js Study 2주차

파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
SeongHyun Ahn
 

Semelhante a ES6 for Node.js Study 2주차 (20)

EcmaScript6(2015) Overview
EcmaScript6(2015) OverviewEcmaScript6(2015) Overview
EcmaScript6(2015) Overview
 
Nodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjsNodejs, PhantomJS, casperJs, YSlow, expressjs
Nodejs, PhantomJS, casperJs, YSlow, expressjs
 
Node.js 기본
Node.js 기본Node.js 기본
Node.js 기본
 
파이썬 스터디 15장
파이썬 스터디 15장파이썬 스터디 15장
파이썬 스터디 15장
 
Java.next
Java.nextJava.next
Java.next
 
ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!ECMAScript 6의 새로운 것들!
ECMAScript 6의 새로운 것들!
 
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 7회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
[2B7]시즌2 멀티쓰레드프로그래밍이 왜 이리 힘드나요
 
Nexacro
NexacroNexacro
Nexacro
 
Node.js intro
Node.js introNode.js intro
Node.js intro
 
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
[NDC17] Unreal.js - 자바스크립트로 쉽고 빠른 UE4 개발하기
 
Javascript
JavascriptJavascript
Javascript
 
Let's Go (golang)
Let's Go (golang)Let's Go (golang)
Let's Go (golang)
 
Kubernetes & helm 활용
Kubernetes & helm 활용Kubernetes & helm 활용
Kubernetes & helm 활용
 
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
제프리 리처의 Windows via C/C++ : 8장 유저 모드에서의 스레드 동기화
 
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
제 10회 엑셈 수요 세미나 자료 연구컨텐츠팀
 
Assembly 스터디 1
Assembly 스터디 1Assembly 스터디 1
Assembly 스터디 1
 
Sonarqube 20160509
Sonarqube 20160509Sonarqube 20160509
Sonarqube 20160509
 
NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스NDC11_김성익_슈퍼클래스
NDC11_김성익_슈퍼클래스
 
Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나Front-end Development Process - 어디까지 개선할 수 있나
Front-end Development Process - 어디까지 개선할 수 있나
 

Mais de 승빈이네 공작소

Mais de 승빈이네 공작소 (19)

토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 3
 
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 2
 
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
토이 프로젝트를 위한 속성 RDB(MySQL) 스터디 1
 
Vue.js 입문 04 조건부 랜더링
Vue.js 입문 04 조건부 랜더링Vue.js 입문 04 조건부 랜더링
Vue.js 입문 04 조건부 랜더링
 
Vue.js 입문 03 데이터와 메소드
Vue.js 입문 03 데이터와 메소드Vue.js 입문 03 데이터와 메소드
Vue.js 입문 03 데이터와 메소드
 
Vue.js 입문 02 템플릿 문법
Vue.js 입문 02 템플릿 문법Vue.js 입문 02 템플릿 문법
Vue.js 입문 02 템플릿 문법
 
Git 코드랩 스터디 4
Git 코드랩 스터디 4Git 코드랩 스터디 4
Git 코드랩 스터디 4
 
Git 코드랩 스터디 3
Git 코드랩 스터디 3Git 코드랩 스터디 3
Git 코드랩 스터디 3
 
Git 코드랩 스터디 2
Git 코드랩 스터디 2Git 코드랩 스터디 2
Git 코드랩 스터디 2
 
Git 코드랩 스터디 1
Git 코드랩 스터디 1Git 코드랩 스터디 1
Git 코드랩 스터디 1
 
ES6 for Node.js Study 5주차
ES6 for Node.js Study 5주차ES6 for Node.js Study 5주차
ES6 for Node.js Study 5주차
 
ES6 for Node.js Study 4주차
ES6 for Node.js Study 4주차ES6 for Node.js Study 4주차
ES6 for Node.js Study 4주차
 
ES6 for Node.js Study 3주차
ES6 for Node.js Study 3주차ES6 for Node.js Study 3주차
ES6 for Node.js Study 3주차
 
겜냥이 어플 활용 가이드
겜냥이 어플 활용 가이드겜냥이 어플 활용 가이드
겜냥이 어플 활용 가이드
 
Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기Google Calendar API - PHP 연동하기
Google Calendar API - PHP 연동하기
 
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 StorageFirebase for web (웹개발을 위한 파이어베이스) 4 Storage
Firebase for web (웹개발을 위한 파이어베이스) 4 Storage
 
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time DatabaseFirebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
Firebase for web (웹개발을 위한 파이어베이스) 3 Real-Time Database
 
Firebase for web (웹개발을 위한 파이어베이스) 2 Authentication
Firebase for web (웹개발을 위한 파이어베이스) 2 AuthenticationFirebase for web (웹개발을 위한 파이어베이스) 2 Authentication
Firebase for web (웹개발을 위한 파이어베이스) 2 Authentication
 
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 HostingFirebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
Firebase for Web (웹개발을 위한 파이어베이스) 1 Hosting
 

Último

Último (6)

코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
코딩 테스트 합격자 되기 C++ 00장~ 01장을 정리한 강의자료 입니다.
 
TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)TDM(Text Data Mining) Studio manual(2024)
TDM(Text Data Mining) Studio manual(2024)
 
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
이번에 새로 나온 코딩 테스트 합격자 되기 C++편 책을 소개하는 PPT 입니다.
 
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
코딩테스트 합격자 되기 C++ 03장(시간 복잡도)를 설명한 ppt입니다
 
바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111바리스타이론기초-1 수정 후 111111111111111111111111
바리스타이론기초-1 수정 후 111111111111111111111111
 
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료친환경, 그린, 탄소저감  미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
친환경, 그린, 탄소저감 미래 교육 공간 디자인의 이해와 사례들에 대한 강의 자료
 

ES6 for Node.js Study 2주차

  • 1. ES6 STUDYS E C O N D T I M E 2 0 1 8 . 1 0 . 2 7 장 승 빈
  • 2. TODAY SUBJECTS • 지난시간 복습 • 개발 환경 (보완) • ES6 – FUNCTION PARAMETER – SPREAD OPERATOR – DESTRUCTURING ASSGINMENT – MODULE SYSTEM • Node.js – npm – heroku
  • 3. 지난 시간 복습 이 라 고 쓰 고 보 정 이 라 고 읽 는 …
  • 4. 지난 시간에… • 변수 선언 : let – 상수는 const (objec는 ref 재할당하지 않는) – ES6이상 에선 var를 사용하지 않기 • 템플릿 리터럴 : template literal – 문자열 보간법 : string interpolation – 함수 전달
  • 5. (FUNCTION) HOISTING • 끌어올림(hoisting)은 함수에서 사용할 때 문제 // 변수 호이스트 console.log(hoistVariable); var hoistVariable = "hoist Variable"; // 함수 호이스트 hoistFunc(); function hoistFunc(){ console.log('hoist Function!'); }
  • 6. 지난 시간에… • 화살표 함수 : arrow function – 변수 선언과 달리 모든 함수를 화살표 함수로 변경하면 안됨 – lexical this의 특징을 잘 생각해서 사용할 것!
  • 7. 화살표 함수 사용하면 안되는 경우 • 클래스의 메소드에 사용하면 안됨! var obj = { i: 10, b: () => console.log(this.i, this), c: function() { console.log( this.i, this) } } obj.b(); obj.c();
  • 8. 화살표 함수 사용하면 안되는 경우 • OOP(객체지향)적으로 개발할 때 생성자로 사용하면 안됨
  • 9. 개발 환경 C O D E R U N N E R 플 러 그 인 E S L I N T 플 러 그 인
  • 10. CODE RUNNER PLUGIN • code runner – 스크립트 실행 가능
  • 11.
  • 12.
  • 13. ESLINT 플러그인 • 에디터 자체에서 problem 패널에 출력 • fix 기능도 사용 가능
  • 14.
  • 15. 아직 FIX 하지 마시고...
  • 16. ESLINT RULES 추가 • console.log를 오류로 잡지 않기 – no-console • var를 사용하지 않도록 – no-var { "env": { "es6": true, “node”: true }, “extends”: “eslint:recommended”, “parserOptions”: { “ecmaVersion”: 2015 }, “rules”: { “indent”: [ “error”, “tab” ], “linebreak-style”: [ “error”, “windows” ], // ... ], "no-console": [ "error", { "allow": ["log"] } ], "no-var": "error" } } ], // 주의: 위 콤마도 같이 추가 "no-console": [ "error", { "allow": ["log"] } ], "no-var": "error"
  • 18. ES6 F U N C T I O N PA R A M E T E R S P R E A D O P E R AT O R D E S T R U C T U R I N G A S S G I N M E N T M O D U L E S Y S T E M
  • 19. FUNCTION - DEFAULT PARAMETER • 함수 인자의 기본값을 지정 가능! const sum = ( a, b, c=10, d=20 ) => a+b+c+d; console.log( sum( 1 ) ); console.log( sum( 1, 2 ) ); console.log( sum( 1, 2, 3 ) ); console.log( sum( 1, 2, 3, 4 ) ); console.log( sum( 1, 2, 3, 4, 5 ) );
  • 20. FUNCTION - REST PARAMETER • 개수를 알 수 없는 여러 개의 파라미터를 받는 방법 function restParamsFunc(arg1, arg2, ...args){ console.log(arg1); console.log(arg2); for(let i=0; i<args.length; i++){ console.log(args[i]); } } restParamsFunc(1,2,3,4,5,6,"칠", "팔");
  • 21. FUNCTION - TAGGED TEMPLATES • 쓸데가 있을까 싶습니다만... function taggedTamplateFunc(strings, a, b) { let x = a; let y = b; let str1 = strings[0]; let str2 = strings[1]; console.log( str1 + x + str2 + y ); } let x = 30; let y = 28; taggedTamplateFunc`x=${ x }, y=${ y }`;
  • 22. SPREAD OPERATOR • 전개 연산자 사용법 : ...(배열/객체명) – 2개 이상의 함수인자 또는 배열 요소를 확장할 수 있는 표현식(?) 구문 – 배열/객체명은 반복 가능한(iterable) 객체를 반환(대입?) // iterable에 관해서는 다음주에… • 함수 인자로 사용 – rest parameter 참고 • 배열 요소 할당에 사용 – (뒷장에서)
  • 23. DESTRUCTURING ASSIGNMENT • 비구조화 데이터 할당 – 배열의 구조화 할당 const someArray = [1, 2, 3]; let one = someArray[0]; let two = someArray[1]; let three = someArray[2]; console.log(one, two, three); – 배열의 비구조화 할당 const someArray = [1, 2, 3]; let [one, two, three] = someArray; console.log(one, two, three);
  • 24. ARRAY DESTRUCTURING • 전개 연산자 활용 const someArray = [1, 2, 3, 4, 5, 6]; let [one, two, ...numbers] = someArray; console.log(one, two, numbers.length); • 기본값 지정 가능 let [a, b, c=10] = [1,2]; console.log(a, b, c); • 매칭 건너뛰기~ let [x, , , y] = [1, 2, 3, 4]; console.log(x, y);
  • 25. TIPS - VARIABLE SWAP • 변수의 값을 교차할 때 temp를 선언하지 않아도 let first = 1; let second = 2; console.log(first, second); [first, second] = [second, first]; console.log(first, second);
  • 26. OBJECT DESTRUCTURING • 배열과는 달리 key가 일치하는 값만 가져옴 const someObject = { numberProp: 200, booleanProp: true, stringProp: "어떤속성" }; let {numberProp, stringProp} = someObject; console.log(numberProp, stringProp); // 다른 이름으로 let {stringProp: str, booleanProp: bool} = someObject; console.log(str, bool);
  • 27. OBJECT DESTRUCTURING • 기본값 설정 const someObject = { numberProp: 200, booleanProp: true, stringProp: "어떤속성" }; let {stringProp, a=10, b=20} = someObject; console.log(stringProp, a, b); // 다른 이름으로 let {stringProp: str, a:x=10, b:y=20} = someObject; console.log(str, x, y);
  • 28. MODULE SYSTEM • 프로그램의 조각(?) – 함수(클래스)보다 크면서 라이브러리보다 작은 그 사이 어딘가 속하는 코드 집합 • 하나의 프로그램을 여러 개의 파일로 나눌 때 사용하는 방법 – export – import • 그러나 node.js에서는 ES6 모듈 문법이 기본 지원이 아님
  • 29.
  • 31.
  • 32. NODE.JS 2 - R O U N D
  • 33. NPM.JS • Node Package Manager • Nodejs로 개발된 프로그램을 관리하는 콘솔(CLI) 프로그램
  • 34. 기본 사용법 • 설치 : npm install [모듈명] – install 약자로 i 사용 가능 • 삭제 : npm remove [모듈명] – 역시 remove 약자로 rm 사용 가능 • 전역 설치 – 옵션 -g 를 사용 – 시스템의 node.js모듈 디렉터리에 설치됨
  • 35. EXPRESS.JS • node.js 가장 많이 사용되는 웹(http) 서버 Frameworks • 새 프로젝트 디렉토리를 생성한후 VSCode 로 엽니다.
  • 36. EXPRESS.JS 시작하기 • 터미널(ctrl+`)을 열고 npm i express --save 실행
  • 37. EXPRESS.JS 시작하기 • index.js 파일을 만들고 [공식 예제]를 입력합니다.
  • 38. EXPRESS.JS 시작하기 • 터미널에서 node index.js 실행 후 • 웹 브라우저에서 localhost:3000으로 접속
  • 39. EXPRESS.JS • 터미널에서 [Ctrl + C] 를 눌러 테스트를 종료합니다.
  • 40. EXPRESS GENERATOR • express (프로젝트 템플릿) 생성기 – https://expressjs.com/ko/starter/generator.html • 전역 설치해야하는 유틸리티 – npm i -g express-generator
  • 45. HEROKU • PaaS 형태의 서비스 – 사용자가 서버를 세팅하거나 관리(유지보수)할 필요 없고 – 프로그램 소스만 전속하면 자동으로 프로그램 서버가 동작 • 무료플랜이 있음 – 30분만 접속자가 없을 시 서버가 sleep (개발시에는 무리 없을 듯..) • git 을 사용해 node.js 프로그램 소스를 전송
  • 64. [TIP] HEROKU 사용시 • 전송할 필요 없는 파일 제외 – 모듈들은 업로드 해봐야 package.json 파일 기반으로 다시 설치됨 – .gitignore 파일 생성 – node_modules/ 입력 • package.json 파일이 필요 – 내용 중 build script에 start 스크립트가 필요
  • 65.
  • 68.