JavaScript AST Explorer
Liitä JavaScript ja tutki sen abstraktia syntaksipuuta (ESTree, Acorn) selaimessa. Napsauta solmuja nähdäksesi koodin ja vie AST JSON-muodossa.
- Solmut
- –
- Enimmäissyvyys
- –
- Ylätason lauseet
- –
Napsauta solmua valitaksesi sen koodin. Napsauta koodia tai siirrä kursoria löytääksesi sitä vastaavan solmun.
Valitse solmu puusta tai napsauta koodia.
- Tyyppi
- Ominaisuus
- Alue (merkkien sijainnit)
- Sijainti
- Ominaisuudet
- Solmun lähdekoodi
ESTree JSON
Näin tutkit JavaScriptin AST:tä
- Liitä koodisi kenttään JavaScript-koodi tai napsauta Lataa esimerkki, jos haluat aloittaa pienestä moduulista.
- Valitse Lähdekoodin tyyppi: Moduuli (import/export, tiukka tila) ES-moduuleille tai Skripti (perinteinen) tavallisille skripteille, jotka voivat käyttää löyhän tilan ominaisuuksia, kuten
with-lausetta. - Puu päivittyy hetki sen jälkeen, kun lopetat kirjoittamisen. Napsauta Jäsennä, jos haluat ajaa jäsennyksen heti.
- Napsauta Syntaksipuu-näkymässä solmun pientä nuolta avataksesi tai sulkeaksesi sen. Napsauta solmun nimeä, niin vastaava koodi valitaan editorissa. Valittu solmu -paneeli näyttää solmun tyypin, ominaisuuden johon se kuuluu, merkkialueen, rivin ja sarakkeen, yksinkertaiset ominaisuudet (nimi, operaattori, raaka-arvo…) sekä solmun lähdekoodin.
- Toimii myös toisinpäin: napsauta mitä tahansa kohtaa koodissa, siirrä kursoria näppäimistöllä tai valitse koodinpätkä. Syvin solmu, joka sisältää kohdan, avautuu ja korostuu puussa.
- Avaa ESTree JSON nähdäksesi koko puun JSON-muodossa joko Sisällytä sijainnit (start, end, loc) -valinnalla tai ilman sitä. Sen jälkeen voit Kopioi-painikkeella kopioida tuloksen tai painaa Lataa JSON.
Laskurit näyttävät Solmut-määrän, puun Enimmäissyvyyden ja Ylätason lauseet.
Mikä on abstrakti syntaksipuu?
Ennen kuin JavaScript-moottori, linter tai bundleri voi tehdä koodillesi mitään, se jäsentää tekstin solmuista koostuvaksi puuksi. Jokaisella solmulla on type (VariableDeclaration, CallExpression, Identifier…) ja lapsisolmut nimetyissä ominaisuuksissa. Lauseesta total += size; syntyy ExpressionStatement, jonka expression on AssignmentExpression: operaattori on +=, left on tunniste total ja right tunniste size. Sulut, puolipisteet ja kommentit katoavat: puu säilyttää vain olennaisen rakenteen, ja siksi sitä sanotaan abstraktiksi.
Tämä työkalu käyttää Acornia, pientä ja nopeaa jäsennintä, jonka varassa toimivat monet JavaScript-työkalut. Asetuksena on ecmaVersion: "latest". Tuloste noudattaa ESTreetä, yhteistä muotoa, jota tuottaa myös Espree (ESLint) ja jota useimmat koodinmuunnostyökalut ymmärtävät. Tarkat solmutyypit on tunnettava, kun kirjoitat ESLint-sääntöä, Babel- tai jscodeshift-koodimuunnosta, Prettier-lisäosaa tai mitä tahansa koodia analysoivaa skriptiä.
Sijainnit, alueet ja JSON-vienti
Jokaisella solmulla on start ja end: ensimmäisen ja viimeisen merkin jälkeisen merkin sijainti lähdekoodissa. Lisäksi solmulla on loc-olio, jossa on rivit (alkaen 1:stä) ja sarakkeet. JSON-tulosteessa sarakkeet alkavat nollasta kuten Acornin tulosteessa, mutta Valittu solmu -paneeli näyttää ne ykkösestä alkaen, kuten useimmat editorit. Poista Sisällytä sijainnit (start, end, loc) -valinta, jos haluat kevyemmän JSONin, jota on helpompi vertailla koodin kahden version välillä.
Muutamia arvoja ei voi kirjoittaa JSONina: säännöllisten lausekkeiden literaaleille tulee "value": null (regex-ominaisuus säilyttää kuvion ja liput), ja BigInt-literaalit kirjoitetaan merkkijonoina ESTree-määrityksen suosituksen mukaisesti.
Rajat ja yksityisyys
Koodi jäsennetään selaimessasi. Sitä ei suoriteta eikä lähetetä minnekään: jäsennin vain lukee tekstin. Syötteen enimmäispituus on miljoona merkkiä. Hyvin suuret puut piirretään tarpeen mukaan, yksi lapsijoukko kerrallaan, ja liian suuren JSONin voi silti ladata tiedostona. JSX ja TypeScript eivät ole tavallista JavaScriptiä, joten Acorn ilmoittaa niistä syntaksivirheen.
Usein kysytyt kysymykset
Miksi saan virheen ”Syntaksivirhe riviltä 1, sarakkeesta 1”?
Koodi ei ole kelvollista JavaScriptiä valitulle lähdekoodin tyypille. Viestissä näkyvät rivi, sarake ja Acornin selitys. Yleinen syy on import tai export, kun valittuna on Skripti (perinteinen), tai TypeScript-tyyppimerkinnät ja JSX, joita Acorn ei jäsennä.
Mitä eroa on moduulilla ja skriptillä?
Moduulit ovat aina tiukassa tilassa, sallivat import-, export- ja ylätason await-lauseet ja kieltävät with-lauseen ja oktaaliliteraalit. Skriptit ovat perinteinen <script>-tila. Valinta tallentuu puuhun myös Program-solmun sourceType-ominaisuuteen.
Suoritetaanko koodi?
Ei. Jäsennys muuttaa tekstin vain tietorakenteeksi. Mitään ei arvioida, funktioita ei kutsuta eikä verkkopyyntöjä tehdä, joten epäluotettavaakin tai jopa haitallista koodia on turvallista tutkia.
Näkyvätkö kommentit puussa?
Eivät. ESTree ei liitä kommentteja solmuihin, joten ne eivät kuulu puuhun. Näet ne silti solmun lähdekoodissa Valittu solmu -paneelissa.
Mitä JavaScript-versiota tuetaan?
Acorn on asetettu uusimpaan tuntemaansa ECMAScript-versioon. Siihen kuuluvat muun muassa valinnainen ketjutus (optional chaining), nullish coalescing, BigInt, luokkakentät ja yksityiset metodit, ylätason await, säännöllisten lausekkeiden liput kuten v sekä muu uusi syntaksi.
Aiheeseen liittyvät työkalut
- JavaScript-muotoilija ja -pienentäjä Siisti pienennetty JavaScript, pienennä se Terserillä tai tarkista sen syntaksi virheen tarkalla rivillä ja sarakkeella. Toimii vain selaimessasi.
- Regex-junaratakaavio Muuta JavaScript-säännöllinen lauseke selkeäksi junaratakaavioksi, jossa näkyvät ryhmät, vaihtoehdot, toistot ja ympäristötarkistukset. Vie SVG- tai PNG-kuvana.
- JSON-muotoilija ja -validaattori Ilmainen JSON-muotoilija ja -validaattori, joka siistii, pienentää ja tarkistaa JSONin selaimessa ja ilmoittaa syntaksivirheet rivin ja sarakkeen kanssa.