Iniciando um projeto com API Global


Introdução
Olá! Se está seguindo o roadmap e eu espero que esteja, deve ter já passado pela seção de leitura da documentação, onde separei alguns links para então chegarmos nessa parte, onde iremos iniciar um projeto usando o modo Global com a API CDN Vue.
O projeto aqui terá o nome ‘product_card’, mas você pode escolher o nome que preferir. Não se prenda a isso.
Explicações adicionais
Caso tenha lido a documentação, deve ter percebido que existem 2 modos de trabalhar com o Vue, sendo o primeiro o Single File Component, que é o que iremos trabalhar nessa publicação, onde o Vue.js se encarrega de toda a aplicação.
Já no caso do modo Global do Vue, utilizamos o link cdn da aplicação em um arquivo .html, ou .php e é você quem fica encarregado de algumas responsabilidades do Vue, como por exemplo o roteamento, é de forma geral, um Vue mais cru.
É importante ressaltar que em casos de utilização global do Vue via CDN, de certa forma, isso pode matar completamente o SEO do seu website, já que a renderização será 100% no cliente e os motores de busca podem não indexar corretamente seu conteúdo.
Mãos na massa
Para iniciarmos, irei considerar que você tem noção de html, css, javascript, npm a um nível médio/avançado, não entrarei em explicações sobre assuntos específicos na maior parte das vezes.
Iniciando um Projeto Vazio
Diferente da forma com Single File Component, normalmente se utiliza a forma Global quando se já tem um projeto funcionando e quer mais modularidade em uma página que não terão muita lógica iterativa, sites legados sem build, sites onde SEO não é uma preocupação, testes, provas de conceitos e etc... É muito comum se usar em Blades do Laravel, sites pequenos feitos em HTML, áreas autenticadas e etc... Eu reforço que em caso de Laravel, existem formas melhores como o Inertia, que é extremamente recomendado.
Para o nosso caso, primeiro é necessário criar o arquivo HTML, CSS e Javascript, e é justamente o que criaremos agora.
Criando arquivo HTML
Sem nenhum segredo, iremos criar um arquivo style.css
* { padding: 0; margin: 0; box-sizing: border-box; }
Um arquivo script.js
console.log('Hello World!');
E um arquivo index.html importando os outros 2 arquivos
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Product Card</title> <link rel="stylesheet" href="./style.css"> </head> <body> <script src="./script.js"></script> </body> </html>
Iniciando a criação da aplicação
Para então iniciarmos a aplicação, no html iremos importar o link CDN do Vue:
<script src="https://unpkg.com/vue@3/dist/vue.global.js"></script>
E adicionaremos a tag main com o id de app:
<main id="app"></main>
Ficará assim:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Product Card</title> <link rel="stylesheet" href="./style.css"> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> </head> <body> <main id="app"></main> <script src="./script.js"></script> </body> </html>
Finalizando essa parte, iremos ao script.js e primeiro, iremos atrubuir o Vue a uma variável:
const vue = Vue
Utilizaremos destructuring para então extrairmos o método createApp do Objeto Vue
const { createApp } = Vue;
Agora, iremos executar o método:
createApp();
E encadear a ele o método mount, passando para ele o id que definimos na tag main:
createApp().mount('#app');
Talvez você esteja vendo um pequeno alerta no seu console:
[Vue warn]: Component is missing template or render function: {template: ''} at <App>
Esse erro ocorre porque não há nada dentro da tag main, você pode corrigir simplesmente colocando um "Hello World!"
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Product Card</title> <link rel="stylesheet" href="./style.css" /> <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> </head> <body> <main id="app"> Hello World! </main> <script src="./script.js"></script> </body> </html>
Assim, finalizamos a criação da nossa aplicação vue
Tags
Sobre o Autor

Gabriel Estéfono
Desenvolvedor Web
Desenvolvedor com mais de 3 anos de experiência em HTML, CSS e JavaScript.