[Madrid-pm] Curso acelerado de Nes
Salvador Fandiño
sfandino en yahoo.com
Vie Feb 19 01:42:02 PST 2010
Skriptke wrote:
> Lo primero que ha sido un placer conoceros, pero tengo una espinita
> clavada con Diego cuando me confeso que no supo hacer funcionar Nes, y
> yo que presumo de que es fácil de usar... :-)
>
> Que es Nes:
>
> Un sistema para la separación del código ejecutable Perl y la
> representación de los datos generados en HTML mediante Tags HTML que son
> reemplazados por variables creadas en Perl.
>
> De momento no es ninguna otra cosa.
>
> http://nes.sourceforge.net/miniblog/es/?item=Principios%20de%20Nes
>
> Caso práctico:
>
> Página que muestra un número aleatorio.
>
> Creamos la plantilla :
>
> lucky.nhtml
> {: NES 1.0 ('lucky.pl') :}
> {: # la linea {: NES 1.0 ('lucky.pl') :} le dice a Nes
> que cargue el el script lucky.pl para esta plantilla
> :}
> <html>
> <head>
> <title>Suerte</title>
> </head>
> <body>
> {:# {: $ number :} es la variable $nes_tags->{'number'} :}
> El número de la suerte es: <b>{: $ number :}</b>
> </body>
> </html>
>
> Creamos el script Perl:
>
> lucky.pl
> use nes;
>
> # Único objeto a instanciar en Perl
> my $nes = Singleton->new();
>
> # Las variables que Nes va a reemplazar en la plantilla
> my $nes_tags = {};
> $nes_tags->{'number'} = int rand 10;
>
> # Único método de Singleton, que envía los datos a reemplazar
> $nes_tags->out(%$nes_tags)
>
>
> Y ahora la gracia de Nes, lo convertimos en un objeto:
>
> lucky.nhtml
> {: NES 1.0 ('lucky.pl') :}
> {: $ number :}
>
> Y lo podemos insertar en cualquier página Web así:
>
> template.nhtml:
> {: NES 1.0 script.pl :}
> <html>
> <head>
> <title>Lo que sea</title>
> </head>
> <body>
> ...
> El número de la suerte es: <b>{: include lucky.nhtml :}</b>
> ...
> </body>
> </html>
>
> http://nes.sourceforge.net/miniblog/es/?item=Objetos
>
> En vez de mostrar un número, nuestro objeto podía mostrar un formulario,
> un script PHP, JavaScript, Ajax, etc. o una mezcla. El Tag “include”
> admite parámetros:
>
> http://nes.sourceforge.net/miniblog/es/?item=Tag%20include%20%28file%29
> http://nes.sourceforge.net/miniblog/es/?item=Paradigma%20Nes
> http://nes.sourceforge.net/miniblog/es/?item=Incluir%20PHP%20y%20otros
>
> Prácticamente con esto, ya sabéis Nes, además de $ y de include hay 8
> Tags más, se aprenden en un rato, y el único objeto que tendremos que
> instanciar en nuestro script Perl es uno de la clase Singleton y como
> sólo tiene un método (out) tampoco tiene perdida.
>
> http://nes.sourceforge.net/miniblog/es/?item=Sintaxis%20de%20Nes
> http://nes.sourceforge.net/miniblog/es/?item=La%20clase%20Singleton
>
Un par de cuestiones de estilo:
1) Singleton es un muy mal nombre para un paquete. Llamale Nes o Nes::Stash
2) nes tampoco es un buen nombre, los nombre en minusculas estan
reservados para pragmas (strict, autodie, etc). Usa Nes o NES
3) Si tu clase realmente es un singleton, no necesitas el new,
directamente tendrias que poder hacer
Nes::Stash->set(%datos);
por ejemplo asi
package Nes::Stash;
my $singleton;
sub set {
my $self = shift;
ref $self or $self = ($singleton ||= __PACKAGE__->_new);
$self->...
}
... pero claro solo si es un singleton de verdad, que con la estructura
que tienes no tengo muy claro que lo sea!
- Salva
Más información sobre la lista de distribución Madrid-pm