Laravel Livewire é um framework Laravel full-stack para construção de interfaces dinâmicas. Em um passado não tão distante, para construir um aplicativo com o Laravel, você tinha que:
Escreva modelos de Blade e renderize seu aplicativo no lado do servidor
Escreva seu back-end como APIs que aceitam e respondem com JSON e, em seguida, tenha uma estrutura de front-end como Vue, React ou Angular para consumir as APIs e implementar a UI
Mas agora, temos uma terceira opção: Livewire. Eu adoraria aprofundar os prós e os contras das opções 1 e 2 acima, mas isso já foi feito justiça em esta postagem bem escrita aqui .
Neste artigo, vamos mergulhar fundo no Livewire e ver como ele pode ser aplicado em aplicativos do mundo real.
O que construiremos
Criaremos um aplicativo de blog simples com os seguintes recursos:
Qualquer pessoa pode criar uma conta e fazer login
Usuários conectados podem criar e atualizar suas próprias postagens
Qualquer pessoa pode ler postagens
Pré-requisitos e configuração
Este tutorial assume que você tem bastante experiência com o Laravel (observe que este tutorial usa o Laravel 7.x). Nenhuma experiência anterior com Livewire é necessária-acho que é por isso que estamos aqui de qualquer maneira.
Claro, para começar, precisamos ter nosso ambiente de desenvolvimento configurado. Primeiro, crie um novo aplicativo Laravel:
Em seguida, instale o pacote Livewire com composer:
composer requer livewire/livewire
Crie um novo banco de dados e adicione suas credenciais de banco de dados ao arquivo .env . E isso é tudo de que precisamos para começar “Livewiring”!
Como funciona o Livewire?
Antes de começar, é bom ter uma ideia de como o Livewire faz seu trabalho. Resumindo:
Livewire renderiza a saída do componente inicial para a página-sim, como o típico modelo Blade renderizado por servidor
Quando ocorre uma interação, o Livewire faz uma solicitação AJAX ao servidor com dados atualizados
O servidor renderiza novamente o componente e responde com HTML atualizado
O Livewire então muda de forma inteligente o DOM de acordo com o que mudou
Como você pode ver, é como ter seu front-end e back-end em um só lugar, sem a necessidade de repetir a lógica.
Conceitos chave no Livewire
Ativando Livewire em uma página
Para fazer o Livewire funcionar em uma página, você precisa incluir os estilos e scripts do Livewire em cada página que precisar deles. Normalmente, eles iriam para o seu modelo base. Você faria isso usando @livewireStyles e @livewireScripts :
O Livewire faz tudo de bom em torno de seus componentes. Os componentes Livewire são bastante semelhantes aos componentes baseados em classes do Laravel Blade. Vamos dar uma olhada rápida nos dois.
Criando um componente Laravel Blade
Você criaria um componente Laravel Blade executando o seguinte comando:
php artisan make: componente Alert
Isso criará um novo arquivo de classe Alert.php e o colocará na pasta App \ Views \ Components . Em seguida, um modelo de visão correspondente é criado e colocado em resources/views/components . Para exibir o componente, você pode usar esta sintaxe Blade: .
Você pode explorar mais os componentes do Laravel Blade na documentação .
Criação de um componente Livewire
Para criar um componente Livewire, execute o seguinte comando:
php artisan make: livewire Alert
O comando também criará dois novos arquivos: app \ Http \ Livewire \ Alert.php e um modelo de visualização resources/views/livewire/alert.php .
Você pode renderizar um componente Livewire usando ou @livewire ('alert') .
Como você pode ver, os comandos são bastante semelhantes. A única grande diferença é que, com os componentes Livewire, há uma sincronização em tempo real (nenhuma atualização de página necessária) entre a classe do componente e seu modelo de visualização Veremos como isso funciona em breve.
Propriedades Livewire
As propriedades públicas em suas classes de componentes são disponibilizadas para a visualização do modelo do componente. Não para por aí-o valor da propriedade é sincronizado em tempo real com a vista da propriedade, de forma que quando você atualiza o valor da propriedade na vista, ele é atualizado automaticamente na classe do componente.
//App\Http\Livewire\Alert.php
{{$ message}}
Para vincular uma propriedade de componente a um elemento de entrada html, você usaria o seguinte sintaxe:
wire: model="nome da propriedade"
Ao digitar na caixa de entrada, você verá o valor de $ message sendo atualizado em tempo real. Isso é muito semelhante ao conceito de vinculação de dados em estruturas como Vue.js, React e Angular. Saiba mais sobre as propriedades Livewire aqui .
Ações Livewire
Assim como você pode vincular dados no modelo de visualização a propriedades públicas de componentes, você também pode mapear eventos do lado do cliente para métodos em seus componentes. Por exemplo, você pode responder a eventos de clique, eventos keyup e keydown etc. usando métodos definidos em sua classe de componente.
Na classe de componente acima, criamos um método toggleLike () que alterna o valor da propriedade likes para seu valor booleano oposto. Na visualização do modelo, temos um botão e um ícone de coração que é colorido de vermelho ou cinza com base no valor da propriedade likes .
Usamos a sintaxe wire: click=[action name] para vincular o método toggleLike ao evento de clique.
Muitos casos de uso do Livewire giram em torno de propriedades e ações e, como tal, são muito importantes para entender. Esses conceitos podem ser aplicados a coisas como criar formulário , editar formulário , excluir formulário , etc. Leia mais sobre ações Livewire aqui .
Validação de dados
O Livewire torna a validação de dados perfeita. Para validar os dados vindos de uma visão de modelo de formulário, você deve escrever uma propriedade $ rules que contém suas regras de validação, assim como faria no Laravel. Depois disso, você chama $ this → validate () no método que faz a validação.
Vejamos um formulário para criar uma postagem no blog:
No código do formulário acima, quando o usuário envia a postagem, e ela não passa na validação, os erros de validação são exibidos, tudo sem uma atualização da página.
Primeiros passos com Laravel Livewire
Já disse o suficiente-vamos entrar em ação. Você pode acompanhar no repositório GitHub enquanto construímos nosso aplicativo de demonstração.
Como queremos que os usuários conectados possam gerenciar suas próprias postagens, eles devem primeiro criar uma conta. Usaremos o sistema de autenticação integrado do Laravel para isso.
Primeiro, instale o pacote laravel/ui composer:
compositor requer laravel/ui
Em seguida, execute php artisan ui vue--auth para fazer o scaffold de todo o sistema de autenticação, seguido por php artisan migrate para fazer suas migrações de banco de dados.
N.B ., a maioria das coisas que costumávamos fazer com os controladores agora serão feitas com componentes Livewire.
Vamos continuar criando o modelo necessário para nosso aplicativo de postagens de blog, App \ Post :
Estaremos criando um componente para cada ação do blog que desejamos, ou seja, criar postagem, editar postagem, listar postagens e visualizar postagem. Vamos continuar e criar os componentes:
php artisan make: livewire CreatePost
php artisan make: livewire EditPost
php artisan make: livewire ListPost
php artisan make: livewire HomePost
php artisan make: livewire ReadPost
Podemos renderizar um componente Livewire diretamente de rotas como esta:
Em vez de chamar as ações do controlador, iremos rotear para os componentes Livewire, como mostrado acima. Vamos agora adicionar todas as rotas de que precisamos em web.php :
Route:: get ('/', function () { visualização de retorno ('índice');
});
Auth:: routes ();
Route:: get ('/post/{slug}', [\ App \ Http \ Livewire \ ReadPost:: class,'__invoke']);
Route:: get ('/home','HomeController @ index')-> nome ('home');
Route:: get ('/posts/create', [\ App \ Http \ Livewire \ CreatePost:: class,'__invoke'])-> middleware ('auth');
Route:: get ('/posts/{id}/edit', [\ App \ Http \ Livewire \ EditPost:: class,'__invoke'])-> middleware ('auth');
O componente para renderizar a lista de artigos terá a seguinte aparência:
No componente acima, criamos variáveis públicas para conter o título e o conteúdo do corpo de uma postagem do blog, bem como uma variável sucesso para indicar se a criação da postagem foi bem-sucedida.
No método render () , Livewire nos permite especificar o arquivo de layout a ser usado na renderização do componente e a seção onde queremos que ele seja exibido por meio do extends () e section () , respectivamente.
Agora, a visualização do modelo se parece com isto:
Se você navegar em seu navegador para /posts/create , deverá ver o formulário de criação exibido:
Este é um exemplo bastante básico de como o Livewire pode ser aplicado no mundo real.
Conclusão
O Livewire preenche a lacuna entre o back-end e o front-end. Você obtém o benefício da interatividade em tempo real sem ter que escrever muito JavaScript sozinho. Se você já usou o Vue.js antes, é muito fácil ver os benefícios do Livewire.
O Livewire não é uma ótima escolha para aplicativos que exigem muito do cliente. Mas em situações em que você deseja um aplicativo renderizado por servidor com uma pitada de reatividade, o Livewire o atenderá bem.
Novamente, o aplicativo que desenvolvemos neste tutorial pode ser encontrado em G it H ub .
Reconhecidamente, este será um começo lento, mas o Google está lançando dois planos de fundo virtuais incrivelmente legais para o Google Meet no Android e no iOS que permitem aos usuários não apenas alterar seus Read more…
De acordo com o estudo mais recente conduzido pela Chainalysis, usuários involuntários gastaram cerca de US$ 4,6 bilhões em criptomoedas, adquirindo-as em esquemas fraudulentos no ano passado, que resultaram na criação de mais de 1,1 Read more…
O principal mercado de NFT, OpenSea, fez alguns anúncios importantes nas últimas horas. Por meio de sua conta oficial no Twitter, a OpenSea listou várias alterações em sua estrutura de taxas e royalties, que devem Read more…