Kezdje el a Babel 7
A JavaScript az ökoszisztéma széleskörűsége miatt egyedülálló. Míg az új szabványok szintaktikai cukrot adnak hozzá, a böngészőkben való támogatásukhoz időre van szükség. A Babel ezt a problémát automatikus transzpilációval kerüli meg.
A termék mögött álló ötlet egyszerű: A Babel átveszi az ES6 vagy ES7 kódot, és az új szintaktikai elemeket emulációs kóddal helyettesíti. A kimenete megerősíti a klasszikus JavaScript szintaxist, és a régebbi böngészőkben, például az Internet Explorerben is fut.
A Babel első kiadása viharszerűen bevette a világot. Nem sokkal a megjelenése után különböző keretrendszerek, mint a React, a Vue és az Ember felkarolták. A fejlesztők gyakran úgy használják a terméket, hogy nem is tudják, hogy a háttérben működik – több népszerű npm projektnek is van függősége a Babel-től.
- Hogyan készítsünk alkalmazást
Ezek a függőségek konfliktusokkal teli üggyé változtatták az előd kiadási folyamatát. A 7-es verzió, amelyet továbbra is egy kis karbantartó csapat kezel, így igyekezett a lehető legjobban kompatibilis lenni. A törő változtatások ritkán fordulnak elő, miközben a kódgenerálás minősége továbbra is magas (ha csapatban dolgozol, a dokumentumok felhőalapú tárhelyre mentése segít az összetartásban).
Ha még nem dolgoztál a Babel-lel, ez legyen az útmutató. Ha kompatibilitási aggályok nélkül használhatja a fejlett JavaScript funkciókat, sokkal könnyebbé válik az élete.
Szeretne néhány eszközt a folyamatok racionalizálására? A legjobb honlapkészítőhöz szóló útmutatónk segíteni fog. Hosszú távú támogatást szeretne? Válassza a megfelelő webtárhelyszolgáltatást.
Verszióellenőrzés
A bábel általában a Node futásidejű környezetben él. Kezdjük a használt verziók ellenőrzésével. A kimenet megadja a következő cikk létrehozásához használt Ubuntu 14.04 munkaállomáson talált verzióállapotot. Ez nem pedantéria – a lépést kísérő ábra mutatja, hogy a Babel-csapat jó néhány Node.js verzió támogatását elhagyta.
tamhan@tamhan-thinkpad:~$ node --versionv8.14.0tamhan@tamhan-thinkpad:~$ npm --version6.4.1
A csomagnevek változása
A 7-es verzió egyik áttörő változása a Babel-csomagok saját névtérbe költöztetése volt. A régebbi csomagokat nem távolították el a különböző tárolókból. Ez azért fontos, mert a régebbi csomagnevek használata a lépést kísérő ábrán látható helyzethez vezet.
tamhan@tamhan-thinkpad:~/workspaceB7$ npm install --save-dev @babel/core @babel/cli @babel/preset-env @babel/node. . .+ @babel/[email protected]+ @babel/[email protected]+ @babel/[email protected]+ @babel/[email protected]
Build action hozzáadása
A fenti lépés feltételezi, hogy egy npm projektben dolgozik. Ebben az esetben a Babel futtatása a build action segítségével egyszerű. Nyissa meg a package.json állományt, és módosítsa azt az alábbi kódban bemutatott módon:
{. . ."main": "index.js","scripts": {"test": "echo \"Error: no test specified\" && exit 1","build": "babel index.js -d lib"},
Kézzel átfordítja a kódot
A Babel munkába állítása magában foglalja a build action elindítását. Ezt a legkönnyebben az npm run paranccsal lehet elvégezni. A -d érték tájékoztatja a Babelt, hogy az eredményeket a lib mappába kell helyezni – a lépést kísérő ábrán látható, hogy a mappa menet közben jön létre.
tamhan@tamhan-thinkpad:~/workspaceB7$ npm run build> [email protected] build /home/tamhan/workspaceB7> babel index.js -d libSuccessfully compiled 1 file with Babel.
Konfiguráció kérdése
A Babel további konfigurációs beállítások nélküli meghívása nem teszi lehetővé az átfordítást. A kódot csak akkor lehet átfordítani, ha a keretrendszer további információkat kap a célkörnyezetről. Ez történhet egy parancssori paraméteren keresztül, vagy a projekt gyökerében egy .babelrc nevű fájl létrehozásával.
A babelrc konfigurálása
A Babel egy sor bővítményen keresztül konfigurálja magát, amelyek mindegyike transzpilációs transzformációkat alkalmaz a kódbázisra. Mi a preset-env csomagot használjuk – ez egy előre konfigurált transzformációs készletet tartalmaz, amely a legtöbb alapot hivatott lefedni.
{"presets": }
Idő a tesztelésre
Adjunk egy kis újkori JavaScriptet az index.js állományhoz, hogy teszteljük a programot néhány élő kóddal szemben. Az ehhez a lépéshez tartozó kód nem működne a régebbi böngészőkön – ha kész, az implicit függvényt egy normál deklarációval helyettesítjük, ahogy az ábrán látható.
function tamstest(){.map((n) => n + 1);}
Célzás beállítása
A preset-env alapértelmezés szerint alkalmazza a legtöbb átfordítást: a termék célja, hogy a sávszélesség és a teljesítmény költségeire való tekintet nélkül univerzálisan kompatibilis JavaScriptet hozzon létre. A konfigurációját egy targets objektum átadásával módosíthatja – az alábbi példa a Chrome és az IE bizonyos verzióit célozza meg.
{"presets": ]}
Advanced targeting
A Babel böngészőcélzása nem korlátozódik a Chrome-ra és az Internet Explorerre. A browserslisttel való együttműködésnek köszönhetően a fejlesztők több mint egy tucat célpont közül választhatnak, ahogy az alábbiakban látható.
A nevek nem érzékenyek a nagy- és kisbetűkre:
- Android az Android WebView-hoz.
- Baidu a Baidu Browser-hez.
- BlackBerry vagy bb a Blackberry böngészőhöz.
- Chrome a Google Chrome-hoz.
- ChromeAndroid vagy and_chr a Chrome for Android-hoz.
- Edge a Microsoft Edge-hez.
- Electron az Electron keretrendszerhez. Át lesz konvertálva Chrome verzióra.
- Explorer vagy ie az Internet Explorer számára.
- ExplorerMobile vagy ie_mob az Internet Explorer Mobile számára.
- Firefox vagy ff a Mozilla Firefox számára.
- FirefoxAndroid vagy and_ff a Firefox for Android számára.
- iOS vagy ios_saf az iOS Safari számára.
- Node a Node.js számára.Opera az Opera számára.
- OperaMini vagy op_mini az Opera Mini számára.
- OperaMobile vagy op_mob az Opera Mobile számára.
- QQAndroid vagy and_qq a QQ Browser for Android számára.
- Safari az asztali Safari számára.
- Samsung a Samsung Internethez.
- UCAndroid vagy and_uc az UC Browser for Androidhoz.
Előrelátó célzás, második rész
A böngészőlista fejlett lekérdezéseket is fogadhat. A honlapja felsorolja a konfigurációs lehetőségeket, amelyek közül szinte mindegyik használható a Babelen belül is a babelrc módosításával. A lekérdezések lokálisan is kiértékelhetők, ha a munkaállomáson telepítve van az npx.
{"targets": "> 0.25%, not dead"}
Automatikus átfordítás
A Babel kézzel történő meghívása hamar unalmassá válik. A nodemon segédprogram figyeli a fájlrendszer erőforrásait, és a változások észlelésekor parancsokat lő ki. Elméletileg a nodemon támogatás hozzáadása a package.json egy kis módosításával megoldható.
{"name": "workspaceb7",. . ."main": "index.js","scripts": {"start": "nodemon --exec babel-node index.js",
A jelenlét ellenőrzése
Egyes munkaállomásokon a nodemon globálisan telepítve van. Ha ez nem így van, a program meghívása az alább láthatóhoz hasonló hibaüzenetet fog eredményezni. Szerencsére a nodemon telepítése könnyen elvégezhető az npm install paranccsal.
tamhan@tamhan-thinkpad:~/workspaceB7$ npm install --save-dev nodemon
Funkcionalitás ellenőrzése
Elindíthatjuk az npm startot egy terminálablakban, és folytathatjuk az index.js tartalmának módosítását egy szerkesztővel, például gedit vagy Visual Studio Code segítségével. A mentés után a nodemon állapotinformációt fog kiadni.
restarting due to changes... starting `babel-node index.js` clean exit - waiting for changes before restart
Transzpiláció javítása
Míg a nodemon érzékelésének ezen a ponton hibátlanul kell működnie, a lib-ben található index.js fájl tartalma nem frissül. Ezt a babel-node egyik finomsága okozza – nem commitolja az átfordított fájlokat a lemezre. Ehelyett a Node CLI módosított változatát indítja el, amely az átfordított fájlokkal dolgozik.
A kód programozott átfordítása
A babel nem korlátozódik a parancssoron való munkára. Ha a megfelelő csomagok telepítve vannak, a kód egy másik programból is átfordítható. Az ezt a lépést kísérő snippet egy sor alapvető transzformációt alkalmaz egy bemeneti karakterláncra. Tartsuk szem előtt, hogy a konfigurációs beállításokat általában egy babelrc fájlból kapjuk.
var babel = require("@babel/core");import { transform } from "@babel/core";import * as babel from "@babel/core";babel.transform("code();", options, function(err, result) {result.code;result.map;result.ast;});
Transpile teljes fájlok
A forráskódot általában nem tároljuk stringváltozókban. A Babel API ezt egy sor fájlokkal kapcsolatos függvényen keresztül veszi figyelembe, amelyek lemondanak a bemeneti karakterláncról egy fájlnevet tartalmazó változó esetében. Az eredményeket azonban normál JavaScript-változóként kapjuk vissza.
babel.transformFile("filename.js", options, function (err, result) {result; // => { code, map, ast }});
Szinkron és aszinkron
A Babel 7 bevezette a legtöbb API-hívás szinkron és aszinkron változatát. Győződjön meg róla, hogy az igényeinek megfelelőt választja – míg a kisebb példák átfordítása menet közben is elvégezhető, a Babel bonyolultabb fájlokra való ráeresztése könnyen több tucat másodperces késedelmekhez vezethet.
Tudjon meg többet az egyes bővítményekről
Ha valaha is kíváncsi lenne arra, mi történik a háttérben, egyszerűen látogasson el erre az oldalra. Ez egy listát ad a Babel disztribúcióban jelenleg található összes bővítményről, és tartalmaz néhány tippet is mindazok számára, akik saját bővítményt szeretnének létrehozni.
A TypeScript sajátosságainak kiszűrése
A Babel nem korlátozódik az újkori JavaScript elemek átfordítására. A termék tartalmaz egy funkciókat korlátozó TypeScript-motort. Kicsomagolja a tipizálási információkat és helyettesíti a fejlett elemeket. Sajnos a Babel nem végez típusellenőrzést – ezzel megszűnik a TypeScript nyelv egyik legjelentősebb előnye.
{"presets": }
A Babel online futtatása
Míg az átfordítási műveletek általában zökkenőmentesen működnek, néha előfordulnak problémák. Ilyenkor a Babel REPL hasznos segítség. Ez a munkaállomás böngészőjében futtatja a Babelt, és közvetlenül egymás mellett mutatja a bemenetet és a kimenetet.
Tudjon meg a fájdalmas pontokról
A bevezetőnkben elmagyaráztuk, hogy a Babel széles körben elterjedt használatban van a különböző projektekben. A Babel karbantartó csapata részletes változásnaplóval egyszerűsíti a verziófrissítést. Ha programozottan használja a Babelt, ne felejtse el áttanulmányozni az API frissítési útmutatót.
Ez a cikk eredetileg a Web Designer kreatív webdesign magazin 283. számában jelent meg. Vásárolja meg a 283. számot itt, vagy fizessen elő a Web Designerre itt.
- Hogyan kódoljon gyorsabb, könnyebb JavaScriptet
- 5 fantasztikus Javascript API
- 27 elsőrangú weboldal sablon
.
Leave a Reply