진취적 삶
02 자바스크립트란? 본문
2.1 자바스크립트의 탄생
웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그램의 도입으로 인해
자바스크립트의 탄생
2.2 자바스크립의 표준화
마이크로소프트에서 자바스크립트 파생버전인 JScript 를 만들었지만 jScript는 자사의 브라우저에서만 동작하는 기능을 추가하였기에 브라우저에 따라 정상적으로 동작하지 않는 크로스 브라우 이슈
가 발생하기 시작 이에 자바스크립트의 파편화를 방지하고 모든 브라우저애서 정상적으로 동작하는
표준화된 자바스크립트의 필요성이 대두 .
ECMA 인터내셔널에 자바스크립트의 표준화를 요청
상표권 문제로 ECMAScript로 명명 ⇒ 우리가 사용하고있는 ES6
- 크로스 브라우 이슈 : 자사의 브라우저에서 사용가능하 기능을 추가하여 브라우저에 따라 동작이 되지 않는것
2.3 자바스크립트 성장의 역사
초창기의 자바스크립트는 웹페이지의 보조적인 기능을 수행하기 위해 한정적인 용도로 사용
브라우저는 서버로부터 전달받은 HTML 과 CSS 를 단순히 랜더링하는 수준
- 랜더링 : HTML , CSS 자바스크립트로 작성된 문서를 해석해서 브라우저에 시작적으로 출력하는것 , 서버에서 데이터를 HTML 로 변환해서 브라우저에게 전달하는 과정을 말하기도함
2.3.1 Ajax
자바스크립트를 이용해 서버와 브라우저가 비동기 방식으로 데이터를 교환할수 있는 통신기능인
Ajax 가 XMLHttpRequest 이름으로 등장
이전에는 완전한 HTML 코드를 서버로부터 전송받아 웹페이지 전체를 랜더링 하는 방식
이 방식은 변경 불필요 부분까지 HTML 코드를 서버로부터 다시 전송 받기에 불필요한
데이터 통신 발생
Ajax은 서버로부터 필요한 데이터만 전송받아 변경해야하는 부분만 한정으로 랜더링하는 방식
2.3.2 jQuery
jQuery 의 등장으로 DOM(document object model) 더욱 쉽게 제어 , 크로스 브라우징 이슈도 제어
2.3.3 V8 자바스크립트 엔진
v8의 등장으로 데스크톱 애플리케이션과 유사한 UX ( 사용자 경험)을 제공할수 있는 웹 애플리케이션 프로그래밍언어로 정착
2.3.4 node.js
V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 환경이다.
브라우저의 JS엔진에서만 동작하던것을 브라우저 이외의 환경에서도 동작하도록
브라우저 엔진을 브라우저에서 독립시킨 JS 실행환경이다 .
서버 사이드 애플리케이션 개발에 주로 사용
비동기 I/O 를 지원하며 단일 스레드 이벤트 루프 기반 동작 요청 처리 성능이 좋다 .
- 비동기 I/O : 데이터 전송을 마치기 전에 기타 프로세스가 계속 하도록 허가하는 입출력 처리의 한형태
- 보통은 액세스를 시작하고 끝날때까지 기다리는것 그러나 이러한 동기 I/O는 통신 중에 프로그램의 진행을 가로막아, 시스템 자원을 유휴 상태로 만들어버린다.
- 유휴 : 어떠한 프로그램에 의해 사용되지 않는 상태
- 단일 스레드 : 하나의 프로세스에서 하나의 스레드 실행
- 스레드 : CPU 이용의 기본 단위 프로세스 내에서 프로그램 명령을 실행하는 기본 단위이자 흐름 ,개체라고 할수 있다.
2.3.5 SPA 프레임워크
이전에 개발 방식으로는 복잡해진 개발과정을 수행하기 어렵고 확장하기 쉬운 애플리케이션 아키텍처의 구축이 어렵기에 필연적으로 프레임 워크가 등장
CBD 방법론을 기반으로하는 SPA 대중화
- CBD : 기존의 시스템이나 소프트웨어를 구성하는 컴포넌트를 조립해서 하나의 새로운 응용 프로그램을 만드는 소프트웨어 개발 방법론
2.4 자바스크립트와 ECMAScript
ECMAScript는 프로그래밍 언어의 값 ,타입, 객체와 프로퍼티 등 핵심 문법을 규정한다. 각 브라우저 (크롬,사파리) 는 ECMAScript 사양을 준수해서 브라우저에 내장되는 자바스크립트 엔진을 구현한다.
JS = ECMAScript + 클라이언트 사이드 Web API
- WEB API : 웹서버 또는 웹브라우저를 위한 API이다 .
- HTTP 서비스이고 다양한 클라이언트 접근이 가능하도록 설계
- API : Application programming interface 의 약자로 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할수 있게 만드는 인터페이스
2.5 자바스크립트의 특징
웹 브라우저에서 동작하는 프로그래밍 언어이다 .
JS 는 인터프린터 언어 인터프리터는 소스코드를 즉시 싱행하고 컴파일러는 빠르게 동작하는 머신 코드를 생성하고 최적화 한다.
- 인터프린터 언어 : 개발자가 별도의 컴파일 작업을 수행하지 않는것
컴파일러 언어 인터프린터 언어
코드가 실행되기 전 단계인 컴파일 타임에 소스코드 전체를 한번에 머신코드로 변환후 실행 | 코드가 실행되는 간계인 런타임에 |
문 단위로 한줄씩 중간 코드인 바이트코드로 변환후 실행 | |
실행 파일 생성 | 실행 파일 생성 안함 |
컴파일 단계와 실행 단계 분리 | 인터프리터 단계와 실행 단계 분리되어 있지 않음 |
실행에 앞서 컴파일은 단 한번 수행 | 코드가 실행될 때마다 인터프린터 과정 반복 수행 |
JS = 멀티 패러다임 프로그래밍 언어 = 명령형 + 함수형 +프로타입기반+ 객체지향 프로그래밍
2.6 ES6 브라우저 지원현황
인터넷 익스플로러를 제외한 대부분의 모던 브라우저는 ES6지원하지만
100% 지원은 아님
따라서 브라우저에서 지원하지 않는 최신 기능을 사용할려면
Babel 과 같은 트랜스 파일러를 이용해서 ES6 이상의 사양으로 구현한
소스코드를 ES5 이하의 사양으로 다운그레이드 할 필요가 있다.
'개발 도서 > 자바스크립트 deepdive' 카테고리의 다른 글
09 타입 변환과 단축 평가 (0) | 2023.07.11 |
---|---|
10 객체 리터럴 (0) | 2023.07.11 |
03 자바스크립트 개발 환경과 실행 방법 (0) | 2023.07.10 |
04 변수 (0) | 2023.07.10 |
05 표현식과 문 (0) | 2023.07.10 |