본문 바로가기

JavaScript

Node.js 실무 기초 1주차

728x90

Node.js 실무 기초 1주차

 

편집기 : VS Code, cmd


Node.js란?

자바스크립트가 실행될 수 있게 도와주는 런타임 플랫폼

V8 엔진으로 빌드된 자바스크립트 런타임 플랫폼(마법 상자)

 

한국어 : 자바스크립트

한국말 : node.js(소리라는 수단으로 나의 의견 & 생각을 전달할 수 있다. 실행시키는 수단)

 

node.js 설치

📌 npm이란?

자바스크립트를 사용할 수 있는 패키지(모듈) 관리자

ex) pip와 동일한 역할을 함.

 

npm install express

 

https://www.npmjs.com/

 

npm

Bring the best of open source to you, your team, and your company Relied upon by more than 11 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java

www.npmjs.com

 

📌 REPL이란?

Read, Evaluate, Print, Loop

입력받은 코드를 읽어 메모리에 저장하고 평가된 값을 출력한다.

특정 신호를 입력 받기 전까지 위의 과정을 반복한다.

즉, 코드의 결과값을 즉시 확인 할 수 있는 간단한 문법 테스트

 

REPL


JS 기본문법1

 

📌 변수

const 는 값 변경 불가능

let은 값 변경 가능

선언하지 않은 변수 입력시, Reference Error 발생

 

📌 구문설탕

age = age + 1

age += 1

 

📌 비교연산자(True, False)

=== 같다.(type과 value가 모두 같다)

!== 다르다.

> 크다

< 작다

>= 이상

<= 이하

 

📌 자료형

- 객체

> const person = {}
undefined
> person
{}
> person.name = '승현'
'승현'
> person
{ name: '승현' }

> person.name = '학생이름'
'학생이름'
> person
{ name: '학생이름' }

> paerson = {name : 'test'}
{ name: 'test' }
> person
{ name: '학생이름' }


> person['age'] = 20
20
> person
{ name: '학생이름', age: 20 }

상자에 넣은 name값 변경은 불가능. 왜? const로 선언했기 때문에.

 

- 함수

> function getMyName() { return '승현'}
undefined
>
>
> getMyName
[Function: getMyName]
> getMyName()
'승현'

 

- 조건문

> if('test' === 'test') {console.log(1+1)}
2

quiz

> let foo
undefined
> foo
undefined


> bar
Uncaught ReferenceError: bar is not defined

 

검색꿀팁

javascript array filter

JS 기본문법2

 

📌 논리 연산자

  • && : AND연산자
  • || : OR연산자
  • ! : NOT연산자

 

📌 기본값을 넣을 때 || 사용

> function getMyName(name) {return name || '이름 왜 안입력해'}
undefined


> getMyName('test')
'test'
> getMyName('강승현')
'강승현'
> getMyName()
'이름 왜 안입력해'

 

📌 반복문

> for(let i=1; i<=9; i++) console.log(i)
1
2
3
4
5
6
7
8
9

 

📌 배열 & 반복문

> const persons = ['강승현', '홍길동', '김아무개'];
undefined

> persons
[ '강승현', '홍길동', '김아무개' ]

> for (let i=0; i < persons.length; i++) console.log(persons[i])
강승현
홍길동
김아무개

> for (const person of persons) { console.log(person); }
강승현
홍길동
김아무개

> for (const person in persons) { console.log(person); }
0
1
2

 

 

📌 화살표 함수

> const sum = (a, b) => a+b
undefined

> sum(1,10)
11

 

📌 익명함수

> const fn = function() { return '임명함수의 결과 값이다' }
undefined

> fn()
'임명함수의 결과 값이다'

quiz

> function noReturn(arg1, arg2){
... const result = arg1 + arg2;
... }
undefined

> noReturn
[Function: noReturn]

> noReturn(1,2)
undefined

 return이 없어 return되는게 없음.

 


JS 기본문법3

 

📌 에디터 사용법

.editor 사용법

  • ctrl + d : 실행
  • crrl + c : 취소

 

📌 hoisting

> .editor
// Entering editor mode (Ctrl+D to finish, Ctrl+C to cancel)

console.log(name);

var name = ' 뭘까요?';

undefined
undefined

 

📌 var

변수의 값이 언제 바뀔지도 모르며 스파게티 코드를 만드는 주범이 될 수 있음. 

따라서  사용을 지양해야 함.

 

📌 동기(Sync)

먼저 실행된 코드의 결과가 나올때까지 대기하는 것

놀이기구 탑승/하차 생각하면 쉬움. 놀이기구에 탑승했던 사람들이 다 내리기 전까지는 탑승을 할 수 없다.

 

📌 비동기(Async)

실행된 순서와 관계없이 결과가 나오는 것.

식당 입장/퇴장을 생각하면 쉬움. 사람마다 먹는 시간이 다르기 때문에 먼저 다 먹은 사람은 바로 나올 수 있다.

 

자바스트립트는 Async + Non-blocking Model

 

📌 동기, promise

> .editor
// Entering editor mode (Ctrl+D to finish, Ctrl+C to cancel)

const result = new Promise((resolve, reject) => {
  setTimeout(() => resolve(), 1000);
  });

  result.then(() => {
  console.log('1초가 지났다.'); });
  
  
Promise {
  <pending>,
  [Symbol(async_id_symbol)]: 2155,
  [Symbol(trigger_async_id_symbol)]: 2153
}
> 1초가 지났다.

1초 뒤에 resolve 수행된다.

 

 

📌 비동기

> async function getMyName(text) { return text }
undefined
>
> getMyName('강승현');
Promise {
  '강승현',
  [Symbol(async_id_symbol)]: 2435,
  [Symbol(trigger_async_id_symbol)]: 5
}

> getMyName('강승현').then(console.log)
Promise {
  <pending>,
  [Symbol(async_id_symbol)]: 2521,
  [Symbol(trigger_async_id_symbol)]: 2520
}
> 강승현

> getMyName('TEST').then(console.log);
Promise {
  <pending>,
  [Symbol(async_id_symbol)]: 2793,
  [Symbol(trigger_async_id_symbol)]: 2792
}
> TEST

quiz

 

만나이 구하기

bt = new Date('1990-01-01 16:27:00')
Mon Jan 01 1990 16:27:00 GMT+0900 (한국 표준시)

bt.getDate();
1

bt.getFullYear();
1990

new Date().getFullYear() - bt.getFullYear()
32