<aside> <img src="/icons/list_gray.svg" alt="/icons/list_gray.svg" width="40px" /> 목차
</aside>
ECMA Script란 Ecma International에서 ECMA-262 기술 규격에 따라 정의하고 있는 표준화된 스크립트 프로그래밍 언어를 말합니다. JavaScript 표준화를 위한 규격으로 보면 됩니다.
ES는 지속적으로 업데이트 되고 있는데요, 뒤에 붙은 숫자가 버전이라고 보면 됩니다. ES6(ECMA Script 6)는 2015년에 발표된 ES의 6번째 버전입니다.
ES6에서는 ES5 이하 버전에서 문제가 되었던 부분들이 해결되고, 많은 기능들이 추가되어 가독성과 유지 보수 측면에서 큰 향상을 가져왔기에 중요하게 다뤄지고 있습니다. (이후에도 버전은 계속 업데이트되고 있지만, ES6가 가장 큰 변경사항이었기 때문에 ES6로 통칭해 부르곤 합니다.
ES6가 어떤 점에서 변화를 가져왔는지, ES6의 문법은 어떤 지에 대해서는 아래 참고 자료를 넣어 놨으니 한 번 확인해주세요.
지난 시간 Express 코드가 기억나시나요? 아래 코드를 실행했을 때, ES 모듈과 관련한 오류가 발생했었습니다.
// const express = require('express') // -> CommonJS
import express from 'express' // -> ES Module
const app = express()
const port = 3000
app.get('/', (req, res) => {
res.send('Hello World!')
})
app.listen(port, () => {
console.log(`Example app listening on port ${port}`)
})

Node.js는 기본적으로 실행하면 CommonJS 방식으로 실행되는데, ES Module 방식으로 실행하기 위해서는 별도의 설정이 추가로 필요했습니다.
{
"name": "playground-umc-7th-nodejs",
"type": "module"
}
ES Module이 도입되기 전 JavaScript 프로그램들은 대체로 작은 편이었습니다. 처음에는 브라우저 환경에서 약간의 스크립트 기능으로 활용되던 것이 점차 확대되고 복잡해지면서, JavaScript 파일들을 분리하고 필요할 때 가져올 수 있도록 개선할 필요가 생겼습니다.
이에 따라 ES6와 함께 소개된 것이 ES Module입니다. (줄여서 esm으로도 부릅니다.) ES Module은 require 대신 improt, export를 이용해서 라이브러리와 모듈을 더 안전하고 효율적으로 가져오고 로드할 수 있습니다.
CommonJS와 비교해 모듈 내에서 내보내기(외부에 공개)를 처리하는 방법이 더 명확하고 유연해졌고, 모듈을 로드할 때에도 동기가 아닌 비동기로 처리하도록 변경되었습니다.
위 내용은 지난 챕터에서 설정 실습과 함께 가볍게 넘어갔었는데, 그냥 넘어가기보다는 한 번 다시 되짚어보고 ES6와 ES Module을 사용하는 이유를 이해하고 넘어가셨으면 해서 추가해두었다는 점 말씀드립니다 :)