{
  "url": "https://unifast.dev/it/docs/guides/syntax-highlighting/",
  "locale": "it",
  "title": "Evidenziazione della sintassi",
  "description": "Scegli tra quattro motori di evidenziazione della sintassi in unifast: tree-sitter, syntect, Shiki e highlight.js.",
  "section": "guides",
  "body": "unifast supporta quattro motori di evidenziazione della sintassi. Due vengono eseguiti all'interno del compilatore Rust (**tree-sitter**, **syntect**) e due in JavaScript (**Shiki**, **highlight.js**).\n\n### Confronto\n\n| | tree-sitter | syntect | Shiki | highlight.js |\n|---|-------------|---------|-------|--------------|\n| **Runtime** | Rust (integrato) | Rust (integrato) | JavaScript | JavaScript |\n| **Parsing** | Basato su AST (grammatiche tree-sitter) | Basato su regex (grammatiche TextMate) | Basato su regex (grammatiche VS Code) | Basato su regex (grammatiche highlight.js) |\n| **Velocità** | Il più veloce | Veloce | Più lento | Più lento |\n| **Linguaggi** | 29 linguaggi + fallback su syntect | 100+ (TextMate) | Grammatiche VS Code | 190+ |\n| **Output CSS** | Basato su classi (`ts-*`) | Basato su classi (`sy-*`) | Stili inline o basato su classi | Basato su classi (`hljs`) |\n| **Pacchetto** | `@unifast/node` | `@unifast/node` | `@unifast/shiki` | `@unifast/highlight` |\n| **Ideale per** | Evidenziazione precisa, ampia copertura | Configurazione semplice, avvio rapido | Controllo fine dei temi | Ecosistema di temi highlight.js |\n\n### Utilizzo di tree-sitter\n\ntree-sitter utilizza il parsing basato su AST per un'evidenziazione della sintassi precisa. Viene eseguito all'interno del compilatore Rust e supporta nativamente 29 linguaggi. Per i linguaggi non supportati, ripiega automaticamente su syntect.\n\ntree-sitter è incluso in `@unifast/node`, non è necessaria alcuna installazione separata.\n\n```ts\n\nconst result = compile(\n  '```typescript\\nconst x: number = 42;\\n```',\n  { plugins: [treeSitter()] }\n);\n```\n\ntree-sitter genera nomi di classi CSS con il prefisso `ts-`. È necessario fornire le regole CSS per queste classi nel proprio foglio di stile.\n\n#### Linguaggi supportati\n\nTypeScript, TSX, JavaScript, HTML, CSS, Python, Rust, JSON, YAML, Go, Ruby, TOML, Swift, PHP, Java, Lua, Scala, Zig, Elixir, OCaml, R, Make, Nix, Regex, Erlang, Bash, C, C++, CMake\n\nSono supportati anche gli alias dei linguaggi (ad esempio `ts`, `py`, `rs`, `sh`, `yml`, `rb`).\n\n### Utilizzo di syntect\n\nsyntect usa le grammatiche TextMate e viene eseguito interamente all'interno del compilatore Rust, senza alcun overhead JavaScript aggiuntivo.\n\nsyntect è incluso in `@unifast/node`, non è necessaria alcuna installazione separata.\n\n```ts\n\nconst result = compile(\n  '```typescript\\nconst x: number = 42;\\n```',\n  { plugins: [syntect()] }\n);\n```\n\nsyntect genera nomi di classi CSS con il prefisso `sy-`. È necessario fornire le regole CSS per queste classi nel proprio foglio di stile.\n\n### Utilizzo di Shiki\n\nShiki utilizza il motore di grammatiche TextMate di VS Code per un'evidenziazione accurata con supporto ai temi.\n\n```ts\n\nconst shiki = await createShikiPlugin({\n  theme: \"github-dark\",\n  langs: [\"typescript\", \"rust\", \"bash\"],\n});\n\nconst result = compile(\n  '```typescript\\nconst x: number = 42;\\n```',\n  { plugins: [shiki] }\n);\n```\n\n### Utilizzo di highlight.js\n\n`@unifast/highlight` usa [lowlight](https://github.com/wooorm/lowlight) (highlight.js) e funziona come trasformazione HAST in JavaScript. Supporta oltre 190 linguaggi e funziona con qualsiasi tema di highlight.js.\n\n```ts\n\nconst result = compile(\n  '```typescript\\nconst x: number = 42;\\n```',\n  { plugins: [highlight()] }\n);\n```\n\nhighlight.js genera nomi di classi con il prefisso `hljs`. Utilizza qualsiasi [CSS di un tema di highlight.js](https://highlightjs.org/demo) per lo styling.\n\n### Numeri di riga\n\nTutti i motori supportano i numeri di riga. Abilitali nelle opzioni di compilazione:\n\n```ts\n\nconst result = compile(source, {\n  plugins: [treeSitter()],\n  lineNumbers: true,\n});\n```\n\nOgni riga viene racchiusa in uno `<span>` con un attributo `data-line` per lo styling basato su CSS:\n\n```css\n[data-line]::before {\n  content: attr(data-line);\n  display: inline-block;\n  width: 2rem;\n  text-align: right;\n  margin-right: 1rem;\n  color: #6b7280;\n}\n```\n\n### Vedi anche\n\n- [syntect()](/docs/packages/node/syntect) - Riferimento API di syntect\n- [createShikiPlugin()](/docs/packages/shiki/create-shiki-plugin) - Riferimento API di Shiki",
  "alternates": [
    {
      "locale": "en",
      "url": "https://unifast.dev/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "ja",
      "url": "https://unifast.dev/ja/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/ja/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "zh-CN",
      "url": "https://unifast.dev/zh-CN/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/zh-CN/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "zh-TW",
      "url": "https://unifast.dev/zh-TW/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/zh-TW/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "ko",
      "url": "https://unifast.dev/ko/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/ko/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "fr",
      "url": "https://unifast.dev/fr/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/fr/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "it",
      "url": "https://unifast.dev/it/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/it/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "es",
      "url": "https://unifast.dev/es/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/es/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "pt-BR",
      "url": "https://unifast.dev/pt-BR/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/pt-BR/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "de",
      "url": "https://unifast.dev/de/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/de/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "ru",
      "url": "https://unifast.dev/ru/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/ru/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "hi",
      "url": "https://unifast.dev/hi/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/hi/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "id",
      "url": "https://unifast.dev/id/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/id/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "tr",
      "url": "https://unifast.dev/tr/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/tr/docs/guides/syntax-highlighting.json"
    },
    {
      "locale": "vi",
      "url": "https://unifast.dev/vi/docs/guides/syntax-highlighting/",
      "api": "https://unifast.dev//api/vi/docs/guides/syntax-highlighting.json"
    }
  ]
}
