Node.js는 확장성 있는 네트워크 애플리케이션(특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼이다.
> 작성 언어로 자바스크립트를 활용하며 논블로킹(Non-blocking)[3] I/O와 단일 스레드 이벤트 루프를 통한 높은 처리 성능을 가지고 있다.
> 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하며 이를 통해 웹 서버의 동작에 있어 더 많은 통제를 가능케 한다.
> V8으로 빌드된 이벤트 기반 자바스크립트 런타임이다.
> 웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 고안되었다. 파이썬으로 만든 트위스티드, 펄로 만든 펄 객체 환경, 루비로 만든 이벤트 머신과 그 용도가 비슷하다.
> 대부분의 자바스크립트가 웹 브라우저에서 실행되는 것과는 달리, 서버 측에서 실행된다. 일부 CommonJS 명세[4]를 구현하고 있으며, 쌍방향 테스트를 위해 REPL 환경을 포함하고 있다.
npm (노드 패키지 매니저/Node Package Manager)은 자바스크립트 프로그래밍 언어를 위한 패키지 관리자이다.
> 자바스크립트 런타임 환경 Node.js의 기본 패키지 관리자이다. 명령 줄 클라이언트(npm), 그리고 공개 패키지와 지불 방식의 개인 패키지의 온라인 데이터베이스(npm 레지스트리)로 이루어져 있다.
> 이 레지스트리는 클라이언트를 통해 접근되며 사용 가능한 패키지들은 npm 웹사이트를 통해 찾아보고 검색할 수 있다. 패키지 관리자와 레지스트리는 npm사에 의해 관리된다.
> 자바스크립트 모듈을 설치하기 위해 npm을 대신할만한 오픈 소스 대안들이 많이 있으며 여기에는 ied, pnpm, npmd, Yarn이 포함되며 그 중 마지막 것은 2016년 10월 페이스북이 공개한 것이다.[4] 이것들은 공용 npm 레지스트리와 모두 호환되고 해당 레지스트리를 기본으로 사용하지만 각기 다른 클라이언트 사이드 경험을 제공하며 npm 클라이언트에 비해 보통 성능 및 결정론을 개선하는데 초점을 둔다
V8은 웹 브라우저를 만드는 데 기반을 제공하는 오픈 소스 자바스크립트 엔진이다.
> 구글 크롬 브라우저와 안드로이드 브라우저에 탑재되어 있다.[2] V8로 줄여 불리기도 하며, 현재 라스 백이 책임 프로그래머이다.[3]
> ECMAScript(ECMA - 262) 3rd Edition 규격의 C++로 작성되었으며, 독립적으로 실행이 가능하다. 또한 C++로 작성된 응용 프로그램의 일부로 작동할 수 있다.
> V8은 자바스크립트를 바이트코드(bytecode)로 컴파일하고 실행하는 방식을 사용한다.(JIT 컴파일) 기계어로 정적 컴파일하여 실행한다는 루머가 있지만 이는 사실이 아니다. 추가적인 속도향상을 위해 인라인 캐싱(inline caching)과 같은 최적화 기법을 적용하였다.
자바스크립트(영어: JavaScript)는 객체 기반의 스크립트 프로그래밍 언어이다.
> 이 언어는 웹 브라우저 내에서 주로 사용하며, 다른 응용 프로그램의 내장 객체에도 접근할 수 있는 기능을 가지고 있다.
> 또한 Node.js와 같은 런타임 환경과 같이 서버 프로그래밍에도 사용되고 있다.
> 자바스크립트는 본래 넷스케이프 커뮤니케이션즈 코퍼레이션의 브렌던 아이크(Brendan Eich)가 처음에는 모카(Mocha)라는 이름으로, 나중에는 라이브스크립트(LiveScript)라는 이름으로 개발하였으며, 최종적으로 자바스크립트가 되었다.
> 자바스크립트가 썬 마이크로시스템즈의 자바와 구문이 유사한 점도 있지만, 이는 사실 두 언어 모두 C 언어의 기본 구문에 바탕을 뒀기 때문이고, 자바와 자바스크립트는 직접적인 연관성은 약하다. 이름과 구문 외에는 자바보다 셀프나 스킴과 유사성이 많다.
> 자바스크립트는 ECMA스크립트(ECMAScript)의 표준 사양을 가장 잘 구현한 언어로 인정받고 있으며 ECMAScript 5 (ES5) 까지는 대부분의 브라우저에서 기본적으로 지원되었으나 ECMAScript 6 이후부터는 브라우저 호환성을 위해 트랜스파일러로 컴파일된다.[3]
타입스크립트(TypeScript)는 자바스크립트의 슈퍼셋인 오픈소스 프로그래밍 언어이다.
> 마이크로소프트에서 개발, 유지하고 있으며 엄격한 문법을 지원한다. C#의 리드 아키텍트이자 델파이, 터보 파스칼의 창시자인 Anders Hejlsberg가 개발에 참여한다.[5] 클라이언트 사이드와 서버 사이드를 위한 개발에 사용할 수 있다.
> 타입스크립트는 자바스크립트 엔진을 사용하면서 커다란 애플리케이션을 개발할 수 있게 설계된 언어이다.
> 자바스크립트의 슈퍼셋이기 때문에 자바스크립트로 작성된 프로그램이 타입스크립트 프로그램으로도 동작한다.
> 타입스크립트에서 자신이 원하는 타입을 정의하고 프로그래밍을 하면 자바스크립트로 컴파일되어 실행할 수 있다.
> 타입스크립트는 모든 운영 체제, 모든 브라우저, 모든 호스트에서 사용 가능한 오픈 소스이다.
앵귤러(Angular, Angular 2+ 또는 Angular v2 이상)[4][5]는 구글의 앵귤러 팀과 개인 및 기업 공동체에 의해 주도되는 타입스크립트 기반 오픈 소스 프론트엔드 웹 애플리케이션 프레임워크이다.
> 앵귤러는 AngularJS를 개발한 동일 팀으로부터 완전히 다시 작성한 것이다.
아이오닉(Ionic)은 2013년 드리프티의 맥스 린치, 벤 스페리가 제작한 하이브리드 모바일 앱 개발을 위한 완전 오픈 소스SDK이다.(모바일 앱 프레임워크)[2]
> 최초 버전은 2013년에 앵귤러JS와 아파치 코도바로 제작되었지만 최신 버전은 앵귤러, 리액트나 Vue.js와 같은 어떠한 유저 인터페이스 프레임워크라도 고를 수 있도록 웹 컴포넌트의 하나로서 재제작되었다.
> 이는 또한 사용자 인터페이스 프레임워크가 전혀 없는 아이오닉 구성요소를 사용할 수 있다.[3]
> 아이오닉은 CSS, HTML5, 그리고 Sass와 같은 웹 기술을 사용하여 현대적인 웹 개발 기술과 관행을 기반으로 한 하이브리드 모바일, 데스크톱 및 프로그레시브 웹 앱을 개발하기 위한 도구와 서비스를 제공한다.
> 특히, 모바일 앱은 이러한 웹 기술로 제작한 다음 코도바나 캐파시터를 이용해 네이티브 앱 스토어를 통해 배포하여 기기에 설치할 수 있다.[4]
아파치 코도바(Apache Cordova, 이전 명칭: 폰갭, PhoneGap)는 니토비(Nitobi)가 만들고 어도비 시스템즈가 인수한 모바일 개발 프레임워크이다.[6][7]
> 소프트웨어 프로그래머들이 오브젝티브-C 처럼 기기에 특화된 언어들 대신 자바스크립트, HTML5, CSS3를 이용하여 모바일 기기를 위한 응용 프로그램들을 만들 수 있게 한다.[8]
> 응용 프로그램 결과물들은 하이브리드 형태인데, 이는 모든 레이아웃 렌더링이 플랫폼의 네이티브 UI 프레임워크가 아닌 웹 뷰를 통해 수행되며 단지 웹앱일 뿐만 아니라 배포를 위해 패키지화되면서 네이티브 기기 API에 접근할 수 있음을 의미한다. 1.9 버전부터 네이티브 코드와 하이브리드 코드 일부를 자유롭게 섞어서 쓸 수도 있다.
> 폰갭의 기반이 되는 소프트웨어는 아파치 코도바(Apache Cordova)이다.[9] 이 소프트웨어는 한때 간단히 폰갭(PhoneGap)이라 불리다가 아파치 콜백(Apache Callback)으로 불렸다.[10][11] 아파치 코도바는 오픈 소스 소프트웨어이다.
> 아파치 코도바는 현재 애플의 iOS, 구글의 안드로이드, LG의 웹OS, 마이크로소프트의 윈도 폰, 노키아의 심비안 OS,[27] RIM 블랙베리, 타이젠 (SDK 2.x)용 개발을 지원한다.
리액트(React, React.js 또는 ReactJS)는 자바스크립트 라이브러리의 하나로서[2] 사용자 인터페이스를 만들기 위해 사용된다.
> 페이스북과 개별 개발자 및 기업들 공동체에 의해 유지보수된다.[3][4][5]
> 리액트는 싱글 페이지 애플리케이션이나 모바일 애플리케이션 개발에 사용될 수 있다.
> 대규모 또는 복잡한 리액트 애플리케이션 개발에는 보통 라우팅, API통신 등의 기능이 요구되는데 리액트에는 기본적으로 제공되지 않기 때문에 추가 라이브러리를 사용해야 한다.[6][7]
'[CS] IT 용어 모음' 카테고리의 다른 글
AWS ACM이란? (0) | 2024.01.11 |
---|---|
[IT 용어] Content-Security policy 이란? (0) | 2022.11.30 |
[React] Dom 접근 및 조작 (0) | 2021.07.02 |
[React] 컴포넌트 Event처리 (0) | 2021.07.02 |
[React] 리액트 개요 (0) | 2021.06.30 |
최근댓글