에크마스크립트(ECMAScript)의 탄생
넷스케이프와 마소는 자신들의 브라우저에 새로운 기능을 빠르게 늘리기 시작했고 이렇게 추가된 기능은 각자의 브라우저에서만 동작했다. 특히 익스플로러와 내비게이터의 DOM구조는 완전히 달랐는데 브라우저마다 웹 페이지가 다르게 동작하거나 제대로 동작하지않는 cross browsing이슈가 발생했다. 이에 따라 개발자의 어떤 기능을 추가하기 위해 두 개의 스크립트를 따로 개발 해야했다.
또한 초기의 JS는 브라우저 생태계를 고려해서 작성된 것이 아니었고 단지 새로운 기능이 추가되는 형태로 발전했다.
이에 따라 자바스크립트와 브라우저의 발전 속도의 차이가 나기 시작했고 결국 브라우저는 자바스크립트의 변화를 따라가지 못했다. 자바스크립트에 어떤 기능이 추가된다면 runtime 환경인 브라우저도 이 기능을 지원할 수 있어야한다. 새로우 버전의 브라우저가 출시되어 자바스크립트의 새로운 기능을 지원하더라도 사용자가 예전 버전의 브라우저를 사용한다면 이 기능은 무용지물이 된다. 이런 문제를 해결하기 위해 폴리필과 트랜스파일 같은 개념이 등장하기도 했다.
따라서 jQuery같이 브라우저 호환성을 고민하지 않고 한 번에 개발할 수 있도록 지원해주는 라이브러리가 유행을 끈 것은 당연한 결과였다. 하지만 언제까지 이런 라이브러리에 기대 cross browsing이슈를 해결 할 수 없었고, 모든 브라우저에서 동일하게 동작하는 표준화된 JS의 필요성이 제기되었고, 넷스케이프는 컴퓨터 시스템의 표준을 관리하는 Ecma 인터네셜에 JS의 표준화를 위한 JS기술 규격을 제출, Ecma 인터네셜은 ECMAScript라는 이름으로 JS 표준화를 공식화했다. 자바스크립트가 표준화되면서 정적이던 웹사이트에서 동적인 웹 애플리케이션으로의 전환이 빨라졌다.
폴리필은 브라우저가 지원하지 않는 코드를 브라우저에게서 사용할 수 있도록 변환한 코드 조각이나 플러그인을 말한다.
트랜스파일은 최신 버전의 코드를 예전 버전의 코드로 변환하는 과정을 말한다.
폴리필과 트랜스파일 둘 다 최신 기능을 구버전의 실행 환경에서 동작할 수 있게 바꿔주는 역할을 한다.
유명한 폴리필 라이브러리로는 core.js와 polyfill.io가 있으며, 대표적인 트랜스파일러로는 babel이 있다.
댓글