O Quasar é um framework Vue.js e sem dúvidas é uma das melhores soluções para criar aplicações. Com ele podemos construir aplicações incríveis e leves. Ele possui suporte para navegadores, dispositivos móveis, e aplicativos desktops, uma ótima documentação, com vários exemplos, é muito fácil de aprender, fácil personalização de seus componentes e o mais importante, é baseado em Vue.js.

Instalação e configuração

Para instalar o Quasar podemos usar o npm ou Yarn, como pode ser visto nos Códigos 1 e 2.

npm install -g @quasar/cli
Código 1. Utilizando o npm para instalar o Quasar
 
  yarn global add @quasar/cli
Código 2. Utilizando o Yarn para instalar o Quasar

Após a instalação, vamos rodar o comando do Código 3 para criar um projeto Quasar.

quasar create <nome_do_projeto>
Código 3. Criando um projeto Vue.js utilizando o Quasar

Ao rodar o comando, ele nos fará algumas perguntas como pode ser visto na Figura 1.

Perguntas feitas quando criamos um novo projeto
Figura 1. Perguntas feitas quando criamos um novo projeto

Após responder as perguntas começará a fazer o download do projeto. Esse comando cria uma aplicação com uma estrutura de pastas bem parecida com um projeto Vue.js (componentes, views) e o vue-router instalado e configurado.

Veja na Figura 2 a estrutura padrão das pastas criadas pelo Quasar.

Estrutura inicial criada pelo Quasar
Figura 2. Estrutura inicial criada pelo Quasar

Finalizado o download, entre na pasta que foi criado o projeto e rode o comando do Código 4.

quasar dev
Código 4. Executando a aplicação

Esse comando fará o build da nossa aplicação na porta http://localhost:8080. Veja na Figura 3 a aplicação criada sendo executada no navegador.

Aplicação sendo executada no navegador
Figura 3. Aplicação sendo executada no navegador

Utilizando o Quasar

O Quasar tem uma gama de componentes Vue.js prontos para serem usados e configurados através de props, slots e eventos.

Veremos alguns exemplos de como utilizá-los. Neste primeiro exemplo, vamos utilizar uma tabela como pode ser visto na Figura 4.

Exemplo de uma tabela criada utilizando o Quasar
Figura 4. Exemplo de uma tabela criada utilizando o Quasar

Para replicar o exemplo da tabela, limpe o arquivo index.vue e insira o Código 5.


  <template>
   <div class="q-pa-md">
     <q-table title="Usuários" :rows="rows" :columns="columns" row-key="nome" />
   </div>
  </template>
   
  <script>
  import { defineComponent } from "vue";
   
  export default defineComponent({
   name: "Usuários",
   data() {
     return {
       rows: [
         {
           nome: "Luiz Medeiros",
           email: "luiz@email.com",
           telefone: 999999999,
           funcao: "Programador",
         },
         {
           nome: "Rebeca Maria",
           email: "rebeca@email.com",
           telefone: 2222222222,
           funcao: "Web Designer",
         },
         {
           nome: "Lucas Santos",
           email: "lucas@email.com",
           telefone: 3333333333,
           funcao: "Programador Android",
         },
       ],
       columns: [
         {
           name: "nome",
           align: "left",
           label: "Nome",
           field: "nome",
           sortable: true,
         },
         {
           name: "email",
           align: "left",
           label: "E-mail",
           field: "email",
           sortable: true,
         },
         {
           name: "telefone",
           align: "left",
           label: "Telefone",
           field: "telefone",
           sortable: true,
         },
         {
           name: "funcao",
           align: "left",
           label: "Função",
           field: "funcao",
           sortable: true,
         },
       ],
     };
   },
  });
  </script>
  
Código 5. Exemplo de código que exibe uma tabela utilizando o Quasar

Entenda como o código foi criado: na linha 3 chamamos o componente q-table, que é o componente do Quasar para renderizar uma tabela. Nele passamos algumas props, como rows (linhas da tabela), columns (o cabeçalho da tabela), title para mostrar um título no componente (essa props não é obrigatória), e por fim o row-key com o nome. A propriedade row-key deve ser única.

Estrutura das colunas

A estrutura da props columns, que no caso são os cabeçalhos da nossa tabela, tem que ser um array de objetos, onde cada objeto representa uma coluna. A estrutura desse objeto é a seguinte:

  • name: identificação da coluna, deve ser único, usado pelo Quasar na paginação e ordenação dos dados;
  • align: alinhamento da label, que pode ser left, right ou center (opcional);
  • label: o nome que aparecerá no cabeçalho;
  • field: para determinar o valor de qual linha da propriedade rows ele pegará;
  • sortable: define se queremos que essa coluna tenha a opção de ordenação (opcional).

Existem outras configurações para as columns, como required, style, classes e format. Vale a pena conferir na documentação.

Quasar Plugins

Outro recurso legal do Quasar são os seus plugins, que são instalados no projeto sem precisar executar um comando no terminal. Veja alguns exemplos de plugins disponíveis:

  • Loading Bar - exibe uma barra de progresso enquanto é feita requisições Ajax;
  • Dialog: exibe um modal na tela;
  • Local/Session Storage Plugins: armazena localmente dados;
  • Notify: exibe mensagens animadas na forma de notificação.

Vamos usar como exemplo o plugin Notify, que é útil para alertar sobre um evento. Primeiro precisamos instalá-lo e para isso vá até o arquivo quasar.conf.js na raiz do projeto e procure pelo array plugins. Registre o nome do plugin dentro dele como mostra o Código 6.


  …
      plugins: [
          'Notify'
      ]
  ...
  
Código 6. Inserindo o nome do plugin (Notify) no array plugins

Pronto, o plugin Notify já está instalado sem precisar rodar um comando no npm ou Yarn para isso. Para usá-lo vá até o componente que deseja usar e faça a importação do plugin, como mostra o Código 7.

import { Notify } from 'quasar'
Código 7. Importando o Notify

Para mostrar a notificação basta utilizar o método exibido no Código 8.

Notify.create('Operação Realizada com Sucesso!')
Código 8. Utilizando o Notify

Veja no Código 9 um exemplo completo de como utilizar o plugin em um componente.


  <template>
   <div class="q-pa-md">
     <q-btn color="purple" @click="showNotify" label="Show Notification" />
   </div>
  </template>
   
  <script>
  import { Notify } from 'quasar'
   
  import { defineComponent } from 'vue'
  export default defineComponent({
   name: 'Plugin',
   data(){
     return {
   
     }
   },
   methods: {
     showNotify(){
       Notify.create('Operação Realizada com Sucesso!')
     }
   }
  })
  </script>
Código 9. Exemplo de um componente que utiliza o plugin Notify

A seguir vamos entender o que cada linha está fazendo:

Linha 3: inserimos um botão (componente q-btn do Quasar), que ao ser clicado chama o método showNotify;
Linha 8: importamos o plugin Notify;
Linha 19: criamos o método showNotify, que será chamado pelo botão (q-btn);
Linha 20: chamamos o plugin Notify.create e passamos para ele a mensagem que queremos exibir.

Ao clicar no botão a mensagem vai aparecer na tela como pode ser visto na Figura 5.

Mensagem sendo exibida no navegador
Figura 5. Mensagem sendo exibida no navegador

Podemos também passar algumas configurações para o plugin, como por exemplo, alterar a cor da notificação como mostra o Código 10.


  Notify.create({
         type: "info",
         message: "Operação Realizada com sucesso",
  });
Código 10. Alterando a cor da notificação

Ou até mesmo, a posição da notificação na tela, como mostra o Código 11.

Notify.create({
         position: 'top-right',
         type: "info",
         message: "Operação Realizada com sucesso",
});
Código 11. Alterando a posição da notificação na tela

Veja exemplos de outras configurações disponíveis para o plugin notify:

  • icon: announcement - adiciona um icon à mensagem;
  • timeout: 2500 - é o tempo em milissegundos para a notificação sumir;
  • html: true - caso queiramos usar HTML na mensagem;
  • progress: true - mostra uma barra de progresso de quando a mensagem desaparecerá.

Você pode consultar mais configurações e exemplos na documentação do Quasar.

Builds no Quasar

Como mencionado antes, o Quasar tem suporte para várias plataformas, e tem dois tipos de builds para cada uma delas (desenvolvimento e produção) e tudo é feito pela linha comando.

Veja os comandos usados para builds em desenvolvimento:

  • quasar dev - cria uma aplicação padrão em SPA;
  • quasar dev --port=8000 - define a porta;
  • quasar dev -m ssr - cria uma aplicação SSR (server side render);
  • quasar dev -m pwa - cria uma aplicação PWA (progressive web application);
  • quasar dev -m android - cria uma aplicação Android;
  • quasar dev -m ios - cria uma aplicação iOS;
  • quasar dev -m electron - cria uma aplicação Electron.

Para criar aplicações para produção são os mesmos comandos, só que substituímos a palavra dev por build, exemplo: quasar build, que cria uma aplicação SPA pronta para produção.

Conclusão

O Quasar é a solução número 1 para projetos Vue.js, pois possui uma gama de componentes e suporte a várias aplicações. Podemos construir PWA, SSR, aplicativos para Android e iOS com o mesmo código e tudo através do seu CLI, com uma linha comando. Além disso, possui uma comunidade bastante ativa e também uma documentação muito bem escrita, valendo a pena dar uma conferida.

Confira também