Passa al contenuto

Sintassi dei SFC ​

Panoramica ​

I Single-File Component (SFC) di Vue, solitamente con l'estensione di file *.vue, è un formato di file personalizzato che utilizza una sintassi simile a HTML per descrivere un componente Vue. Un SFC di Vue è sintatticamente compatibile con HTML.

Ogni file *.vue è composto da tre tipi di blocchi di linguaggio di primo livello: <template>, <script>, e <style>, e facoltativamente da blocchi personalizzati aggiuntivi:

vue
<template>
  <div class="example">{{ msg }}</div>
</template>

<script>
export default {
  data() {
    return {
      msg: 'Ciao a tutti!'
    }
  }
}
</script>

<style>
.example {
  color: red;
}
</style>

<custom1>
  Questo potrebbe essere ad esempio la documentazione per il componente.
</custom1>

Linguaggio dei blocchi ​

<template> ​

  • Ogni file *.vue può contenere massimo un blocco <template>.

  • I suoi contenuti verranno estratti e passati al @vue/compiler-dom, pre-compilati in render function di JavaScript, e collegati al componente esportato come sua opzionerender.

<script> ​

  • Ogni file *.vue può contenere al massimo un blocco <script> (escludendo <script setup>).

  • Lo script viene eseguito come un ES Module.

  • Il default export dovrebbe essere un oggetto di opzioni del componente Vue, sia come oggetto semplice che come valore restituito da defineComponent.

<script setup> ​

  • Ogni file *.vue può contenere al massimo un blocco <script setup> (escludendo lo <script> classico).

  • Lo script viene pre-processato e utilizzato come la funzione setup() del componente, il che significa che verrà eseguito per ogni istanza del componente. Le associazioni al livello superiore in <script setup> vengono automaticamente esposte al template. Per ulteriori dettagli, consulta la documentazione dedicata a <script setup>.

<style> ​

  • Un singolo file *.vue può contenere più tag <style>.

  • Un tag <style> può avere gli attributi scoped o module (guarda Funzionalità CSS dei SFC per maggiori dettagli) per aiutare ad incapsulare gli stili all'interno del componente corrente. È possibile mescolare più tag <style> con diverse modalità di incapsulamento nello stesso componente.

Blocchi custom ​

Blocchi personalizzati aggiuntivi possono essere inclusi in un file *.vue per soddisfare esigenze specifiche del progetto, ad esempio un blocco <docs>. Alcuni esempi concreti di blocchi personalizzati includono:

La gestione dei blocchi personalizzati dipenderà dagli strumenti utilizzati. Se desideri creare le tue integrazioni personalizzate per i blocchi, consulta la sezione degli strumenti per integrazioni di blocchi personalizzati negli SFC per ulteriori dettagli.

Inferenza automatica del nome ​

Un SFC ricava automaticamente il nome del componente dal suo nome del file nei seguenti casi:

  • Formattazione degli avvisi durante lo sviluppo
  • Ispezioni tramite DevTools
  • Riferimento ricorsivo a sé stesso, ad es. un file chiamato FooBar.vue può fare riferimento a se stesso come <FooBar/> nel proprio template. Ciò ha una priorità inferiore rispetto ai componenti registrati/importati esplicitamente.

Pre-Processori ​

I blocchi possono dichiarare linguaggi di pre-processore utilizzando l'attributo lang. Il caso più comune è l'utilizzo di TypeScript per il blocco <script>:

template
<script lang="ts">
  // use TypeScript
</script>

lang può essere applicato su ogni blocco - per esempio possiamo usare <style> con Sass e <template> con Pug:

template
<template lang="pug">
p {{ msg }}
</template>

<style lang="scss">
  $primary-color: #333;
  body {
    color: $primary-color;
  }
</style>

Tieni presente che l'integrazione con diversi pre-processori può variare in base alla catena di strumenti utilizzata. Consulta la rispettiva documentazione per ulteriori esempi:

Gli import src ​

Se preferisci suddividere i tuoi componenti *.vue in file multipli, puoi utilizzare l'attributo src per importare un file esterno per un blocco di linguaggio:

vue
<template src="./template.html"></template>
<style src="./style.css"></style>
<script src="./script.js"></script>

Tieni presente che gli import src seguono le stesse regole di risoluzione del percorso delle richieste dei moduli webpack, il che significa:

  • I percorsi relativi devono iniziare con ./
  • Puoi importare risorse tramite dipendenze npm:
vue
<!-- importa un file dal pacchetto npm "todomvc-app-css" installato -->
<style src="todomvc-app-css/index.css" />

Gli import src funzionano anche con blocchi custom, per esempio:

vue
<unit-test src="./unit-test.js">
</unit-test>

Commenti ​

All'interno di ogni blocco, dovresti utilizzare la sintassi dei commenti del linguaggio in uso (HTML, CSS, JavaScript, Pug, ecc.). Per i commenti di primo livello, utilizza la sintassi dei commenti HTML: <!-- contenuto dei commenti -->

Sintassi dei SFC has loaded