JavaScript AST-utforsker
Lim inn JavaScript og utforsk det abstrakte syntakstreet (ESTree, analysert med Acorn) i nettleseren din. Klikk på noder, se koden og eksporter AST som JSON.
- Noder
- –
- Maksimal dybde
- –
- Setninger på toppnivå
- –
Klikk på en node for å markere koden den representerer. Klikk eller flytt markøren i koden for å finne noden.
Velg en node i treet eller klikk i koden.
- Type
- Egenskap
- Område (tegnposisjoner)
- Plassering
- Egenskaper
- Kildekode for noden
ESTree JSON
Slik utforsker du et JavaScript-AST
- Lim inn koden din i JavaScript-kode, eller klikk Last inn eksempelet for å starte med en liten modul.
- Velg Kildetype: Modul (import/export, streng modus) for ES-moduler, eller Skript (klassisk) for vanlige skript som kan bruke funksjoner fra slapp modus, for eksempel
with. - Treet oppdateres et øyeblikk etter at du slutter å skrive. Klikk Analyser hvis du vil kjøre analysen med en gang.
- I Syntakstre klikker du på den lille pilen for å åpne eller lukke en node. Klikk på navnet til en node for å markere den tilhørende koden i editoren. Panelet Valgt node viser typen, egenskapen noden tilhører, tegnområdet, linje og kolonne, enkle egenskaper (navn, operator, råverdi …) og kildeteksten.
- Det virker også motsatt vei: klikk et sted i koden, flytt markøren med tastaturet eller marker et stykke kode, så åpnes og utheves den dypeste noden som inneholder det, i treet.
- Åpne ESTree JSON for å se hele treet som JSON, med eller uten Ta med posisjoner (start, end, loc). Deretter kan du kopiere det med Kopier eller bruke Last ned JSON.
Tellerne viser antall Noder, treets Maksimal dybde og antall Setninger på toppnivå.
Hva er et abstrakt syntakstre?
Før en JavaScript-motor, en linter eller en bundler kan gjøre noe med koden din, tolkes teksten til et tre av noder. Hver node har en type (VariableDeclaration, CallExpression, Identifier …) og barnenoder som ligger i navngitte egenskaper. For total += size; får du en ExpressionStatement der expression er en AssignmentExpression med operatoren +=, en venstreside left som er identifikatoren total, og en høyreside right som er identifikatoren size. Parenteser, semikolon og kommentarer forsvinner: treet beholder bare den strukturen som betyr noe, og det er derfor det kalles abstrakt.
Dette verktøyet bruker Acorn, den lille og raske parseren bak mange JavaScript-verktøy, med ecmaVersion: "latest". Resultatet følger ESTree, det felles formatet som også Espree (ESLint) lager, og som de fleste verktøy for kodetransformasjon forstår. Å kjenne de nøyaktige nodetypene er avgjørende når du skriver en ESLint-regel, en Babel- eller jscodeshift-codemod, en Prettier-plugin eller et hvilket som helst skript som analyserer kode.
Posisjoner, områder og JSON-eksport
Hver node har start og end, posisjonene til det første tegnet og tegnet rett etter det siste i kilden, og et loc-objekt med linjer (fra 1) og kolonner. I JSON-en starter kolonnene på 0, slik de gjør i Acorns utdata. Panelet Valgt node viser dem fra 1, som de fleste editorer gjør. Fjern avkrysningen for Ta med posisjoner (start, end, loc) for å få en lettere JSON som er enklere å sammenligne mellom to versjoner av koden.
Noen verdier kan ikke skrives som JSON. Regulære uttrykk får "value": null (egenskapen regex beholder mønsteret og flaggene), og BigInt-literaler skrives som strenger, slik ESTree-spesifikasjonen anbefaler.
Begrensninger og personvern
Koden analyseres i nettleseren din og blir aldri kjørt eller sendt noe sted: parseren leser bare teksten. Inndata er begrenset til én million tegn. Svært store trær tegnes etter behov, en gruppe barnenoder om gangen, og en JSON som er for stor til forhåndsvisning, kan fortsatt lastes ned. JSX og TypeScript er ikke standard JavaScript, så Acorn melder dem som syntaksfeil.
Ofte stilte spørsmål
Hvorfor får jeg «Syntaksfeil på linje 1, kolonne 1»?
Koden er ikke gyldig JavaScript for den valgte kildetypen. Meldingen oppgir linje, kolonne og Acorns forklaring. En vanlig årsak er import eller export når Skript (klassisk) er valgt, eller TypeScript-typer og JSX, som Acorn ikke leser.
Hva er forskjellen på modul og skript?
Moduler kjører alltid i streng modus, tillater import, export og await på toppnivå, og forbyr with og oktale tall. Skript er den klassiske <script>-modusen. Valget lagres også i egenskapen sourceType på Program-noden i treet.
Blir koden kjørt?
Nei. Analysen gjør bare teksten om til en datastruktur. Ingenting evalueres, ingen funksjon kalles og ingen nettverksforespørsel sendes, så det er trygt å inspisere kode du ikke stoler på, til og med skadelig kode.
Vises kommentarer i treet?
Nei. ESTree knytter ikke kommentarer til noder, så de er ikke en del av treet. Du kan likevel se dem i nodens kildetekst i panelet Valgt node.
Hvilken JavaScript-versjon støttes?
Acorn er satt til den nyeste ECMAScript-versjonen den kjenner. Den omfatter valgfri kjeding (?.), nullish coalescing, BigInt, klassefelt og private metoder, await på toppnivå, regulære uttrykk med flagg som v og annen nyere syntaks.
Relaterte verktøy
- JavaScript-formaterer og -minifiserer Gjør minifisert JavaScript lesbart, minifiser det med Terser, eller sjekk syntaksen og få nøyaktig linje og kolonne for feil. Kjører bare i nettleseren din.
- Regex-visualisering (jernbanediagram) Gjør et regulært uttrykk i JavaScript om til et tydelig jernbanediagram med grupper, alternativer, løkker og lookarounds, og eksporter det som SVG eller PNG.
- JSON-formaterer og -validator Gratis JSON-formaterer og -validator som gjør JSON ryddig, minifiserer og kontrollerer den i nettleseren din, med syntaksfeil oppgitt med linje og kolonne.