[SP-pm] [Duvida] Sistema MVC com routing dinamico usando HTTP::Server::Simple::CGI e Xslate!
Eden Cardim
edencardim at gmail.com
Wed Oct 19 19:24:50 PDT 2011
>>>>> "Rafael" == Rafael Silveira <design.silveira em gmail.com> writes:
Rafael> Galera, eis me aqui de novo!
Rafael> Como estão!
Rafael> Pode parecer um tanto estranho eu querer usar
Rafael> HTTP::Server::Simple::CGI e Xslate; Criar um ambiente MVC do
Rafael> zero; Quando se tem Catalyst ou Dancer. Porem é aquilo, eu
Rafael> estou querendo aprender perl para web, e o melhor jeito de
Rafael> se fazer isso (no meu ponto de vista), é criar um sistema
Rafael> MVC utilizando essas libs.
Rafael> Queria saber se é possível usar o modulo
Rafael> HTTP::Server::Simple::CGI, para carregar classes
Rafael> (controllers) de forma mvc.
Não, esse módulo é uma implementação server-side de HTTP, mas você pode
integrar ele com outros módulos que façam isso.
Rafael> Por exemplo:
Rafael> http://localhost:3000/Postagens/listagem
Rafael> A url acima, faz um request para meu App usando
Rafael> HTTP::Server::Simple::CGI que está escutando na porta 3000.
Rafael> Ele le a uri (Postagens/listagem), parseia ela, e define que
Rafael> Postagens é meu módulo (controller) e listagem é o método do
Rafael> meu módulo.
Só toma cuidado com esse tipo de coisa, que é bem fácil você abrir uma
falha de segurança. A depender de como você implementou, sua app pode
estar aberta à execução de subrotinas arbitrárias.
Rafael> Resumindo, faço isso dinamicamente, sem definir rotas.
Rafael> Caso passe só Postagens na uri, ele chama o metodo default
Rafael> (index por exemplo).
Rafael> Gostaria tbm de usar moose para estruturar meus módulos (controllers).
Rafael> Mas não sei nem por onde começar.
Rafael> Talvez uma estrutura tipo.
Rafael> /root
Rafael> /lib
Rafael> /config
Rafael> defaults.yml
Rafael> database.yml
Rafael> /controllers
Rafael> Postagens.pm
Rafael> /views
Rafael> Default.tt
Rafael> /models (nao to qrendo ver isso no momento)
Rafael> app.pl
Rafael> Sugestões?
Recomendo você usar o padrão de módulos do cpan pra estrutura de
arquivos da sua app. Assim qualquer desenvolvedor perl minimamente
decente vai saber onde olhar dentro da árvore de source. É algo da
forma:
lib/ -- módulos
t/ -- testes
script/ -- executáveis
Makefile.PL ou dist.ini ou Build.PL -- listagem/instalação de dependências
MANIFEST -- listagem de todos os arquivos distribuíveis
Changes -- log de mudanças entre releases
README -- primeiro arquivo que alguém vai ler
É bem recomendável que você use o Dist::Zilla porque ele facilita uma
porção de coisas pra você na hora de estruturar isso.
Rafael> Realmente eu gostaria de fazer dessa forma, para depois
Rafael> aprender a usar um Catalyst, Dancer.
Eu acho perda de tempo. Vai ser mais rápido você aprender a estruturar
uma aplicação depois de você aprender a usar algo como o Catalyst e
depois olhar pro source pra ver como é implementado. Digo Catalyst
especificamente porque o Dancer é bem ruinzinho em termos da estrutura
interna e qualidade do código em geral. Outro módulo que vale a pena uma
olhada na doc e no source é o Plack.
--
Eden Cardim
Software Engineer
http://bit.ly/edencardim
http://twitter.com/#!/edenc
+55 73 9986-3963
More information about the SaoPaulo-pm
mailing list