Astro
Ar trebui să creezi o componentă de pagină sub src/pages/ ca punct de intrare al site-ului tău Astro. Codul tău Astro ar trebui să fie verificat folosind ESLint cu configurația Astro recomandată.
Fișierul de intrare
Fișierul de intrare pentru acest șablon este src/pages/index.astro. Astro asociază automat fișierele din src/pages/ cu rute în funcție de numele fișierului lor.
Un fișier Astro are două părți separate de delimitatori ---: frontmatter (JavaScript/TypeScript care rulează la momentul construirii/cererii) și șablonul (HTML-ul randat):
---
// frontmatter — runs in Node
---
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Astro</title>
</head>
<body>
<h1>Hello, World!</h1>
</body>
</html>Versiune
Rulează pe Node.js v22.0.0
Limbi suportate
Javascript
Framework de testare
Atenționări speciale și detalii de implementare
- Testele folosesc Astro Container API experimental (
experimental_AstroContainer) pentru a randa o pagină sub formă de șir de caractere fără a porni un server real. - Frontmatter rulează doar pe server — fără variabile globale de browser. Pentru a rula cod în browser, folosește o etichetă
<script>în șablon, pe care Astro o va include în pachetul pentru client. - Componentele Astro nu conțin JavaScript în mod implicit. Componentele UI din React/Svelte/Solid/Vue pot fi adăugate cu integrările oficiale și directivele
client:*atunci când este necesară interactivitatea.
Exemplu cu Vitest + Astro Container API:
import { describe, it, expect } from 'vitest';
import { experimental_AstroContainer as AstroContainer } from 'astro/container';
import Page from './src/pages/index.astro';
describe('index.astro', () => {
it('renders an <h1> containing "Hello, World!"', async () => {
const container = await AstroContainer.create();
const html = await container.renderToString(Page);
expect(html).toMatch(/<h1[^>]*>\s*Hello, World!\s*<\/h1>/);
});
});Biblioteci incluse
Cum se depanează
Componentele Astro au două faze de execuție — frontmatter (pe partea de server) și șablonul (HTML-ul randat, hidratat opțional). Fiecare fază scrie loguri în locuri diferite.
Frontmatter (server)
Frontmatter rulează în Node la momentul construirii/cererii. console.log apelat de aici apare în terminalul în care rulează astro dev:
---
const data = await fetch('/api/items').then((response) => response.json());
console.log('Fetched items:', data);
---Șablon (client)
Pentru loguri pe partea de browser, adaugă o etichetă <script> — Astro o împachetează și o trimite către client:
<script>
console.log('This runs in the browser');
</script>Pași pentru depanare folosind console.log
Identifică zona cu probleme: Decide dacă problema se află în frontmatter (pregătirea datelor) sau în HTML-ul randat / scriptul de client hidratat.
Introdu instrucțiuni
console.log(): Adaugă apeluri de logare în faza relevantă. Frontmatter → terminal;<script>→ instrumentele de dezvoltare din browser (devtools).Verifică rezultatul testelor (Results Output)
Folosește pictograma Debug din zona Preview: Fă clic pe pictograma de depanare (debug) din zona Preview pentru a verifica rezultatul din terminal sau deschide consola DevTools a browserului tău pentru logurile de client.
Analizează rezultatul: Compară logurile cu pagina randată pentru a depista datele lipsă, prop-urile greșite sau neconcordanțele de hidratare.
Iată un exemplu care combină ambele faze:
---
const message = 'Hello, World!';
console.log('Built message:', message); // logs in the terminal
---
<h1>{message}</h1>
<script>
console.log('Page loaded'); // logs in the browser
</script>