Especificação da Sintaxe
Visão Geral
Um componente de ficheiro único da Vue, tradicionalmente usando a extensão de ficheiro *.vue, é um formato de ficheiro personalizado que usa uma sintaxe semelhante ao HTML para descrever um componente da Vue. Um componente de ficheiro único da Vue é sintaticamente compatível com a HTML.
Cara ficheiro *.vue é composto por três tipos de blocos da linguagem de alto nível: <template>, <script>, e <style>, e opcionalmente blocos personalizados adicionais:
vue
<template> <div class="example">{{ msg }}</div> </template> <script> export default { data() { return { msg: 'Hello world!' } } } </script> <style> .example { color: red; } </style> <custom1> This could be e.g. documentation for the component. </custom1>Blocos de Linguagem
<template>
Cada ficheiro
*.vuepode conter no máximo um bloco<template>de alto nível.O conteúdo será extraído e passado ao
@vuw/compiler-dom, pré-compilado dentro de funções de interpretação de JavaScript, e anexado ao componente exportado como sua opçãorender.
<script>
Cada ficheiro
*.vuepoder conter no máximo um bloco<script>de alto nível (excluindo<script setup>).O programa é executado como um módulo de ECMAScript.
A exportação padrão deve ser um objeto de opções de componente da Vue, ou como um objeto simples ou como valor de retorno da
defineComponent.
<script setup>
Cada ficheiro
*.vuepode conter no máximo um bloco<script setup>(excluindo o<script>normal).O programa é pré-processado e usado como a função
setup()do componente, o que significa que será executado para cada instância do componente. Os vínculos de alto nível no<script setup>são automaticamente expostos ao modelo de marcação. Para mais detalhes, consulte a documentação dedicada ao<script setup>.
<style>
Um único ficheiro
*.vuepode conter vários marcadores de<style>.Um marcador
<style>pode ter os atributosscopedoumodule(consulte Funcionalidades de Estilo do Componente de Ficheiro Único por mais detalhes) para ajudar a encapsular os estilos ao componente atual. Vários marcadores de<style>com diferentes modos de encapsulamento podem ser misturados no mesmo componente.
Blocos Personalizados
Os blocos personalizados podem ser incluídos num ficheiro *.vue por qualquer necessidade específica do projeto, por exemplo um bloco <docs>. Alguns exemplos do mundo real de blocos personalizados incluem:
A manipulação dos blocos personalizados dependerá do ferramental - se quisermos construir as nossas próprias integrações de bloco personalizado, podemos consultar a seção de ferramental de integrações de bloco personalizado do Componente de Ficheiro Único por mais detalhes.
Inferência Automática de Nome
Um componente de ficheiro único infere automaticamente o nome do componente a partir do seu nome de ficheiro nos seguintes casos:
- Formatação do aviso de desenvolvimento
- Inspeção das ferramentas de programação
- Auto-referência recursiva, por exemplo, um ficheiro nomeado
FooBar.vuepode refer-se a si mesmo como<FooBar/>no seu modelo de marcação. Isto tem a menor prioridade do que os componentes registados ou importados explicitamente.
Pré-Processadores
Os blocos podem declarar linguagens pré-processadoras usando o atributo lang. O caso mais comum é usar TypeScript para o bloco <script>:
template
<script lang="ts"> // usar TypeScript </script>lang pode ser aplicado à qualquer bloco - por exemplo, podemos usar o <style> com a Sass e o <template> com a Pug:
template
<template lang="pug"> p {{ msg }} </template> <style lang="scss"> $primary-color: #333; body { color: $primary-color; } </style>Nota que a integração com os vários pré-processadores pode diferir conforme a cadeia de ferramenta. Consulte a respetiva documentação por exemplos:
Importações com src
Se preferirmos separar os nossos componentes *.vue em vários ficheiros, podemos usar o atributo src para importar um ficheiro externo para um bloco de linguagem:
vue
<template src="./template.html"></template> <style src="./style.css"></style> <script src="./script.js"></script>Devemos estar ciente de que as importações de src seguem as mesmas regras de resolução de caminho que as requisições de módulo da Webpack, o que significa que:
- Os caminhos relativos precisam começar com
./ - Nós podemos importar recursos a partir das dependências do npm:
vue
<!-- importar um ficheiro dum pacote "todomvc-app-css" instalado --> <style src="todomvc-app-css/index.css" />As importações de src também funcionam com os blocos personalizados, por exemplo:
vue
<unit-test src="./unit-test.js"> </unit-test>Comentários
Dentro de cada bloco usaremos a sintaxe de comentário da linguagem em uso (HTML, CSS, JavaScript, Pug, etc.). Para comentários de alto nível, usamos a sintaxe de comentário da HTML: <!-- eis o conteúdo do comentário -->