{: NES 1.0 none :} {: # ----------------------------------------------------------------------------- NES 1.0 by Skriptke Copyright 2009 - 2010 Enrique F. Castañón Licensed under the GNU GPL. http://nes.sourceforge.net/ ----------------------------------------------------------------------------- :}
Los Objetos Nes son partes de código, NES, HTML, JavaScript, Perl... o una mezcla. Hemos incluido algún objeto de demostración ( directorio /nes/obj ) hasta que la librería de objetos nes crezca.
Cualquier script puede convertirse en un Objeto Nes, de forma que no sea necesario volver a escribir el código. Podemos llamar a un Objeto con include:
{: include ( '{: * cfg_obj_top_dir :}/objeto.nhtml', [ lista de parámetros ] ) :}Los objetos pueden residir en cualquier directorio, Nes viene con una librería de objetos en el direcctorio /nes/obj.
Un ejemplo sencillo es el objeto location.nhtml que redirecciona a otra página:
{: include ( '{: * cfg_obj_top_dir :}/location.nhtml', 'http://example.com/page.nhtml', '301 Moved Permanently' ) :}
Con Nes no puedes crear objetos, con Nes puedes invocar/incluir los objetos en tus plantillas, pero el objeto tiene que estar creado en Perl, HTML, JavaScript, etc. o una mezcla de todos o algunos con una plantilla Nes o no. Aunque parezca una limitación, no lo es, parte de la potencia de Nes se basa en lo que no deja hacer más que en lo que te permite hacer. No nos cansamos en insistir en las dos premisas básicas de Nes:
Los script Perl para la Web tienen que trabajar como funciones, devuelven un valor pero desconocen como se va tratar ese valor, como o donde se va a mostrar.
Y sobre todo, las plantillas jamás deben modificar los datos del Script, o trabajar emulando o directamente como un lenguaje de programación.
Como ejemplo hemos encapsulado parte de LWP en un Objeto Nes:
{: include ('{: * cfg_obj_top_dir :}/lwp.nhtml', URL, extrac, {: # default: content | status | Content-Type | title | head | body | star:-:end | :-:star:-:end:-: :} method, {: # default: GET | POST :} query, {: # query: 'name=Jose&email=jose@sample.com' :} charset, {: # default: no change | ISO | UTF-8 :} useragent {: # default: Nes/0.8 :} email {: # user agent email. default: $ENV{'SERVER_ADMIN'} :} ) :} extrac: <tag>:-:</tag> Return title tag content without tags: '<tag></tag>' :-:<tag>:-:</tag>:-: Return title tag and include tags: '<tag></tag>' Defined: {: $ status :} # Status response {: $ request :} # request send {: $ Content-Type :} # Content type {: $ content :} # All HTML content {: $ title :} # Title Tag content {: $ head :} # Head Tag content {: $ body :} # Body Tag content {: $ extrac :} # extrac return value
Para probar nuestro Objeto hemos creado una página test_page.html de la que podemos extraer el "Título" así:
{: include ('{: * cfg_obj_top_dir :}/lwp.nhtml', 'http://nes.sourceforge.net/miniblog/es/test_page.html', title ) :} Salida: Test Page - Sample to use Nes;
Hemos creado nuestro Objeto de forma que podemos llamar directamente al script Perl, sin la plantilla nhtml:
{: include ('{: * cfg_obj_top_dir :}/lwp.pl', 'http://nes.sourceforge.net/miniblog/es/test_page.html', title ) :} Salida: Test Page - Sample to use Nes;
Además podemos crear una nueva plantilla para éste script Perl. lwp.pl define los siguientes Tags Nes:
{: $ status :} # Status response {: $ request :} # request send {: $ Content-Type :} # Content type {: $ content :} # All HTML content {: $ title :} # Title Tag content {: $ head :} # Head Tag content {: $ body :} # Body Tag content {: $ extrac :} # extrac return value
Entonces para crear un pequeño informe de una página:
{: NES 1.0 ('./lwp.pl') :} Status:<br> {: $ status :}<br> Title:<br> {: $ title :}<br> Content type:<br> {: $ Content-Type :}<br> Head:<br> {: $ head :}<br> Extrac:<br> {: $ extrac,yes_html :}La nombramos como lwp_custom.nhtml, por ejemplo, la guardamos en el directorio obj, y finalmente la podemos invocar así:
{: include ('{: * cfg_obj_top_dir :}/lwp_custom.nhtml', 'http://nes.sourceforge.net/es/test_page.html' 'body' ) :}Salida:
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Praesent aliquam, justo convallis luctus rutrum, erat nulla fermentum diam, at nonummy quam ante ac quam. Maecenas urna purus, fermentum id, molestie in, commodo porttitor, felis. Nam blandit quam ut lacus.
query:
q_name:
Como vemos los Objetos Nes ofrecen multiples posibilidades de reutilización de código. La idea es que Nes disponga de una gran librería de Objetos, de forma que sólo tengamos que escribir el código de los casos particulares, disponiendo de Objetos de uso general para el login, sesiones, etc. practicante el trabajo para crear una Web con Nes será montar las plantillas y el diseño Web.