728x90
오늘부터 드디어?? 시작된 Node.js의 시작되었고 이번주에 입문부터 시작된다
이번주 시간표이고 잘 따라갈수있을지 무섭다..
과제까지 있네.. 후
JS가 존재하기 이전의 웹 생태계
HTML과 CSS로 아주 간단한 스타일만 적용하는게 일반적이였고
CSS는 현재의 워드프로세서보다 더 적은 기능으로 텍스트를 꾸미는게 전부였다.
HTML이라는 단어 그대로 Hyper Text를 이용해 각 문서(페이지)간 이동이 원활하게 꾸며둘 수 있는 순수한 Markup Language로서 이용되었다.
JavaScript 탄생
자바스크립트는 이런 정적인(Static) 문서를 조금 더 동적(Dynamic)으로 표현할 수 있도록 만들어졌는데
NetScape 라는 웹 브라우저를 통해 상호작용을 강조하기 위해 간단한 기능을 넣어 만든것이 자바스크립트의 시초였습니다.
Node.js 란
Node.js®는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. Node.js는 이벤트 기반, 논 블로킹 I/O 모델을 사용해 가볍고 효율적입니다. Node.js 패키지 생태계인 npm은 세계에서 가장 큰 오픈 소스 라이브러리 생태계이기도 합니다.
01. 동기(Sync) & 비동기(Async)
- 동기(Sync)와 비동기(Async)에 대한 개념
- 일반적으로 "동기로 실행된다" 라고 함은, 먼저 실행된 코드의 결과가 나올때까지 대기하는것을 말합니다.
- 놀이기구를 생각하면 쉽습니다. 정원이 30명인 놀이기구가 있다고 가정합니다. 놀이기구를 한번 태우는데 약 5분이 걸린다고 가정하면 놀이기구를 막 태우기 시작한 시점에서는 대기자 모두 5분이 지나 이미 놀이기구에 탑승했던 사람들이 다 내리기 전까지는 탑승을 할 수 없습니다. 이것은 놀이기구 탑승/하차가 동기적으로 관리된다고 볼 수 있습니다.
- 일반적으로 "비동기로 실행된다" 라고 함은, 실행된 순서와 관계 없이 결과가 나오는것을 말합니다.
- 맛집을 생각하면 쉽습니다. 정원이 최대 30명인 맛집이 있다고 가정합니다. 입장 순서는 선착순이고 퇴장 순서는 다 먹은 사람이 바로 나올 수 있습니다. 다 먹은 사람이 나오면 나온 사람 수 만큼 다시 입장 할 수 있습니다. 사람마다 먹는 시간은 모두 다릅니다. 이것은 입/퇴장이 비동기적으로 처리된다고 볼 수 있습니다.
- 일반적으로 "동기로 실행된다" 라고 함은, 먼저 실행된 코드의 결과가 나올때까지 대기하는것을 말합니다.
- Blocking Model & Non-Blocking Model
- Blocking Model이란, 코드의 실행이 끝나기 전까지 실행 제어권을 다른곳에 넘기지 않아 다른 작업을 하지 못하고 대기하는 것을 말합니다.
- Non-Blocking Model이란, 코드의 실행이 끝나지 않아도 실행 제어권을 다른곳에 넘겨 다음 코드가 실행될 수 있는것을 말합니다.
- 자바스크립트는 Async + Non-Blocking Model을 채용하여 현재 실행중인 코드의 실행이 끝나지 않아도 다음 코드를 호출합니다.
- 결론적으로 자바스크립트는 각 명령들이 순서대로 실행될 수 있게 구현되어 있지만, Non-Blocking Model에 의해 동기적 명령이 아닌 모든 함수는 비동기적으로 실행됩니다.
- 프로미스(Promise)
- 자바스크립트에서 비동기 처리를 동기로 처리할 수 있게 돕는 Built-in(미리 내부적으로 정의된)객체 유형입니다. 이 객체를 이용하면 여러분은 비동기 처리를 아주 손쉽게 할 수 있습니다.
02. 객체 리터럴
- 객체(Object) 란?
- 원시 타입은 단 하나의 값만을 나타내고, 원시 타입의 값은 변경이 불가능 한 값입니다.
- 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료 구조이고, 객체 타입의 값을 변경 가능한 값입니다.
- Javascript의 데이터 타입은 크게 원시 타입과 객체 타입으로 분류됩니다.
- 객체 리터럴 이란?여기서 객체 리터럴은 객체를 생성하기 위한 표기법입니다.
- 객체 리터럴은 객체를 생성하기 위해 Class를 먼저 선언하고 new 연산자와 함께 생성자를 호출할 필요가 없이 일반적인 숫자, 문자열을 만드는것과 유사하게 객체를 생성할 수 있습니다.
- 리터럴(literal)은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법입니다.
03. Error handling
- 에러 핸들링(Error handling) 이란?에러는 예상할 수 있는 에러와 예상치 못한 에러로 구분할 수 있는데, 일반적인 어플리케이션을 설계할 때에는 예상치 못한 에러 상황이 더욱 많이 일어날 것으로 가정해야 합니다.
- 프로그래머가 작성한 코드에서 예상치 못한 에러가 일어날 가능성은 언제나 존재하고, 이러한 에러 상황을 대비해 언제든지 처리할 수 있어야 합니다.
- 에러 핸들링은 에러를 관리하는 방법이고, 예상치 못한 상황에 대처하는 방식입니다.
- try / catch예외 처리는 일반적으로 try … catch 문을 사용합니다.이렇게 예상치 못한 에러에 대처하기 위해선 try … catch문으로 코드 전체를 감쌀 수 있습니다.
- 에러가 발생하더라도 프로그램이 멈추지 않고 에러를 기록할 수 있습니다.
- users에 들어있는 이름들을 String.toUpperCase()를 이용하여 대문자로 변경하려할 때 문자열(String)이 아닌 데이터가 들어온다면 에러가 발생합니다.
- 서버에서 에러가 발생하지 않게 하기 위해서 저희는 예외 처리를 진행합니다.
04. 클래스(Class)
- 클래스(Class) 란?
- 현실과 비슷한 개념(객체)을 나타내기 위한 도구를 클래스(Class)라고 부릅니다.
- 클래스는 미리 정의해놓으면 필요할 때마다 해당 클래스로 동일한 틀을 가진 객체를 만들 수 있습니다.
- 여기서 동일한 클래스를 이용해 생성한 객체를 인스턴스(Instance)라고 부릅니다
'코딩캠프 > 내일배움캠프' 카테고리의 다른 글
[ TIL ] 12.14(수) 23일차 (0) | 2022.12.14 |
---|---|
[ TIL ] 12.13(화) 22일차 (0) | 2022.12.13 |
[ WIL ] 12.05~09 4주차 (2) | 2022.12.12 |
[ TIL ] 12.09(금) 20일차 (0) | 2022.12.09 |
[ TIL ] 12.08(목) 19일차 (0) | 2022.12.08 |