- 1장에서는 너무나 기초적인 컴퓨팅 사고, 기계어 등등을 알아보면서 컴퓨터가 어떻게 우리가 작성한 코드를 해석하고 실행하는지 기본적인 작동원리에 대하여 배울수 있었다.
- 2장부터는 본격적인 자바스크립트의 정의와 특징, 런타임 환경에 대하여 설명이 시작되니 상세하게 이해하는 흐름대로 적어보며, 알고있는 내용들도 많지만 꼼꼼히 찾아보고 이해하며 이번년도 목표였던 자바스크립트의 바이블인 딥다이브 1회독! 을 재빠르게 마무리 지어보자.
- 자바스크립트
1995년 넷스케이프가 브라우저에서 동작하는 경량 프로그래밍 언어를 만든것이 바로 자바스크립트!
"모카" - "라이브스크립트" - 를통해 "자바스크립트"라는 이름으로 명명되었다.
마이스로소프트와 넷스케이프가 시장 점유율을 높이기 위해 자사 브러우저에서만 동작하는 기능을 넣으면서 호환성 문제가 있었고,
자바스크립트의 파편화를 방지하고 모든 브라우저에서 정상적으로 동작하는 표준화된 자바스크립트의 필요성이 대두되기 시작했다.
웹 브라우저에서 작동하는 유일한 프로그래밍 언어이며, 코드가 실행되는 런타임에
문 단위로 한 줄씩 바이트코드로 변환한 후 실행하는 인터프리터 언어이다.
명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다.
- ECMAScript
비영리 표준화 기구인 ECMA인터네셔널이 명명한 자바스크립트 표준 사양이다.
현재 익히 우리가 쓰고있는 버전은 ES6버전이고 이때부터 순차적으로 버전별 특징이 공개 되었다.
자바스크립트는 표준 사양인 ECMAScript,
브라우저가 지원하는 web API(DOM,BOM,Canvas, XMLHttpRequest 등등)를 아우르는 개념이다.
-V8 자바스크립트 엔진
구글 맵스를 통해 ajax, jquery와 함께 웹 애플리케이션 프로그래밍의 언어로서 기능성이 확인된 자바스크립트의 엔진이다.
V8엔진덕에 자바스크립트는 데스크톱 애플리케이션과 유사한 사용자 경험을 제공할 수 있는 웹 애플리케이션 프로그래밍 언어로 자리잡았다.
-Node.js
V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경이다.
브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 만든 환경이다.
자바스크립트 기반으로 비동기 i/o를 지원하고 단일 스레드 이벤트 루프기반으로서 spa에 적합하다.
하지만 cpu 사용률이 높은 애플리케이션에서는 권장하지 않는다.
-자바스크립트 실행 환경
자바스크립트 엔진이 포함된 브라우저와 nodejs에서 실행할 수 있다.
브라우저는 html,css,javascript를 실행해 웹 페이지를 브라우저 화면에 렌더링하는 것이 주된 목적이지만
Node.js는 브라우저 외부에서 자바스크립트 실행 환경을 제공하는것이 주된 목적이다.
따라서 브라우저에만 web API가 존재하며 브라우저 외부환경에서는 html요소를 파싱하여 객체화한 DOM을 다룰수 없다.
노드 환경에서는 자바스크립트 파일을 생성하고 수정할수 있는 시스템이 있지만, 브라우저는 파일 생성 수정이 불가하며, web API에서 지원하는 FlieReader객체를 사용해 파일을 읽는것만 가능하다.
브라우저 환경에서는 Web API(DOM, BOM, Canvas, XMLHttprequest, fetch, requestAnimationFrame,SVG, Web Storage, Web Component, Web Worker) 같은 클라이언트 사이드 Web API를 지원한다!!!
**당연한 이야기이지만, 노드환경에서 Web API가 없는것을 이해해 보려면, web api가 포함된 파일을 터미널에서 "node 파일명" 명령어를 입력하면 된다. 예를들어 alert()는 web api가 제공하는 기능이기 때문에, 노드에서 알수 없는 api라는 오류를 뱉어낼 것이다!
브라우저 환경에서만 web api가 제공되기 때문에 ! 현재는 클라이언트 사이트 웹 api를 노드 환경에서 실행할 수 없다.
- npm
자바스크립트 패키지 매니저다. Node.js에서 사용할 수 있는 모듈들을 패키지화해서 모아둔 저장소 역할과 패키지 설치 및 관리를 위한 CLI를 제공한다. 자신이 작성한 패키지를 공개할 수도 있고 필요한 패키지를 검색해 재사용할 수도 있다.
'나의 Javascript 개발기록 > Javascript' 카테고리의 다른 글
[Deep Dive] 8장 제어문 (블록문, 조건문, switch문, while문, do...while문, break문, 레이블문, continue문 예시) (0) | 2022.12.26 |
---|---|
[Deep Dive] 5장 표현식과 문 , 리터럴 , 콘솔창의 undefined는 완료값이었던 것이다..! (0) | 2022.12.23 |
[Deep Dive] 4장 변수 , 메모리 , 식별자, 재할당, 가비지콜렉터, 매니지드언어란 ? (0) | 2022.12.22 |
프로그래밍 / 자바스크립트 / AJAX / jQuery / V8 / Node.js / ECMAScript / 인터프리터와 컴파일러 (0) | 2022.11.02 |
undefined와 null의 차이를 알고 계신가요?! (0) | 2022.10.12 |