JavaScript AST felfedező
Illeszd be a JavaScript-kódot, és böngészd az absztrakt szintaxisfáját (ESTree, Acorn) a böngésződben. Kattints a csomópontokra, exportáld JSON-ként.
- Csomópontok
- –
- Maximális mélység
- –
- Legfelső szintű utasítások
- –
Kattints egy csomópontra a hozzá tartozó kód kijelöléséhez. Kattints a kódba, vagy mozgasd benne a kurzort, és megtalálod a csomópontját.
Válassz ki egy csomópontot a fában, vagy kattints a kódba.
- Típus
- Tulajdonság
- Tartomány (karakterpozíciók)
- Hely
- Tulajdonságok
- A csomópont forráskódja
ESTree JSON
Hogyan fedezd fel egy JavaScript AST-jét
- Illeszd be a kódot a JavaScript-kód mezőbe, vagy kattints a Példa betöltése gombra, hogy egy kis modulból indulhass.
- Válaszd ki a Forrás típusa beállítást: a Modul (import/export, szigorú mód) az ES-modulokhoz való, a Szkript (klasszikus) pedig a hagyományos szkriptekhez, amelyek használhatnak laza módú elemeket, például a
withutasítást. - A fa röviddel azután frissül, hogy abbahagyod a gépelést. Az Elemzés gombbal azonnal futtathatod.
- A Szintaxisfa nézetben a kis nyílra kattintva kinyithatsz vagy összecsukhatsz egy csomópontot. Ha egy csomópont nevére kattintasz, a szerkesztőben kijelölődik a hozzá tartozó kód. A Kijelölt csomópont panel megmutatja a típusát, azt a tulajdonságot, amelyhez tartozik, a karaktertartományát, a sorát és oszlopát, az egyszerű tulajdonságait (név, operátor, nyers érték…), valamint a forrásszövegét.
- Fordítva is működik: kattints bárhová a kódban, mozgasd a kurzort a billentyűzettel, vagy jelölj ki egy kódrészletet, és a fában kinyílik, illetve kiemelődik a legmélyebb csomópont, amely tartalmazza.
- Nyisd meg az ESTree JSON részt, ha a teljes fát JSON-ként szeretnéd látni a Pozíciók mellékelése (start, end, loc) opcióval vagy anélkül, majd Másolás vagy JSON letöltése.
A számlálók megmutatják a Csomópontok számát, a fa Maximális mélység értékét és a Legfelső szintű utasítások számát.
Mi az az absztrakt szintaxisfa?
Mielőtt egy JavaScript-motor, egy linter vagy egy bundler bármit kezdhetne a kóddal, a szöveget csomópontok fájává elemzi. Minden csomópontnak van egy type értéke (VariableDeclaration, CallExpression, Identifier…), a gyermekcsomópontok pedig elnevezett tulajdonságokban találhatók. A total += size; sorból egy ExpressionStatement lesz, amelynek expression tulajdonsága egy AssignmentExpression a += operátorral, a left oldalon a total, a right oldalon a size azonosítóval. A zárójelek, a pontosvesszők és a megjegyzések eltűnnek: a fa csak a lényeges szerkezetet őrzi meg, ezért nevezik absztraktnak.
Ez az eszköz az Acorn elemzőt használja, amely számos JavaScript-eszköz mögött álló kicsi és gyors parser, ecmaVersion: "latest" beállítással. A kimenet az ESTree formátumot követi, amelyet az Espree (az ESLint elemzője) is előállít, és a legtöbb kódátalakító eszköz érti. A pontos csomóponttípusok ismerete nélkülözhetetlen, ha ESLint-szabályt, Babel- vagy jscodeshift-átalakítót, Prettier-bővítményt vagy bármilyen kódelemző szkriptet írsz.
Pozíciók, tartományok és JSON-exportálás
Minden csomópont tartalmaz egy start és egy end értéket: az első karakter és az utolsó utáni karakter eltolását a forrásban, valamint egy loc objektumot a sorokkal (1-től) és az oszlopokkal. A JSON-ban az oszlopok 0-tól indulnak, ahogy az Acorn kimenetében, a Kijelölt csomópont panel viszont 1-től mutatja őket, mint a legtöbb szerkesztő. Ha kikapcsolod a Pozíciók mellékelése (start, end, loc) opciót, könnyebb JSON-t kapsz, amelyet egyszerűbb összehasonlítani a kód két változata között.
Néhány érték nem írható le JSON-ként: a reguláris kifejezés literálok "value": null értéket kapnak (a regex tulajdonság megőrzi a mintát és a flageket), a BigInt literálok pedig szövegként szerepelnek, ahogy az ESTree specifikáció javasolja.
Korlátok és adatvédelem
A kódot a böngésződben elemzi az eszköz, soha nem futtatja le, és nem is küldi el sehová: az elemző csak a szöveget olvassa. A bemenet legfeljebb egymillió karakter lehet. A nagyon nagy fákat igény szerint jeleníti meg, egyszerre egy gyermekcsoportot, a túl nagy JSON pedig előnézet nélkül is letölthető. A JSX és a TypeScript nem szabványos JavaScript, ezért az Acorn szintaxishibaként jelzi őket.
Gyakori kérdések
Miért kapok „Szintaxishiba az 1. sor 1. oszlopában” üzenetet?
A kód nem érvényes JavaScript a kiválasztott forrástípusnál. Az üzenet megadja a sort, az oszlopot és az Acorn magyarázatát. Gyakori ok, hogy import vagy export szerepel a kódban, miközben a Szkript (klasszikus) van kiválasztva, vagy TypeScript-típusmegjegyzések, illetve JSX van benne, amelyeket az Acorn nem elemez.
Mi a különbség a Modul és a Szkript között?
A modulok mindig szigorú módban futnak, engedik az import, az export és a legfelső szintű await használatát, a with utasítást és a nyolcas számrendszerű literálokat pedig tiltják. A szkriptek a klasszikus <script> módot jelentik. A fa a választást a Program csomópont sourceType tulajdonságában is rögzíti.
Lefut a kód?
Nem. Az elemzés csak adatszerkezetté alakítja a szöveget. Semmi sem értékelődik ki, egyetlen függvény sem hívódik meg, és hálózati kérés sem indul, ezért biztonságosan vizsgálhatsz megbízhatatlan, sőt akár rosszindulatú kódot is.
Megjelennek a megjegyzések a fában?
Nem. Az ESTree nem csatol megjegyzéseket a csomópontokhoz, így azok nem részei a fának. A csomópont forrásszövegében viszont láthatod őket a Kijelölt csomópont panelen.
Melyik JavaScript-verziót támogatja?
Az Acorn a legújabb általa ismert ECMAScript-verzióra van állítva. Ez magában foglalja az opcionális láncolást, a nullish coalescinget, a BigInt típust, az osztálymezőket és a privát metódusokat, a legfelső szintű awaitet, a reguláris kifejezések olyan flagjeit, mint a v, és más új szintaxist.
Kapcsolódó eszközök
- JavaScript formázó és tömörítő Szépítsd a tömörített JavaScriptet, tömörítsd Terserrel, vagy ellenőrizd a szintaxisát a hibák pontos sorával és oszlopával. Csak a böngésződben fut.
- Regex-vizualizáló Alakíts egy JavaScript reguláris kifejezést áttekinthető vasúti diagrammá csoportokkal, ciklusokkal és lookaroundokkal, majd exportáld SVG-ként vagy PNG-ként.
- JSON formázó és validátor Ingyenes JSON formázó és validátor, amely a böngésződben szépít, tömörít és ellenőriz JSON-t, a szintaxishibákat sor és oszlop szerint jelezve.