Introdução
Neste tutorial, vamos explorar o mundo do Smalltalk e como usar Seaside, um framework web reativo para desenvolvimento ágil de aplicações, em conjunto com Pharo, uma das implementações mais populares do Smalltalk. A proposta é mostrar como criar um microframework que permitirá o desenvolvimento rápido e eficiente de aplicações web. Ao longo do artigo, abordaremos desde a configuração do ambiente de desenvolvimento até a implantação de uma aplicação. A experiência em Smalltalk e Seaside será enriquecedora, não só para novos desenvolvedores, mas também para aqueles que já trabalham com outras linguagens e desejam expandir seus horizontes em linguagens de programação orientadas a objetos puro.
Etapas
Configuração do Ambiente Pharo
Comece baixando e instalando a versão mais recente do Pharo. Acesse o site oficial do Pharo e siga as instruções para o seu sistema operacional. Depois de instalar, inicie a imagem do Pharo e explore a interface. Você deve ter também o Seaside carregado na sua imagem.
commandswget http://get.pharo.org/platform/69/Pharo-v9.0.0-linux64.zip
unzip Pharo-v9.0.0-linux64.zip
cd Pharo-v9.0.0
./PharoInstalação do Seaside
No ambiente Pharo, abra a ferramenta de carga de pacotes (Metacello) e execute os comandos abaixo para instalar o Seaside. Isso permitirá que desenvolvamos aplicações web usando o framework Seaside.
commandsMetacello new
baseline: 'Seaside';
repository: 'github://SeasideSt/Seaside:main';
load.Criação de um Projeto Básico com Seaside
Após a instalação do Seaside, vamos criar um componente básico utilizando o Seaside. Esse componente será uma simples página ‘Olá, Mundo!’. Criaremos uma nova classe chamada `HelloWorld` e configurá-la como uma aplicação Seaside.
HelloWorld.stObject subclass: #HelloWorld instanceVariableNames: '' HelloWorld >> renderContentOn: html html heading: 'Olá, Mundo!' html paragraph: 'Bem-vindo ao Seaside com Pharo!'
Configurando o Servidor Web
Com o componente criado, precisamos registrar essa aplicação no Seaside e configurar o servidor web. No Pharo, você pode usar o seguinte código para registrar a aplicação e iniciar o servidor.
commandsWADispatcher default register: (WAAppWrapper new app: HelloWorld new) as: 'hello'.
ZnServer startOn: 8080.Testando a Aplicação Web
Agora que a aplicação está registrada e o servidor está rodando, abra um navegador e acesse a URL http://localhost:8080/hello. Você deverá ver a página ‘Olá, Mundo!’ que criamos anteriormente.
commands# Abra o navegador e acesse a seguinte URL:
http://localhost:8080/helloImplementando Funcionalidade Adicional
Vamos agregar uma funcionalidade simples à nossa aplicação. Vamos criar um formulário que permite ao usuário enviar seu nome e receber uma saudação personalizada.
HelloWorld.stHelloWorld >> renderContentOn: html html heading: 'Diga Ola!' html form: [ html textInput: 'Digite seu nome'; html submit: 'Enviar'; html onClick: [ :input | html heading: ('Olá, ', input value) ] ].
Testes Unitários com Seaside
A criação de testes unitários é essencial. Vamos implementar um teste simples para a nossa aplicação usando a classe `TestHelloWorld` que verifica se a renderização da página ocorre como esperado.
TestHelloWorld.stObject subclass: #TestHelloWorld instanceVariableNames: 'app' TestHelloWorld class >> setUp app := HelloWorld new. TestHelloWorld class >> tearDown app := nil. TestHelloWorld >> testRender | response | response := app renderOn: WAHtmlCanvas new. self assert: (response = 'Olá, Mundo!').
Executando Testes
Após implementar os testes, execute-os para garantir que tudo funcione corretamente. Use o comando a seguir para executar os testes definidos.
commandsTestHelloWorld run.
Encerrando o Servidor
Por fim, ao concluir a implementação e testes da aplicação, não esqueça de parar o servidor para liberar os recursos.
commands# Para parar o servidor em execução:
ZnServer stop.
Conclusão
Neste tutorial, exploramos a linguagem Smalltalk e seu poderoso framework Seaside para o desenvolvimento ágil de aplicações. Passamos pela instalação do ambiente Pharo, criação de uma aplicação web básica, adição de funcionalidades e configuração de testes unitários. O Seaside proporciona uma forma única e reativa de desenvolver aplicações web e, ao usar o Pharo, você poderá aproveitar todo o poder do Smalltalk. Agora você está pronto para desenvolver aplicações mais complexas e explorar a riqueza dessa linguagem.