본문 바로가기

DEVELOP

[javascript] ES6 ie 호환

728x90

ES6 문법으로 스크립트를 짠 .js 파일은 ie에서 작동이 되지 않는다.

 

이때는 Babel의 힘을 빌려서 호환 작업을 해주어야한다.

 

(해당 작업은 윈도우 운영체제 환경에서 git Bash를 사용하였습니다.)

 

1. node 로컬 설치 여부 확인

node -v

1-1. 설치가 되어있지 않다면, 아래 링크를 따라 안정적인 버전으로 설치

https://nodejs.org/ko/

 

Node.js

Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

nodejs.org

2. npm 로컬 설치 여부 확인 (npm은 node.js 를 설치할때 자동으로 함께 설치된다.)

npm -v

3. Babel 설치

Babel은 특정 버전의 script 코드를 하위 버전으로 변환해주는 트랜스파일러이다.

npm install --save-dev babel-cli

또는

npm install -g babel-cli

babel-cli는 트랜스파일을 진행해주는 코어 기능만 있고 확장된 플러그인들이 필요하다.

따라서 아래 명령어로 추가 플러그인 설치

화살표 함수도 es6 미만의 버전으로 호환되게 설치

Promise, Map, Set, Object.assign, Array.find 등 메서드를 ie 하위브라우저에서도 인식할 수 있게 polyfill 설치 

npm install --save-dev babel-preset-env
npm install babel-plugin-transform-es2015-arrow-functions
npm install babel-polyfill

4. 프로젝트 바로 하위 위치에 .babelrc 파일 추가 생성후 아래와 같이 코딩

{
    "plugins": ["transform-es2015-arrow-functions"],
    "presets": [
        ["env", {
          "targets": {
            "browsers": ["last 2 versions", "not ie <= 10"]
          }
        }]
      ]
}

여기서 "browsers": ["last 2 versions", "not ie <= 10"] 란 익스 10이상부터 지원하게 버전 옵션을 준다는 뜻이다.

 

5. Babel 명령으로 ES6 문법 스크립트를 하위 문법 스크립트로 변환하기

npx babel ./js/index.js --out-file ./js/index_es5.js --presets=es2015

여기서 "./js/index.js 는 ES6 문법 스크립트 파일 경로 및 이름

./js/index_es5.js --presets=es2015 는 해당 ES6 문법 스크립트 파일은 프리셋을 통해 es5 문법으로 ./js/index_es5.js 이란 경로와 이름으로 저장한다." 라는 뜻이다.

 

입력후 해당 경로에 es5문법 스크립트 파일이 저장되었음을 알수 있고, 이를 크로스브라우징(ie호환)을 위해서 index.js 파일이 아닌 index_es5.js 를 연결해주면 된다.

 

하지만 현재 방법으로는 매번 수정이 일어날때마다 해당 es5 파일을 삭제하고, 다시 babel 명령으로 만들어줘야 하므로 추가적인 공부가 필요하다.

 

참고 사이트

 

요즘 잘나가는 프론트엔드 개발환경 만들기(2018): ES6 : NHN Cloud Meetup

요즘 잘나가는 프론트엔드 개발환경 만들기(2018): ES6

meetup.toast.com

 

(Babel) ES6를 IE8에서도 써보자

목차 들어가기에 앞서 ES6 왜 써? ES6에서 ES5로 트랜스파일하기 ES5를 IE8에서도 지원하기 바벨은 안전한가? 들어가기에 앞서아주 많이 참조한 링크지금 바로 시작하는 ES6

perfectacle.github.io

 

요즘 잘나가는 프론트엔드 개발환경 만들기(2018): ES6 : NHN Cloud Meetup

요즘 잘나가는 프론트엔드 개발환경 만들기(2018): ES6

meetup.toast.com

 

Babel로 ECMAScript 2015 사용하기 :: Outsider's Dev Story

요즘 JavaScript 관련 프로젝트를 보면 ECMAScript 2015로 대부분 작성하는 것을 볼 수 있고 이 코드는 상당히 깔끔해 져서 얼핏 보면 JavaScript 코드인지 인식 못 할 정도이다. 현재 보통 사용하는 JavaScrip

blog.outsider.ne.kr

 

Babel Polyfill 적용하는 방법들

babel은 기본적으로 es6(ecma2015) 문법으로 작성한 코드를 es5 환경에서 동작할 수 있도록 문법적인 변환을 해주지만 es5에 존재하지 않는 es6의 메서드나 생성자들까지 지원해주지는 않는다. 그래서 e

okchangwon.tistory.com