CommonJS , ECMA

zioo·2021년 12월 20일
0

Backend

목록 보기
8/40

JavaScript 표준으로는 CommonJS, AMD, ECMAScript, TypeScript 이 있다.

CommonJS

CommonJS(http://www.commonjs.org/)

  • JavaScript를 브라우저에서뿐만 아니라, 서버사이드 (백엔드) 애플리케이션이나 데스크톱 애플리케이션에서도 사용하려고 조직한 자발적 워킹 그룹이다.

CommonJS의 'Common'은 JavaScript를 브라우저에서만 사용하는 언어가 아닌 일반적인 범용 언어로 사용할 수 있도록 하겠다는 의지를 나타내고 있는 것이라고 이해할 수 있다.

모듈화는 아래와 같이 세 부분으로 이루어진다.

  • 스코프(Scope): 모든 모듈을 자신만의 독립적인 실행 영역이 있어야 한다.
  • 정의(Definition): 모듈 정의는 exports 객체를 이용한다.
  • 사용(Usage): 모듈 사용은 require 함수를 이용한다.

ECMAScript

Ecma International

ECMAScript는 Ecma International(구, European Computer Manufacturers Association; EMCA)에서 만든 JavaScript 표준안이다. Ecma International 은 JavaScript 외에 여러 표준안을 다루는데 그 중 JavaScript를 구분하기 위해 262라는 숫자를 표기했다. (표준안마다 숫자가 있다.) 따라서 ECMA-262를 보게 되면 ECMAScript 규격(JavaScript)이라고 생각하면 된다.

Javascript 기본은 Frontend 라서 ECMA를 표준이라고 한다.

종류

현재 ECMAScript(ES)는 2018년 6월 발표된 9번째 edition 까지 나온 상태이다.

ES6 / ES2015

2015년 6월 발표 됐으며, 이 때부터 ES 뒤에 년도가 붙기 시작했다. ES6와 ES2016는 동일한 이름이다.

ES6가 대중화된 이름이지만 ECMA International 에서 년마다 업데이트를 하기로 결정한 후로 ES2015와 같은 이름이 붙었다. 이 변화에 의해, ES뒤에 에디션 번호가 붙었던 이름이 ES2015와 같은 출판된 년도가 붙는 방식으로 변경되었다. 해당 버전 이후로 따르는 것들은 이름에 출판 년도가 붙는다.

ES6는 class, template tag, arrow function 등과 같은 새로운 개념들이 있으며, 이전 버전과 새로운 개념들이 많이 나와 개발자들에게 많은 공부가 필요했다. 아직 ES5 문법을 따르고 있다면 ES6로 변경하는 것을 추천한다. JavaScript의 scope 문제를 해결하기 위해 나온 새로운 변수 선언 방식인 let, const (블럭단위 scope) 와 Template Literals(문자열 처리 방식, +가 아닌 '' 안에 ${}를 통해 변수값을 바로 넣을 수 있다.) 방식 등 새로운 개념들이 코드를 깔끔하게 만들 수 있다.

ES6의 주된 특징에 대해서는 “Top 10 ES6 Features Every Busy JavaScript Developer Must Know” 글을 참고하면 쉽게 알 수 있다.

Top 10가지의 목록만 나열하자면 아래와 같다.

  1. Default Parameters
  2. Template Literals (string 을 합칠 때 더이상 +를 붙이지 않아도 된다!)
  3. Multi-line Strings
  4. Destructuring Assignment
  5. Enhanced Object Literals
  6. Arrow Functions
  7. Promises
  8. Block-Scoped Constructs Let and Const
  9. Classes
  10. Modules

거의 모든 현대 브라우저들은 ES6를 지원한다. 하지만, 오래된 브라우저들은 ES6를 지원하지 않아서 transpiler들이 필요하다. 예로 Babel.js 는 ES6를 ES5(JavaScript의 오래된 표준)로 transpile해준다. 최근 대부분의 회사에서 최소 ES6를 따르고 있다.

https://d2.naver.com/helloworld/12864

0개의 댓글