Saudações Leitores, depois de um longo tempo sem postar pois eu estava estudando algumas tecnologias novas como openWRT e onCloud (talvez tenhamos novos posts no futuro), agora retomo meus estudos com o projeto do angularjs/node.js/mongoDB.
Bem, a novidade ficará por conta das alterações que fiz no projeto passando a adotando o EJS com módulo de render das views. “Ops, o que você quis dizer”, calma que eu explico, o express do node.js possibilita criar um diretório público onde normalmente ficam os javascripts, css, imagens, etc., e um diretório chamado view onde podemos colocar as páginas (ou views, como queiram chamar) que serão mostradas aos usuários, o node.js possui módulos que facilitam a criação destas páginas baseadas em modelos, ou seja, você cria uma (ou mais) estrutura(s) básica de página em forma de “modelo” e o “conteúdo” da página pode ser alterado dinamicamente, esse objetivo é alcançado por exemplo com o módulo (seria mais correto chamar de engine) chamado Jade.
Outra forma de fazer o render de páginas usando modelos (ou templates) é utilizar o EJS. Eu optei por esta engine porque não vou usar os recursos de templates, vou fazer tudo utilizando html/angularjs, com o Jade, quando era feito os render’s das páginas, as tags do angularjs sumiam, mas isto não ocorre com o EJS, então optei por esta engine.
“Mas você não vai usar os recursos da engine, você poderia ter colocado tudo no diretório público”. Bem pessoal, eu gosto de cada coisa em seu lugar, pode parecer preciosismo, mas os diretórios público e view possuem os seus objetivos específicos, então prefiro manter assim, e claro, mais adiante se eu quiser brincar com o EJS ou o Jade já está tudo no mesmo lugar.
A princípio farei o acesso aos dados do sistema utilizando exclusivamente serviços REST, como no exemplo do logon, mas existe uma exceção, o acesso a qualquer página. Configurei as rotas do expressar para acessar o index quando digitado www.meudominio.com (ou simplesmente localhost:3000), mas para acessar o index eu preciso estar logado e para isto criei no controller de usuário uma função chamada “logged” para verificar se um determinado token de autorização é válido, este token é fornecido no login e deve ser guardado pela aplicação e enviado ao servidor em qualquer chamada REST ou acesso a página no header do request no parâmetro “authorization”, esta será a princípio a única função que não será executa por um serviço mas somente chamada dentro dos controllers de páginas, como no “home.js” do nosso projeto.
Para completar criei duas páginas que estão no diretório views/home, uma é a tela principal (que por enquanto possui somente a frase “estou logado” é a outra é o tela de logon (sem formação alguma, apenas os campos de usuário e senha).
Pessoal, continuarei a nossa aplicação agora dando mais a cara de um sistema, para isso vou usar os recursos do bootstrap, para quem deseja deseja conhecê-lo vou deixar o link aqui. Se alguém quiser saber um pouco mais de como eu construí a aplicação até aqui, porque escolhi este ou aquele módulo ou como/porque programei algo é só me escrever. O link para o GitHub da aplicação é este, você também pode brincar com a plicação desenvolvida até o momento neste link. Espero que tenham gostado, até o próximo post.
Siga-me no Twitter: @curioso_dgtal
Participe do nosso grupo no Google