From 8f1ad9ee0006fc707835277f779c1d966a577d3a Mon Sep 17 00:00:00 2001 From: Dingadung <1229jimin@naver.com> Date: Wed, 5 Oct 2022 11:15:54 +0900 Subject: [PATCH 1/6] Add-js-study-ch1,2-jimin --- js-study-ch1,2-jimin.md | 82 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 js-study-ch1,2-jimin.md diff --git a/js-study-ch1,2-jimin.md b/js-study-ch1,2-jimin.md new file mode 100644 index 0000000..3870bde --- /dev/null +++ b/js-study-ch1,2-jimin.md @@ -0,0 +1,82 @@ +js-study-ch1,2-jimin +# Chapter 01 자바 스크립트 첫 걸음 +자바스크립트는 웹 브라우저에서 사용할 목적으로 사용할 목적으로 만든 프로그래밍 언어이다. + +## RIA +Rich Internet Application; 풍부한 경험을 선사하는 웹 애플리케이션 + +## Node.js +이벤트 기반 비동기 방식으로 작동하기에 대규모 네트워크 애플리케이션을 개발하는데 적합하다. + +`동기방식` ; +처리의 흐름이 순차적으로 진행되는 것 +`비동기 방식` ; +처리의 흐름이 순차적으로 진행되지 않고 섞이는 것 + +Node.js는 함수를 변수에 저장할 수 있다는 자바스크립트 프로그래밍 언어의 속성을 사용해 모든 모듈(라이브러리)이 처음부터 비동기 기본의 프로그램을 만들 수 있다. + +## 자바스크립트로 할 수 있는 일 +1. 웹 클라이언트 애플리케이션 개발 +2. 웹 서버 개발 +3. 모바일 애플리케이션 개발 +4. 데스크톱 애플리케이션 개발 +5. 데이터베이스 관리 + +--- +# Chapter 02기본 +## 1. 기본 용어 +### 표현식과 문장 +표현식 → 문장 → 프로그램 + +## 2. 출력 +### 출력 메소드 +```js +console.log("문자열") +``` + +### 문자열 +한 문자로 구성된 것도 문자열로 취급한다. +기본적인 문자열을 생성할 때 큰따옴표나 작은따옴표를 사용한다. + +### 템플릿 문자열 +템프릿 문자열은 \` 기호로 생성한다. +내부에 `${표현식}` 을 사용할 수 있다. → 표현식이 계산되어 문자열에 들어간다. +```js +`52 + 273 = ${52 + 273}` +``` + +## 3. 변수 +### 변수 선언 +```js +let 식별자; +``` + +## 4. 자료형 검사 +`typeof` 연산자를 사용한다. + +## 5. 강제 자료형 변환 +강제 자료형 변환 함수 + +|함수|설명| +|--------|----------------| +|Number()|숫자로 자료형 변환| +|String()|문자열로 자료형 변환| +|Boolean()|불로 자료형 변환| + +NaN인지 확인할 때는 `isNaN()` 함수를 사용한다. + +## 6. 자동 자료형 변환 +### 숫자와 문자열 자료형 자동 변환 +숫자와 문자열에 `+` 연산자를 적용하면 자동으로 숫자가 문자열로 변환된다. + +## 7. 일치 연산자 + +|연산자|설명| +|--------|-------------| +|===|자료형과 값이 같은지 비교한다.| +|!==|자료형과 값이 다른지 비교한다.| + +## 8. 상수 +```js +const 이름 = 값; +``` \ No newline at end of file From 05ea591b8cfa452505c7384d944bb65c66eca3c4 Mon Sep 17 00:00:00 2001 From: Dingadung <1229jimin@naver.com> Date: Wed, 5 Oct 2022 13:58:06 +0900 Subject: [PATCH 2/6] js-study-ch3,4-jimin --- js-study-ch3,4-jimin.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 js-study-ch3,4-jimin.md diff --git a/js-study-ch3,4-jimin.md b/js-study-ch3,4-jimin.md new file mode 100644 index 0000000..87fc3bc --- /dev/null +++ b/js-study-ch3,4-jimin.md @@ -0,0 +1,20 @@ +js-study-ch3,4-jimin +# Chapter03 조건문 +웹 브라우저에서 작동하는 자바스크립트는 prompt() 이름의 함수를 이용하여 입력을 받으면 되지만, Node.js에서 작동하는 자바스크립트는 입력을 받을 수 없다. +→ Node.는 기다리는 느린 코드를 절대 만들지 못하게 하겠다는 사상을 가지고 있기 때문이다. + +# Chapter04 반복문 +## 반복문과 배열 +배열 생성 방법 +```js +let 이름 = [자료, 자료, 자료, 자료, 자료, 자료] +``` +## 스코프(scope) +>변수를 사용할 수 있는 범위 + +스코프 == 블록 +## 섀도잉(Shadowing) +>블록 내부에서 이름이 같아서 상위 블록에 있는 변수의 이름을 가리는 것 + +## 호이스팅 +>해당 블록에서 사용할 변수를 미리 확인해서 정리하는 작업 From 8676e7e40088779e3aac1d482f7885f3d09a31b1 Mon Sep 17 00:00:00 2001 From: Dingadung <1229jimin@naver.com> Date: Thu, 6 Oct 2022 11:56:35 +0900 Subject: [PATCH 3/6] Add-js-study-ch5-jimin --- js-study-ch5-jimin.md | 77 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 77 insertions(+) create mode 100644 js-study-ch5-jimin.md diff --git a/js-study-ch5-jimin.md b/js-study-ch5-jimin.md new file mode 100644 index 0000000..d18365b --- /dev/null +++ b/js-study-ch5-jimin.md @@ -0,0 +1,77 @@ +js-study-ch5-jimin +# 1. 함수 생성 방법 +## 익명 함수 +익명 함수 생성 방법 +```js +let 함수_이름 = function() {}; +``` +## 선언적 함수 +```js +function 함수_이름() {} +``` +## 화살표 함수 +```js +() => {} +``` + +--- +# 2. 함수의 기본 형태 +```js +function 함수_이름(매개_변수) { + 함수_코드; + return 리턴_값; +} +``` + +--- +# 3. 콜백 함수(Callback) +>자바스크립트는 함수를 변수에 저장할 수 있어 함수를 함수의 매개 변수로 전달할 수 있다. +이 때 함수의 매개변수로 전달되는 함수를 콜백함수라고 한다. + +--- +# 4. 표준 내장 함수 +## 숫자 변환 함수 +|함수|설명| +|------|--------| +|parseInt()|문자열을 정수로 변환한다.| +|parseFloat()|문자열을 실수로 변환한다.| + +## 타이머 함수 +>특정 시간 후에 또는 특정 시간마다 어떤 일을 할 때는 타이머 함수를 사용한다. + +### 타이머 설정함수 +|함수|설명| +|-------|------| +|setTimeout(함수, 시간)|특정시간 후에 함수를 실행한다.| +|setInterval(함수, 시간)|특정시간마다 함수를 실행한다.| + +### 타이머 제거함수 +|함수|설명| +|-------|------| +|clearIntercval(아이디)|특정시간마다 실행하던 함수 호출을 정지한다.| + +```js +// 1초마다 +let id = setInterval(function () { + console.log("출력합니다."); +}, 1000); + +// 3초마다 +setTimeout(function () { + // 타이머를 제거한다. + clearInterval(id); +}, 3000); +``` + +--- +# 5. 조금 더 나아가기 +## 익명 함수와 선언적 함수의 생성 순서 +익명 함수는 선언적 함수를 `무조건적으로` 덮어쓴다. + +## 일반 함수와 화살표 함수의 차이 +`function () {}` 형태로 선언하는 익명함수와 `() => {}` 형태로 선언하는 화살표 함수는 거의 비슷한 기능을 수행한다. +하지만 한 가지 차이가 있는데, 바로 내부에서 `this` 키워드가 가지는 의미이다. +### 익명함수: function () {} +this는 자바스크립트 최상위 객체 또는 외부에서 강제로 연결한 객체를 나타낸다. +### 화살표함수: () => {} +this는 자기 자신과 관련된 것만을 나타낸다. \ No newline at end of file From ae93d6f08a712b0642809a7305e2a87f9ff4f922 Mon Sep 17 00:00:00 2001 From: Dingadung <1229jimin@naver.com> Date: Fri, 7 Oct 2022 11:31:42 +0900 Subject: [PATCH 4/6] Add-js-study-ch6-jimin --- js-study-ch6-jimin.md | 110 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 js-study-ch6-jimin.md diff --git a/js-study-ch6-jimin.md b/js-study-ch6-jimin.md new file mode 100644 index 0000000..ba336d9 --- /dev/null +++ b/js-study-ch6-jimin.md @@ -0,0 +1,110 @@ +js-study-ch6-jimin +# 1. 객체 기본 +>객체는 여러 개의 자료형을 한 번에 저장하는 자료형이다. + +`배열` 은 요소에 접근할 때 `인덱스` 를 사용하고, `객체` 는 `키` 를 사용한다. + +## 객체 선언 +```js +// 객체 선언 +let product = { + 제품명: '7D 건조 망고', + 유형: '당절임', + 성분: '망고, 설탕, 메타중아황산나트륨, 치자황색소', + 원산지: '필라핀' +}; + +// 출력 +console.log(product); +``` +### 객체 +|키|속성| +|------|------------------| +|제품명|7D 건조 망고| +|유형|당절임| +|성분|망고, 설탕, 메타중아황산나트륨, 치자황색소| +|원산지|필라핀| + +### 객체 속성 접근 +```js +product['제품명'] + +product.제품명 +``` +### 식별자로 사용할 수 없는 키 +식별자 생성 규칙에 어긋나는 문자를 키로 사용할 때에는 반드시 `대괄호` 를 사용해야 객체의 요소에 접근할 수 있다. +대괄호가 아니라 점을 찍어 사용하면 자바스크립트 문법 오류가 발생하게 된다. + +--- +# 2. 객체와 반복문 +생성한 객체에는 `for in` 반복문으로 반복을 적용할 수 있다. +```js +// 객체 선언 +let object = { + name: '바나나', + price: 1200 +}; + +// 출력 +for(let key in object) { + console.log(`${key}: ${object[key]}`); +} +``` +실행결과 +``` +name: 바나나 +price: 1200 +``` + +--- +# 3. 속성과 메소드 +## 요소(Element) +>배열 내부에 있는 값 하나하나 + +## 속성(Property) +>객체 내부에 있는 값 하나하나 + + +--- +# 04. 클래스 +자바스크립트를 사용하면 데이터를 문자로 쉽게 표현할 수 있기 때문에 많은 프로그래밍 언어에서 데이터 통신을 할 때 활용한다. +이렇게 자바스크립트의 객체 형태로 데이터를 표현하는 것을 `JSON` (JavaScript Object Notation)이라고 한다. + +## 객체지향프로그래밍 +`한 객체의 속성과 기능은 한 객체를 기준으로 처리할 수 있게한다` 는 규칙성을 지키며 코드를 작성해야 한다. + +## 클래스 선언과 인스턴스 +### 클래스 선언 +```js +class Product{ + +} +``` +### 클래스 객체 생성 +```js +new 클래스_이름() +``` +### 인스턴스(Instance) +>클래스를 기반으로 만들어지는 객체 + +## 생성자(Constructor) +생성자는 클래스 내부에 constructor라는 이름의 함수를 만들어서 활용한다. +클래스 내부에 함수(메소드)를 만들 때는 앞에 function 키워드를 따로 붙이지 않는다. +```js +class Product { + constructor (name, pice) { + + } +} + +let product = new Product("바나나", 1200); +``` + +## 속성 +클래스의 메소드 내부에서 `this` 키워드는 클래스를 기반으로 만들어지는 객체를 의미한다. + +--- +# 5. 조금 더 나아가기 +## Boolean() 함수 +`false` 로 변환되는 것: 0, NAN, ""(빈문자열), null, undefined + From 3d23f67fdb39e80d128a68767c3f7a9b91352a4f Mon Sep 17 00:00:00 2001 From: Dingadung <1229jimin@naver.com> Date: Tue, 11 Oct 2022 22:11:00 +0900 Subject: [PATCH 5/6] Add-js-study-ch7-jimin --- js-study-ch7-jimin.md | 148 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 js-study-ch7-jimin.md diff --git a/js-study-ch7-jimin.md b/js-study-ch7-jimin.md new file mode 100644 index 0000000..091e31e --- /dev/null +++ b/js-study-ch7-jimin.md @@ -0,0 +1,148 @@ +js-study-ch7-jimin +# 기본 자료형과 객체 자료형의 차이 +## 자바스크립트의 자료형 +자바스크립트에서는 여섯 가지 자료형을 제공한다. +→ 숫자, 문자열, 불, 함수, 객체, undefined + +## 기본자료형 +- 숫자 +- 문자열 +- 불 + +## 객체와 기본 자료형의 차이점 +→ 기본 자료형은 객체가 아니므로 속성과 메서드를 추가할 수 없다. + +### 프로토타입 +그러나, 기본 자료형 또한 속성 또는 메서드를 추가할 수 있다. +→ 프로토타입이라는 특별한 객체를 사용하면 된다. +>프로토타입은 모든 객체가 가져야 하는 속성과 메서드를 정의할 수 있는 특별한 공간이다. + +```js +// 변수를 생성한다. +let primitiveNumber = 273; + +// 메서드를 추가한다. +Number.prototype.method = function () { + return 'Primitive Method'; +}; + +// 메서드를 실행한다. +console.log(primitiveNumber.method()); + +// >> 실행결과 +Primitive Method +``` + +--- +# Number 객체 +## 숫자 생성 +```js +let numberFromLiteral = 273; +let numberFromConstructor = new Number(273); +``` +## 메소드 +Number 객체가 가진 메소드의 종류는 다음과 같다. + +|메소드|설명| +|-----------|-----------------------------------| +|toExponential()|숫자를 지수 표시로 나타낸 문자열을 리턴한다.| +|toFixed()|숫자를 고정소수점 표시로 나타낸 문자열을 리턴한다.| +|toPrecision()|숫자를 길이에 따라 지수 표시 또는 고정소수점 표시로 나타낸 문자열을 리턴한다.| + +--- +# String 객체 +String 객체는 자바스크립트에서 가장 많이 사용하는 내장 객체이다. +다음 두 가지 방법으로 생성한다. +## String 객체 생성 +```js +let stringFromLiteral = '안녕하세요'; +let stringFromConstructor = new String('안녕하세요'); +``` +## 속성과 메소드 +|속성|설명| +|-----|------------------| +|length|문자열의 길이를 나타낸다.| + +## 비파괴적 메소드와 파괴적 메소드 +### 비파괴적 메소드 +>자신을 호출하는 객체의 내용을 변화시키는 메소드 + +### 파괴적 메소드 +>객체의 내용을 변화시키지 않고 리턴하는 메소드 + +## 메소드 체이닝(Method Chaining) +>메소드를 줄줄이 연결해서 사용한다. + +## 메소드 활용 +### 문자열 포함: indexOf() +문자열에 특정 문자열이 있는지 확인할 때는 `indexOf()` 메소드를 사용한다. + +매개변수로 받은 문자열이 포함된 부분의 **위치**를 리턴한다. +매개변수로 받은 문자열이 포함되어 있지 않을 때 → -1 리턴 +⇒ 리턴된 값이 0보다 큰지 확인하면 문자열 내부에 특정 문자열이 있는지 확인할 수 있다. + +### 문자열 분해: split() +`split()` 메소드를 사용하면 특정한 기호를 기반으로 문자열을 분해할 수 있다. + +--- +# Date 객체 +Data 객체 생성 방법 + +|클래스|설명| +|---------|-----------------| +|new Date()|현재 시간으로 Date 객체를 생성한다.| +|new Date(유닉스_타임)|유닉스 타임으로 Date객체를 생성한다.| +|new Date(시간_문자열)|문자열로 Data객체를 생성한다.| +|new Date(연, 월, -1, 일, 시간, 분, 초, 밀리초)|시간 요소를 기반으로 Date 객체를 생성한다.| + +## 메소드 활용 +Date 객체는 getXX() 형태의 메소드만 가진다. +이 때, XX에 들어갈 수 있는 문자는 `FullYear`, `Month` , `Day` , `Hours` , `Minutes` , `Seconds` , ... 이다. + +--- +# Array 객체 +## Array 객체의 기본 메서드 +Array 객체의 기본 메소드는 다음과 같다. +다음의 메소드는 모든 플랫폼(Node.js, 웹 브라우저 등)에서 사용할 수 있다. + +|메소드|설명| +|---------------|------------------| +|concat()|매개 변수로 입력한 배열의 요소를 모두 합쳐 배열을 만들어 리턴한다.| +|join()|배열 안의 모든 요소를 문자열로 만들어 리턴한다.| +|pop()*|배열의 마지막 요소를 제거하고 리턴한다.| +|push()*|배열의 마지막 부분에 새로운 요소를 추가한다.| +|reverse()*|배열의 요소의 순서를 뒤집는다.| +|slice()|배열 요소의 지정한 부분을 리턴한다.| +|sort()*|배열의 요소를 정렬한다.| +|splice()*|배열 요소의 지정한 부분을 삭제하고 삭제한 요소를 리턴한다.| +\* 표시된 메소드는 자기 자신을 변화시킨다. + +## 배열 정렬 +sort() 메소드는 단순한 배열일 때는 그냥 사용하지만, +객체 내부에 있는 특정한 값으로 정렬하고 싶을 때는 매개 변수에 함수를 넣고, 대소를 비교한다. +- `-1` : 앞의 것이 더 작다. +- `0` : 같다. +- `1` : 앞의 것이 더 크다. + +## 콜백함수와 함께 사용하는 메서드 +|메소드|설명| +|--------------|--------------------------| +|forEach()|배열의 요소를 하나씩 뽑아 반복을 돌린다.| +|map()|콜백 함수에서 리턴하는 것을 기반으로 새로운 배열을 만든다.| +|filter()|콜백 함수에서 true를 리턴하는 것으로 새로운 배열을 만들어 리턴한다.| + +--- +# 조금 더 나아가기 +## JSON 객체 +>JavaScript Object Notation의 약어로, +자바스크립트 객체를 사용한 데이터 표현 방법이다. + +JSON 객체 사용의 제약 +- 문자열은 큰따옴표로 만들어야한다. +- 모든 키는 큰따옴표로 감싸야한다. +- 숫자, 문자열, 불 자료형만 사용할 수 있다. +## JSON 객체의 메소드 +|메소드|설명| +|-------------|------------------------| +|JSON.stringify(객체, 변환_함수, 공백_개수)|자바스크립트 객체를 **문자**로 만든다.| +|JSON.parse(문자열)|문자열을 자바스크립트 **객체**로 파싱한다.| \ No newline at end of file From 53b4eb6411304952ffbfa9ed69284d9544478ff7 Mon Sep 17 00:00:00 2001 From: Dingadung <1229jimin@naver.com> Date: Mon, 17 Oct 2022 19:57:10 +0900 Subject: [PATCH 6/6] Add: js study-note ch8, ch9 --- js-study-ch8-jimin.md | 68 +++++++++++++++++++++++ js-study-ch9-jimin.md | 126 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 194 insertions(+) create mode 100644 js-study-ch8-jimin.md create mode 100644 js-study-ch9-jimin.md diff --git a/js-study-ch8-jimin.md b/js-study-ch8-jimin.md new file mode 100644 index 0000000..cb593b5 --- /dev/null +++ b/js-study-ch8-jimin.md @@ -0,0 +1,68 @@ +js-study-ch8-jimin +# 1. 예외와 기본 예외 처리 +예외는 두 가지 방법으로 처리한다. +- 기본 예외 처리 +- 고급 예외 처리 + +## 예외와 오류 +### 예외(Exception) +프로그램을 실행하면서 발생하는 논리적 오류로, +예외 처리 방법으로 처리할 수 있다. + +### 오류(Error) +큰 의미로는 오류와 예외를 모두 포함한다. +작은 의미로는 프로그램을 실행하기도 전에 발생하는 문법적 오류이다. +코드를 하나하나 실행하기도 전에 발생하므로 예외 처리 방법으로 처리할 수 없다. + +## TypeError 기본 예외 처리 +### 1. 예외 상황 확인하기 +자바스크립트에는 undefined 자료형이 있는데, +이러한 undefined 자료형을 일반적인 객체 또는 함수처럼 다루면 TypeError라는 예외가 발생한다. + +### 2. 기본 예외 처리하기 +사전에 해당 데이터가 함수인지 조건문으로 확인하기만 해도 예외를 예방할 수 있다. + +--- +# 2. 고급 예외 처리 +>고급예외처리는 try 키워드, catch 키워드, finally 키워드로 예외를 처리하는 방법이다. + +이를 try catch finally 구문이라고 한다. + +try catch finally 구문의 기본형태 +```js +try { + // 예외가 발생하면 +} catch (exception) { + // 여기서 처리한다. +} finally { + // 여기는 무조건 실행한다. +} +``` + +--- +# 3. 예외 객체 +>예외가 발생했을 때 어떤 예외가 발생했는지 정보를 함꼐 전달해주는 기능을 수행하는 객체 + +예외 객체의 속성 +- name +- message + +--- +# 4. 예외 강제 발생 +예외를 강제로 발생시킬 때는 `throw` 키워드를 사용한다. +`throw` 키워드 뒤에는 문자열 또는 `Error` 객체를 입력한다. +```js +try { + // 예외 객체 만들기 + const error = new Error('메시지'); + error.name = '내 마음대로 오류'; + error.message = '오류의 메시지'; + + // 예외를 발생시킨다. + throw error; +} catch (exception) { + // 예외 객체를 출력한다. + console.log(`${exception.name} 예외가 발생했습니다.`); + console.log(exception.message); +} +``` \ No newline at end of file diff --git a/js-study-ch9-jimin.md b/js-study-ch9-jimin.md new file mode 100644 index 0000000..4fe574c --- /dev/null +++ b/js-study-ch9-jimin.md @@ -0,0 +1,126 @@ +js-study-ch9-jimin +# process 객체의 속성과 이벤트 +>process 객체는 프로세스 정보를 제공하며, 제어할 수 있게 하는 객체이다. + +## process 객체의 속성 + +|속성|설명| +|------------|-------------------| +|env|컴퓨터 환경 정보를 나타낸다.| +|version|Node.js 버전을 나타낸다.| +|versions|Node.js와 종속된 프로그램 버전을 나타낸다.| +|arch|프로세서의 아키텍처를 나타낸다.| +|platform|플랫폼을 나타낸다.| + +## process 객체의 메소드 + +|메소드|설명| +|----------------------|-----------------------------| +|exit([exitCode = 0])|프로그램을 종료한다.| +|memoryUsage()|메모리 사용 정보 객체를 리턴한다.| +|uptime()|현재 프로그램이 실행된 시간을 리턴한다.| + +--- +# process 객체와 이벤트 개요 +## Node.js의 이벤트 연결 메소드 +|메소드|설명| +|--------------------|--------------------| +|on(이벤트\_이름, 이벤트\_핸들러)|이벤트를 연결한다.| + +## process 객체의 이벤트 +이벤트 핸들러(이벤트 리스너)는 이벤트가 발생했을 때 호출할 함수를 의미한다. + +|이벤트|설명| +|-----------|------------------------| +|exit|프로세스가 종료될 때 발생한다.| +|uncaughtException|예외가 일어날 때 발생한다.| + +--- +# os 모듈 +## os 모듈 추출 +```js +const os = require('os'); +``` + +--- +# url 모듈 +## url 모듈 추출 +```js +const url = require('url'); +``` + +## url 모듈의 메소드 +|메소드|설명| +|-------------|----------------------| +|parse(urlStr [parseQueryString=false, slashesDenoteHost=false]|URL 문자열을 URL 객체로 변환해 리턴한다.| +|format(urlObj)|URL 객체를 URL 문자열로 변환해 리턴한다.| +|resolve(from, to)|매개 변수를 조합하여 완전한 URL 문자열을 생성해 리턴한다.| + +--- +# File System 모듈 +## fs 모듈 추출 +```js +const fs = require('fs'); +``` +## 파일 읽기 +|메소드|설명| +|-------------------|------------------------| +|fs.readFileSync(파일\_이름)|동기적으로 파일을 읽어 들인다.| +|fs.readFile(파일\_이름, 콜백\_함수)|비동기적으로 파일을 읽어 들인다.| + +`동기적` : 순차적 +`비동기적` : 비순차적 (스레드 사용) + +## 파일 쓰기 +|메소드|설명| +|-------------------|------------------------| +|fs.writeFileSync(파일\_이름, 문자열)|동기적으로 파일을 읽어 들인다.| +|fs.writeFile(파일\_이름, 문자열, 콜백\_함수)|비동기적으로 파일을 읽어 들인다.| + +## 파일 처리와 예외 +`동기 코드` 예외 처리 → `try catch` 구문 활용 + +`비동기 코드` 예외 처리 → 콜백 함수로 전달된 첫 번째 매개 변수 `error` 활용 + +_그러나 Node.js에서는 동기 처리를 사용할 이유가 없다. 따라서 비동기 처리와 관련된 내용만 기억하면 된다._ + +--- +# 노드 패키지 매니저 - npm +## 내부 모듈 +>어떤 프로그래밍 플랫폼이 기본적으로 제공하는 모듈 + +## 외부 모듈 +>개인 개발자가 내부 모듈을 조합해서 사용하기 쉬운 형태로 만들거나 새로운 기능을 구현해서 제공하는 것 + +--- +# request 모듈 +request 모듈은 웹 요청을 쉽게 만들어주는 모듈이다. +## request 모듈 추출 +```js +const request = require('request'); +``` + +--- +# cheerio 모듈 +`request` 모듈로 가져온 웹 페이지 = 단순한 HTML 문자열 + +`파싱(Parshing)` : +데이터(data) → 원하는 정보 추출 → 정보(information) + +cheerio 모듈을 사용하면 가져온 웹 페이지의 특정 위치에서 손쉽게 데이터를 추출할 수 있다. + +## cheerio 모듈 추출 +```js +const cheerio = require('cheerio'); +``` + +cheerio 모듈은 jQuery를 어느 정도 알아야 제대로 활용할 수 있다. + +--- +# async 모듈 +Node.js는 대부분의 메소드가 비동기적으로 구성되므로 실행 순서를 정의하기가 어렵고, 들여쓰기도 많은 문제점이 있다. +→ 이러한 문제를 어느 정도 해결해 줄 수 있는 모듈이 `async` 모듈이다. +## async 모듈 추출 +```js +const async = require('async'); +```