자바 스크립트는 처음에는 Live Script 라는 이름을 사용했으나 당시 자바 의 인기가 매우 높아 자바의 동생 격으로 홍보하는게 이름을 알리기 더 좋을것으로 판단하여 자바 스크립트 로 이름을 변경하였다. 이름은 자바에서 따왔지만 완전 독립적인 언어로 아무런 연관이 없다.
자바 스크립트 는 브라우저 뿐 아니라 서버에서도 실행이 가능하다.
자바 스크립트 엔진 이라 불리는 프로그램이 들어있는 모든 디바이스에서 동작한다.
브라우저 에는 자바 스크립트 가상 머신 이라는 엔진을 사용하는데 엔진의 종류가 다양하며
특유의 코드네임 을 가지고 있다.
자바스크립트 가상 머신 코드네임
1. V8 - Crome,Opera
2.Spider Monkey - Fire fox
IE 는 버전에 따라 Trident 나 Chakra 라는 엔진을 사용한다.
엔진 동작 기본 원리
파싱 : 컴퓨터 과학 및 프로그래밍에서 특정 형식으로 구성된 데이터를 분석하고 그 의미를 이해하는 과정을 의미한다. 파싱은 주로 텍스트 기반 데이터를 해석하거나, 프로그래밍 언어의 소스 코드를 이해하거나, 문서를 구조화하고 내용을 추출하는 데 사용된다. 컴파일 : 사람이 이해하는 언어를 컴퓨터가 이해할 수 있는 언어로 바꾸어 주는 과정.
프로세스 단계마다 최적화를 진행 컴파일 이후로도 데이터 분석후 최적화함으로써 스크립트 실행속도는 더욱 빨라진다.
자바 스크립트 는 실행 환경에 상당한 영향을 받는다.
브라우저 환경 : 웹페이지 조작 클라이언트와 서버의 상호작용에 관한 모든일을 할 수 있다.
Node.js 환경 : 임의의 파일을 읽거나 쓰고, 네트워크 요청을 수행하는 함수를 지원한다.
브라우저에서 자바 스크립트로 할 수 있는 일
페이지에 새로운 HTML 을 추가하거나 기존 HTML,혹은 스타일 수정하기
마우스 클릭이나 포인터의 움직임 , 키보드의 키 눌림 등 과 같은 사용자 행동에 반응하기
네트워크를 통해 원격 서버에 요청을 보내거나 파일 다운로드 , 업로드하기
쿠키를 가져오거나 설정하기 , 사용자에게 질문을 건네거나 메세지 보여주기
클라이언트 측에 데이터 저장하기 (로컬 스토리지)
브라우저에서 자바 스크립트로 할 수 없는 일
브라우저는 보안을 위해 자바 스크립트 에 제약을 걸어두었는데
이는 악성 웹페이지 가 개인정보에 접근하거나
사용자의 데이터를 손상하는 것을 막기위해서이다.
웹페이지 내 스크립트는 디스크에 저장된 임의의 파일을 읽거나 쓰고,복사하거나 실행할때 제약을 받을수 있다.운영 체제가 지원하는 기능을 브라우저가 직접 쓰지 못하게 막혀있기 때문이다.
브라우저 내 탭과 창은 대개 서로의 정보를 알수없다. 그런데 자바 스크립트를 사용해한창에 다른창을 열때는 예외가 적용된다. 하지만 이 경우에도 도메인이나 프로토콜, 포트가 다르면 페이지에 접근할수 없다.이런 제약을 동일 출처 정책 (Same origin policy)이 라고 한다.
이런 제약사항이 개인정보를 훔치는걸 막아준다.
자바 스크립트의 강점
HTML / CSS 와 완전히 통합할수 있다.
간단한 일은 간단하게 처리할수 있다.
모든 주요 브라우저에서 지원하고 , 기본언어로 사용된다.
프레임워크
프레임워크 란?
프레임워크는 소프트웨어 개발에서 특정작업을 쉽게 수행할수 있도록
미리 정의된 구조와 규칙을 제공하는 소프트웨어 환경이다.
프레이워크는 개발자가 공통으로 사용되는 기능을 재사용할수 있게하여
개발속도를 높이고 코드의 일관성을 유지하며, 유지보수를 용이하게 한다.
공통적인 기능을 미리 구현해두어 개발자가 이를 재사용 할 수 있게 한다.
개발자가 따라야할 규칙과 구조를 제공하여 코드의 일관성 유지
반복적인 작업을 줄이고 기본적인 기능을 빠르게 구현할수 있게한다.
표준화된 구조와 모듈화를 통해 코드의 유지보수가 쉬워짐
프레임워크 는 일반적으로 라이브러리와 혼동될수 있지만
라이브러리 는 특정 기능을 수행하는 도구의 모음이고
프레임워크 는 더 큰 구조와 흐름을 제공하며 개발자가 그 안에서 코드를 작성하게 한다.
Express.js 와 Nest.js
Express
Express 는 Node.js 를 위한 가벼운 프레임워크다.
Express 의 특징
Express 는 필수적인 기능만들 제공하는 미니멀리즘 웹 프레임워크다.
필요에 따라 새로운 기능을 쉽게 추가할수있는 유연성과 모듈서을 가지고있어
빠르고 효율적인 개발이 가능하다.
Express 의 장점
학습이 쉽고 사용하기 간편하여 초보 부터 숙련된 개발자들 모두에게 적합하다.
HTTP 요청을 처리하기 위한 다양한 미들웨어 기능을 지원한다.
강력한 라우팅 시스템을 제공하여 다양한 HTTP 요청을 쉽게 처리 할 수 있다.
다양한 템플릿 엔진을 지원하여 동적 HTML 페이지를 쉽게 렌더링 할 수 있다.
다양한 DB 를 지원하며 Node.js DB 모듈과의 연동도 가능하다.
Express 의 단점
기본적인 기능만 제공하기 때문에 복잡한 기능이 필요한 경우 추가적인 모듈이나 미들웨어를 사용해야한다.