-
01~03 Warm up모던 자바스크립트 딥 다이브 독학 2023. 9. 30. 16:19
01~03 Warm up
프로그래밍
- 컴퓨터에게 실행을 요구하는 커뮤니케이션
- 문제 해결 능력이 필요하다.
- 코드는 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업이다.
- 요구사항의 집합을 분석해서 적절한 자료구조와 함수의 집합으로 변환한 후, 그 흐름을 제어하는 것
프로그래밍 언어
약속된 구문으로 구성된 프로그래밍 언어(구문과 의미의 조합)를 사용해 프로그램을 작성한 후, 그것을 컴퓨터가 이해할 수 있는 기계어로 변환하는 일종의 번역기를 컴파일러 혹은 인터프리터라고 한다.
구문과 의미
종합하면, 문제 해결 능력을 통해 만들어낸 해결 방안을 프로그래밍 언어의 문법을 사용해 표현한다. 즉, 작성된 코드는 해결 방안의 구체적 구현물이다. 그리고 이것은 요구사항이 실현(문제가 해결)되어야 의미가 있다.
문제 ————문제 해결 능력————> 해결방안 ————문법/의미————> 코드
자바스크립트의 표준화
넷스케이프 커뮤니케이션즈와 마이크로소프트의 자사 브라우저 시장 점유율 경쟁으로 인하여 발생된 크로스 브라우징 이슈는 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 것이다.
이를 해결하기 위해 ECMA(표준화 기구) 에 요청된 자바스크립트 표준화
2015년에 ECMAScript 6(ES6)는 let/const 키워드, 화살표 함수, 클래스, 모듈 등과 같이 범용 프로그래밍 언어로서 갖춰야 할 기능들을 대거 도입
ES1(1997) ~ES6(ECMAScript 2015) ~ ES11(ECMAScript 2020)
자바스크립트 역사
- 초창기 자바스크립트는 웹페이지의 보조적인 기능을 수행하기 위해 한정적인 용도로 사용
- 대부분의 로직은 웹 서버에서 실행
- 브라우저는 서버로부터 전달받은 HTML, CSS를 단순히 렌더링하는 수준이었다.
- Ajax(Asynchronous JavaScript and XML)
- = 자바스크립트를 이용해 서버와 브라우저가 비동기(asynchronous) 방식으로 데이터를 교환할 수 있는 통신 기능
- Ajax 이전의 웹페이지는 html태그로 시작해서 html태그로 끝나는 완전한 HTML 코드를 서버로부터 전송받아 웹페이지 웹페이지 전체를 렌더링하는 방식으로 동작
- 변경할 필요가 없는 부분까지 포함된 HTML 코드를 서버로부터 다시 전송받기 때문에 불필요한 데이터 통신 발생, 변경할 필요가 없는 부분까지 처음부터 다시 렌더링해야 하기 때문에 성능 면에서도 불리, 화면이 전환되면 화면이 순간적으로 깜빡이는 현상 발생
- Ajax 이후는 웹페이지에서 변경할 필요가 없는 부분은 다시 렌더링하지 않고, 서버로부터 필요한 데이터만 전송받아 변경해야 하는 부분만 한정적으로 렌더링하는 방식
- 이로써 웹 브라우저에서도 데스크톱 애플리케이션과 유사한 빠른 성능과 부드러운 화면 전환이 가능해짐
- 구글맵스 = 웹 어플리케이션 프로그래밍 언어로서 자바스크립트의 가능성을 확인시킨 계기, 데스크톱 애플리케이션과 비교했을 때 손색이 없을 정도
- jQuery
- = 번거롭고 논란이 있던 DOM(Document Object Model)을 쉽게 제어할 수 있게 됨, 크로스 브라우징 이슈도 어느정도 해결 → 자바스크립트보다 jQuery를 더 선호하는 개발자 양산
- V8 자바스크립트 엔진
- 과거 웹 서버에서 수행되던 로직들이 대거 클라이언트(브라우저)로 이동, 이는 웹 애플리케이션 개발에서 프론트엔드 영역이 주목받는 계기로 작용
- = 빠르게 동작하는 자바스크립트 엔진의 필요성이 대두, 이러한 요구에 부합하기 위해 등장
- Node.js
- 브라우저의 자바스크립트 엔진에서만 동작하던 자바스크립트를 브라우저 이외의 환경에서도 동작할 수 있도록 자바스크립트 엔진을 브라우저에서 독립시킨 자바스크립트 실행 환경
- 서버 사이드 애플리케이션 개발에 주로 사용됨
- 모듈, 파일 시스템, HTTP 등 빌트인 API를 제공
- 프론트엔드와 백엔드 영역에서 자바스크립트를 사용할 수 있다는 동형성
- 크로스 플랫폼을 위한 가장 중요한 언어로 주목
- 웹, 모바일 하이브리드 앱, 데스크톱, 머신러닝, 로보틱스 등의 환경을 위한 프로그래밍 언어
- = 구글 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경
- SPA 프레임워크
- 이전의 개발 방식으로는 복잡해진 개발 과정을 수행하기 어려워졌고, 이러한 필요에 따라 많은 패턴과 라이브러리가 출현 → 개발에 많은 도움을 주었지만 변경에 유연하면서 확장하기 쉬운 애플리케이션 아키텍처의 구축을 어렵게 함 → 필연적으로 프레임워크 등장
자바스크립트와 ECMAScript
ECMAScript
- 자바스크립트의 표준 사양인 ECMA-262
- 프로그래밍 언어의 값, 타입, 객체, 프로퍼티, 함수, 표준 빌트인 객체 등 핵심 문법
- 각 브라우저 제조사는 ECMAScript 사양을 준수해서 자바스크립트 엔진 구현]
자바스크립트
- ECMAScript(프로그래밍 언어의 기본 뼈대), 브라우저가 별도 지원하는 클라이언트 사이드 Web API, 즉 DOM, BOM, Canvas, XMLHttpRequest, fetch, requestAnimationFrame, SVG, Web Storage, Web Component, Web Worker 등을 아우르는 개념
- 클라이언트 사이드 Web API와는 별도로 W3C에서 별도의 사양으로 관리함
- HTML, CSS와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어
- 개발자가 별도의 컴파일 작업을 수행하지 않는 인터프리터 언어(코드가 실행되는 런타임에 문 단위로 한 줄씩 중간코드인 바이트코드로 변환한 후 실행함, 실행 파일을 생성하지 않음
- 인터프리트 단계와 실행 단계가 분리되어 있지 않고, 코드가 실행될 때마다 인터프리트 과정이 반복 수행되기 때문에 코드 실행 속도가 컴파일러 언어에 비해 비교적 느리다
- 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어(클래스 기반 객체지향 언어보다 효율적이면서 강력한 프로토타입 기반의 객체지향 언어)
자바스크립트 실행 환경
- 브라우저와 Node.js
- 둘 다 자바스크립트 엔진을 내장하고 있다. 자바스크립트는 브라우저 환경이나 node.js 환경에서 실행할 수 있다.
- 브라우저와 Node.js는 용도가 다르다.
- 브라우저는 HTML, CSS, 자바스크립트를 실행해 웹페이지를 브라우저 화면에 렌더링하는 것이 주 목적
- Node.js는 브라우저 외부에서 자바스크립트 실행 환경을 제공하는 것이 주 목적
- 따라서 브라우저와 Node.js 모두 ECMAScript 실행할 수 있지만 브라우저와 Node.js에서 ECMAScript 이외에 추가로 제공하는 기능은 호환되지 않는다. 예를 들어 브라우저는 파싱된 HTML 요소를 선택하거나 조작하는 기능의 집합인 DOM API를 기본적으로 제공한다. 하지만 Node.js는 제공하지 않는다. 브라우저 외부 환경에서는 HTML 요소를 파싱해서 객체화한 DOM을 직접 다룰 필요가 없기 때문이다.
- 보안상의 이유로 브라우저에선 파일 시스템 제공 X, Node.js는 제공 O
'모던 자바스크립트 딥 다이브 독학' 카테고리의 다른 글
08 제어문 (1) 2023.10.05 07 연산자 (0) 2023.10.04 06 데이터 타입 (0) 2023.10.03 05 표현식과 문 (0) 2023.10.02 04 Variable (0) 2023.10.01