JavaScript gün geçtikçe deÄiÅiyor. Sürekli yeni öneriler ekleniyor, analiz ediliyor eÄer deÄerli olduÄu kararına varılırsa https://tc39.github.io/ecma262/ listesine ekleniyor. Sonra ise özelliklere ekleniyor.
JavaScript motorlarını yazan kiÅiler bu uygulamaları kendi fikirlerine göre sıraya koyarlar. ÃrneÄin aslında özellikler içinde olması gerekeni sonraya bırakıp daha önerileri uygulayabilirler. Ãzelliklerin çok da önemli olmayabilir veya uygulaması zor olabilir.
Bundan dolayı JavaScript motorunun standartların sadece bazı bölümlerini uygulaması çok normaldir.
Hangi tarayıcıların hangi özellikleri uyguladıÄını https://kangax.github.io/compat-table/es6/ adresinden görebilirsiniz.
Babel
Dilin modern özelliklerini kullandıÄımızda bazı JavaScript motorları bu özellikleri desteklemeyebilir, söylendiÄi gibi tüm özellikler her yerde uygulanmayabilir.
Bu durumda bizi Babel kurtarır.
Babel transpilerdır. Yani kaynak kodundan kaynak koduna çeviri yapar. Modern dil özelliklerini kullanarak yazdıÄımız kodu, eski standartlara çevirir.
Babel iki bölümden oluÅmaktadır:
-
Transpiler programı, yani kodu yeniden yazan program. GeliÅtiriciler bunu kendi bilgisayarlarında yaparlar. Kod eski standartlara göre tekrar yazılır. Ardından web sitesine ulaÅtırılarak kullanıma açılır. webpack veya brunch otomatik kurma (build) iÅlemi yapan araçlar anlık olarak her kod deÄiÅtiÄinde kodu eski standartlara çevirebilirler. Bundan dolayı bizim için çok da bir fark yoktur.
-
The polyfill.
Transpiler kodu yazdı, yazım özellikleri tamam fakat yeni fonksiyonlar eklendiÄinde özel kod yazarak bunların uygulamasını yapmanız gerekir. JavaScript çok dinamik bir dildir. Kodlar sadece yeni fonksiyonları deÄil var olanları da deÄiÅtirir, anca böyle modern standartlara göre kod yazılır.
âpolyfillâ ,âdoldurmaâ anlamına gelir ve eksik uygulamaları bizim için uygular.
Polyfillâe örnek verecek olursak:
- babel polyfill çoÄu özelliÄi destekler. Fakat dosya boyutu büyüktür.
- polyfill.io Bize gerekli olan bölüme göre özellikler ekler.
Bundan dolayıdır ki, eski JavaScript motorlarını desteklemek için kod çevirici (transpiler) ve boÅlukları dolduran pollyfill eklemeniz gerekir.
Sadece her yerde desteklenen özellikleri kullanıyorsanız ve modern JavaScript motorlarına yönelik yazıyorsanız bu durumda Babelâe ihtiyacınız yoktur.
Bu dersteki örnekler
ÃoÄu özellik aÅaÄıdaki gibi olduÄu yerden çalıÅır:
```js run
alert('SaÄ Ã¼st taraftaki "Oynat" butonuna basarak örneÄi çalıÅtırabilirsiniz.');
```
Buradaki örnekler sadece browser desteler ise çalıÅır.
Ãevirim DıÅı versiyonunu yani pdf vs. okuyorsanız örnekleri doÄal olarak çalıÅtıramazsınız. Fakat genelde çalıÅıyorlar :)
Chrome Canary üzerinde tüm örnekler çalıÅtırılabilir fakat diÄer modern tarayıcılarda da çalıÅması lazım.
Kodu canlı sistemde çalıÅtırırken, Babel kullanarak eski tarayıcılara da destek verebilirsiniz, kod bu Åekilde her yerde çalıÅmıŠolacaktır.
Yorumlar
<code>kullanınız, birkaç satır eklemek için ise<pre>kullanın. EÄer 10 satırdan fazla kod ekleyecekseniz plnkr kullanabilirsiniz)