ざっくりECMAScriptとBabelの話
ECMAScriptとは?
ECMAScriptは、JavaScriptを元にして標準規格化されたスクリプト言語です。
JavaScriptはNetscapeによって開発されましたが、それをベースにしたJScriptをマイクロソフトが独自に開発していたりと、互換性に乏しい状態でした。そこで、1990年代後半に、情報通信システムの分野における国際的な標準化団体であるEcma Internationalによって、JavaScriptを元にした標準規格のECMAScriptが策定されました。
ECMAScriptのバージョン
ECMAScriptは、ECMA-262という規格番号で標準化されています。
1997年に、1st editionである、ECMAScript 1が策定され、2009年に5th editionのECMAScript 5(以下、ES5)とアップデートをしてきました。
(4th editionは仕様がまとまらず、破棄されました)
2015年の6th editionから、それまでのECMAScript 番号というeditionベースの略称から、年号ベースの仕様書名で呼ばれることが推奨されるようになり、ECMAScript 2015(以下、ES2015)と表記されています。
JavaScript系のブログ等で、ES6/ES2015と、2つの表記が混在しているのは、そのためです。
また、ES2015からは毎年改訂が行われるようになり、2018年10月現在は、ES2018までが策定されています。
Babelの機能と役割
ECMAScriptは、ES5からES2015で大きく変化しました。
クラスやモジュール、イテレーター、アロー関数、分割代入等、とても便利な記法が追加されたわけですが、ECMAScriptの変化にブラウザやクローラーがピッタリとついてきているわけではありません。
たとえば、Internet Explorer 11(以下、IE11)やGooglebotのレンダリングはES5相当なので、ES2015以降のバージョンでかかれたJavaScriptは、それらの環境では正しく動作しません。
しかし、ES2015以降の便利な記法は、どんどん利用したい。。
そこで、Babelの出番です。
Babelは、ES2015〜2018の記法を、ES5に自動的に変換してくれるツールです。
(変換することをトランスパイルとも言います)
Babelを利用することにより、モダンなJavaScriptの記法を使用しながら、レガシーな環境にも対応できるわけです。
便利ですね!
Babel使用時の注意点
BabelはES2015〜2018をES5相当までトランスパイルしてくれますが、機能を追加するわけではありません。
たとえば、async/awaitとかそのまま使うと「Promiseねえよ!」って、IEで怒られたりします。
そういった場合は、@babel/polyfill等のポリフィルを使う必要があります。
まとめ
- ECMAScriptは、JavaScriptを元にして標準規格化されたスクリプト言語
- 5th editionまではES5のようにバージョン表記で、6th editionからはES2015のように年号表記
- ES2015から多くの機能・記法がついかされたが、ブラウザやクローラーが追いついていないので、レガシー環境に対応する場合はBabelでトランスパイルしてあげる必要がある
- 機能まで欲しい場合は、@babel/polyfill等のポリフィルが必要
Author And Source
この問題について(ざっくりECMAScriptとBabelの話), 我々は、より多くの情報をここで見つけました https://qiita.com/otsukayuhi/items/a51cf6aab6363b4f5b0a著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .