Node.js, YUI 3 y la manipulación del DOM ... ¡por Dios!

09 de abril 2010 a las 7:30 am por Dav Cristal | En Desarrollo | 42 Comentarios

Actualización desde el artículo anterior : YUI 3 ya no se ejecuta en el ámbito global. He hecho algunos ajustes a mi nodejs-yui3 proyecto para permitir YUI 3 para ejecutar plenamente como una adecuada no global del módulo.

A principios de esta semana te di un vistazo a correr YUI 3 en el servidor con Node.js . Ahora estoy de vuelta para decirte lo que he estado haciendo durante la última semana o así. Un par de semanas me topé con un proyecto en GitHub llamada jsdom por Elías Insua ( @ tmpvar ). jsdom se describe como:

[A] CommonJS aplicación de la DOM pretende ser una plataforma independiente y un mínimo como / más ligero posible, mientras que completamente de acuerdo con las especificaciones W3C DOM.

Eso sonaba interesante para mí, así que se bifurcaba el depósito y comenzó a jugar un rato con él para ver lo que podía llegar a hacer. Para mi sorpresa, sólo funcionó. Y como está escrito en JavaScript, era fácil para empezar a hackear y la adición de nuevas características. El único problema que podía ver era que es una pura capa de DOM, a falta de algunas de las características de lista de materiales que son necesarios para el desarrollo de aplicaciones web más comunes. Así que me puse para agregar las características que necesitaría para ejecutar YUI 3 en contra jsdom. Después de un par de días de la piratería, que tenía una implementación de referencia de jsdom que soporta casi todas las necesidades de YUI 3.

Puesta en marcha con YUI 3 jsdom

Empecé simplemente incluyendo jsdom y la creación de la "falsa" objeto de documento. En este punto, se pudo cargar nuestro núcleo YUI tres funciones DOM , pero la carga del módulo de eventos would't. Fue entonces cuando me di cuenta de que algunas abstracciones clave de lista de materiales que faltaban - por ejemplo, de eventos necesita algún tipo de window objeto. Así que he creado un "falso" objeto de la ventana para que coincida con mi "falso" el documento y las cosas empezaron a cargar. Como ya he dicho en el artículo anterior, el sistema de YUI 3 del módulo es fantástico y hace que este tipo de trabajo mucho más fácil de hacer.

La mayoría de las secuencias de comandos de acceso document y la window directamente. YUI 3 no lo hace, en cambio, tenemos las referencias al documento activo / ventana de configuración en un adjunto a cada instancia de YUI. Se puede acceder por Y.config.doc y Y.config.win . Todos los YUI 3 módulos se adhieren a esta práctica (y le recomendamos encarecidamente que haga lo mismo en sus Galería YUI 3 módulos o componentes de sus propios hechos a medida).

Algunos pueden pensar que esto es un poco excesivo, pero ya he utilizado esta característica en mis primeros trabajos sobre el Editor de YUI 3. Soy capaz de crear una instancia de YUI y lo han vinculado a la ventana de un iframe / documento. Esto significa que puedo correr Selector y eventos dentro del iframe sin tener que cargar YUI dentro de ese documento. En el servidor, esto tiene aún más sentido. Usted puede tener varios documentos abiertos en el mismo proceso, pero sus YUI 3 casos sólo se necesita saber sobre el documento que está utilizando.

Para apoyar este trabajo, he creado un nuevo módulo llamado YUI 3 nodejs-dom . En este módulo se incluyen las bibliotecas adecuadas, si está disponible, y establecer la instancia de YUI con un document y la window referencia. Junto con la configuración, se creará un nuevo objeto en la instancia llamada Browser . Dado que todos los YUI 3 Nodo uso del módulo y el nodo utiliza Y.config.doc , que no es necesario hacer nada más para hacer el trabajo YUI 3 código en el servidor. Pero si usted está trabajando con más de JavaScript y necesita acceder a los document , window , location o navigator objetos, todos están disponibles en el Browser de objetos. He aquí una vista rápida de lo que el Y.Browser objeto se parece a:

 {Navegador: 
    {UserAgent: 'Node.js (Darwin; U; rv: 0.1.33) "
    , AppVersion: '0 .1.33 '
    , La plataforma: 'Darwin'
    }
 , La ventana: 
    {ScreenTop: 0
    , PageYOffset: 0
    , ScreenY: 0
    , Navegante: [circular]
    , InnerHeight: 768
    , PageXOffset: 0
    , ScreenLeft: 0
    , ScreenX: 0
    , InnerWidth: 1024
    , Longitud: 1
    , Scrolly: 0
    , OuterHeight: 768
    , ContentWindow: [circular]
    , Marcos: [[circular], [longitud]: 1]
    , SetInterval: [Función]
    , El nombre de: 'nodejs'
    , Scrollx: 0
    , En el documento: '# DOCUMENTO "
    , OuterWidth: 1024
    , SetTimeout: {[función]
    , Lugar: {href: '/ users / o DavGlass .node_libraries o browser.js'}
    }
 , Sí: [circular]
 , En el documento: [circular]
 , Lugar: [circular]
 }

innerHTML apoyo

Desde innerHTML no está en la especificación de DOM Nivel 1, que no está en jsdom. Este era un requisito para mí, así que tenía que encontrar una solución. He encontrado un proyecto en GitHub llamada nodo HTMLParser y afirmó ser capaz de analizar HTML, incluyendo un error de sintaxis. que se bifurcaba e hizo algunos cambios en el código, limpiar la sintaxis y se fija un par de cuestiones. Yo le recomiendo usar el tenedor, si usted está siguiendo a lo largo de en su casa, sé que el tenedor va a trabajar y voy a seguir para mantener el tiempo que sea necesario. Eventualmente, alguien va a escribir un analizador basado en IZS @ 's saxo-js módulo.

Vamos a ver algo de código

Este es un ejemplo hola mundo muy simple:

 YUI (). Usar ('nodejs-dom', 'eventos', 'nodo', function (Y) {
     var = documento Y.Browser.document;
     document.title = 'Esto es una prueba';
     var i = Y.Node.create ('Prueba de <i> Este </ i>');
     i.addClass ('parametro');
     Y.one ('body') append (i).;

     var div = document.createElement ('div');
     div.id = "foo";
     div.innerHTML = '<EM id="foo"> Prueba </ em> este id="bax"> <strong increíble </ strong>';
     document.body.appendChild (div);
    
     var foo = Y.one ('# foo');
     foo.addClass ('bar');
     sys.puts (document.outerHTML);
 });

El código anterior devolverá este fragmento de código HTML:

 <html>
   <head>
     <title> Esta es una prueba </ title>
   </ Head>
   <body>
     <i class="foo"> Prueba Este </ i>
     <div id="foo" class="bar">
       <EM id="foo"> Prueba </ em> este id="bax"> <strong impresionante! </ strong>
     </ Div>
   </ Body>
 </ Html>

¿Es eso lo que yo creo que es?

Esa es la pregunta más común que he recibido cuando se muestran maquetas de estas cosas. La respuesta es: Sí, esto es lo que piensas que es: un documento completo representa en el servidor mediante la escritura estándar de JavaScript contra la norma API DOM y lista de materiales. Tengo varios ejemplos de su uso en el proyecto de GitHub . Estos ejemplos incluyen procesamiento de YUI 3 Tabviews , los deslizadores y superposiciones . Usando el 2 de cada 3 proyecto en el que también fue capaz de hacer un YUI 2 Calendario y Gerente de Diseño .

Ejemplos

Me tiró un par de los ejemplos de mi repositorio git para que pueda verlos en acción:

La demo calendario está diseñado para mostrar un ejemplo de la mejora progresiva mediante el uso de YUI para generar el calendario en el servidor y proporcionar una navegación estática a determinados días y meses. Esta aplicación utiliza el mismo JavaScript para generar el punto de vista del lado del servidor del mismo modo que en el cliente para convertirlo en JavaScript puro. No es intencionalmente sin JavaScript del lado del cliente. Piense en esto como la base de referencia que tendría que utilizar para la mejora progresiva, lo que hace un DOM completamente funcional en el lado del servidor para proporcionar funcionalidad a los clientes sin el soporte de JavaScript.

El segundo ejemplo muestra cómo se puede mezclar y combinar lo que es los datos del servidor y lo que es los datos del cliente. Si tengo un verdadero marco de MVC, que YUI 3 ofrece, puedo separar mis datos (JSON) a partir de mis plantillas de artilugios (DHTML) y de plantillas de página (HTML estático). El ejemplo muestra cómo puede utilizar los mismos datos, pero acceder a él desde 3 lugares diferentes para obtener sólo las partes que desea.

Espero que veas el poder aquí lo que veo, como un futuro posible sin el cambio de contexto y libre de la escritura de múltiples niveles de código de representación en los diferentes niveles de una aplicación para apoyar la mejora progresiva. Disfrute! ( @ DavGlass )

Compartir y ampliar: Marcar página con del.icio.us | Digg It! | reddit!

42 Comentarios

  1. Totalmente destruido. Se trata de algunas cosas bastante buena.

    Comentario por Lauren Smith - 09 de abril 2010 #

  2. Vaya, eso es algunas cosas interesantes ha llegado hasta aquí :) Además, tal vez libxmljs será más rápido de análisis de HTML, ya que está escrito en C en lugar de JS.

    Comentario por Kuroki Kaze - 09 de abril 2010 #

  3. Esto tiene un aspecto fantástico! Voy a tener que echar un vistazo más de cerca esta noche para ver lo que puedo conseguir nodejs-tad para trabajar con-esto podría abrir las puertas de un buen número de plantillas para los pocos y tal. : D

    Comentario por Stephen Belanger - 09 de abril 2010 #

  4. Por favor, me explique el caso de uso en el mundo real de la generación del lado del servidor de HTML desde javascript.
    Por qué y cuándo sería esto útil?

    Comentario por Dmitri Snytkine - 09 de abril 2010 #

  5. @ Lauren Gracias

    @ Kuroki estaba mirando, pero no es estable en este momento.

    @ Esteban impresionante, no puedo esperar a ver qué hace la gente con estas cosas.

    Comentario por Dav Glass - 09 de abril 2010 #

  6. @ Dmitri Snytkine

    Pues bien, los fragmentos de HTML vienen a la mente. El uso de un lenguaje de plantillas que carga un archivo de plantilla externa puede ser un poco más cuando todo lo que quiero hacer es, por ejemplo, generar un vínculo.

    Probablemente es seguro asumir que el "href" atributo está presente, pero que pueden o no quieren hacer uso de 'rel', 'title', 'clase', 'id', etc

    Para hacer una plantilla con opciones para cada uno de los que generalmente requieren un montón de sentencias if, cuando podría fácilmente sólo generar un elemento con un poco de jQuery como el de esta manera;

    var fragmento = $ (") attr ('href', 'http://google.com') attr ('id', 'someid') toString ()...;

    Se tomaría por lo menos 5 veces más cantidad de código y algo más de tiempo para lograr el mismo resultado sin necesidad de utilizar las interacciones DOM.

    Comentario por Stephen Belanger - 09 de abril 2010 #

  7. @ Dmitri Los casos del mundo real de uso para esto es:

    1. Mejora progresiva. Tomemos el ejemplo del calendario, ya tiene un calendario totalmente funcional con YUI, pero para que funcione en el servidor tiene que escribir otro calendario en, por ejemplo PHP, entonces usted tiene 2 veces el código de mantener.

    2. Mismo idioma == menos código. Si mi código en el servidor también puede ejecutar en el cliente, entonces mi base de código ahora es drásticamente menor.

    3. La vuelta más rápida. Ahora que el código en el servidor y el cliente son casi idénticos, puedo pasar la mitad del tiempo de construir algo, porque no es necesario para construir cualquier cosa dos veces. La validación de formularios es un grande. Tiene un formulario en el cliente que necesita la validación, pero se necesita la misma validación en el servidor. ¿Por qué escribir dos veces en dos idiomas diferentes cuando se puede hacer una vez?

    ¿Eso ayuda explicarlo un poco mejor?

    Comentario por Dav Glass - 09 de abril 2010 #

  8. @ Esteban Niza comentario ;)

    Comentario por Dav Glass - 09 de abril 2010 #

  9. Dave y Esteban, gracias por su explicación.
    En cuanto al ejemplo del calendario me pregunto cómo se compara a las bibliotecas del lado del servidor?
    En los desarrolladores de ASP.NET pueden utilizar los controles de llamadas que ya se encargan de la parte del lado del cliente.
    Entiendo que la ventaja para las empresas que crean sus propias soluciones (como yahoo con Yui), pero no estoy seguro si hay ventajas para webfirms smaler.

    ¿Puedo pedirle que dé otro ejemplo de cómo las empresas más pequeñas podrían benfit de esta también?

    Gracias y un saludo

    Comentario por pxlpz - 09 de abril 2010 #

  10. FYI también hay un puro objeto de JS ventana para ir junto con jsdom @ http://github.com/tmpvar/jswindow

    Comentario por rdzah - 09 de abril 2010 #

  11. @ Rdzah No es completa o funcional todavía. Parece un poco por la borda para hacer un objeto de ventana completa cuando en realidad no es necesario, sin embargo. Mi "falso" de la ventana va a hacer casi cualquier cosa que se necesita para hacer el trabajo existente JS ;)

    Comentario por Dav Glass - 09 de abril 2010 #

  12. Dave,

    You rock. En serio.

    Pero tengo que decir, ¿realmente acaba de publicar el código de ejemplo que incluye dos elementos con el mismo ID?

    Siggy

    Comentario por SiggyTheViking - 09 de abril 2010 #

  13. PS

    Lo siento mal escrito su nombre, Dav.

    Comentario por SiggyTheViking - 09 de abril 2010 #

  14. Eso está muy bien ... pero ... Aptana Jaxer tiene este con creces (más el apoyo sin fisuras E4X) ...

    ¿Por qué no tenedor Jaxer en github (es de código abierto ahora) y ponerlo en marcha en node.js ... entonces ALLLLLL esto es libre (y algo más).

    Por cierto: a los que no está seguro acerca de "por qué esto es útil" ... ¿por qué es PHP útil? Igual ... exactamente ... de casos de uso. Los valores de js del lado del servidor (SSJS), sin embargo, significa que podemos empezar a ver 100% de la paridad entre el código allá de las fronteras de aplicaciones ... y si no se puede estirar su mente lo suficiente como para ver los valores en los que, bueno ... lo siento for'ya :)

    Eso está muy bien aquí (de nuevo).

    Comentario por Ryan Gahl - 15 de abril 2010 #

  15. Nevermind (tipo de) ... DOM/BOM/E4X/XHTML Jaxer se deriva directamente del Mono Araña, mientras que el V8 node.js es solamente (por lo tanto no E4X nativa todavía).

    Aún así ... alguien con conocimientos debe ser capaz de tirar un montón de cosas valiosas de trabajo del proyecto de Jaxer, si tan sólo de un punto de vista conceptual.

    Trasladar Araña / TraceMonkey a un sonido contexto factible V8/node.js?

    Comentario por Ryan Gahl - 15 de abril 2010 #

  16. Hombre, sigo sin hacer el 100% el sentido aquí.

    Supongo que es simplemente una cuestión de "o node.js este enfoque handrolling" VS. : Jaxer / Mono Araña "

    Eventualmente, los chicos probablemente node.js handrolling ganar cuando alguien publica una colección de módulos que responden a las capacidades de Jaxer, pero con el valor-agrega que provienen de los node.js o CommonJS o del ecosistema JSGI.

    Y bien, he terminado por ahora. Eso está muy bien.

    Comentario por Ryan Gahl - 15 de abril 2010 #

  17. @ SiggyTheViking -

    De hecho, esa (DUP id) era a propósito para demostrar que funciona como se esperaba ;)

    Comentario por Dav Glass - 19 de abril 2010 #

  18. Hola Dav,

    Además del error de uno, ¿qué otros temas le parecen y fijar en el nodo-HTMLParser? Si hay más, yo con mucho gusto aceptará una req tirón o un parche.

    ¿Le importaría echar un vistazo a más tardar el nodo-HTMLParser? Es ahora en v1.0 +, soporta streaming, es de aproximadamente 40% más rápido que la versión que se bifurcaba, y sin duda me voy a apoyar en el futuro, ya que es el centro de mi proyecto actual.

    Comentario por Chris Winberry - 20 de abril 2010 #

  19. ¿Cómo se realiza? ¿Usted corrió la prueba básica a través de una referencia util y lo comparó con sólo escupir cadenas de HTML? Sólo por curiosidad en cuanto a si es o no sería viable en un sitio de alto tráfico.

    Comentario por Ben - 20 de abril 2010 #

  20. Ben -

    Yo no he hecho ninguna comparación formal todavía, ya que esta es una prueba de concepto y yo pasamos un poco menos de una semana en ella ;)

    Yo, sin embargo, eso en mi lista ..

    Comentario por Dav Glass - 21 de abril 2010 #

  21. Impresionante cosas increíbles impresionante! Que se bifurcan y la clonación ahora mismo!

    Comentario por Spartan - 24 de abril 2010 #

  22. Ninguno de los ejemplos anteriores trabajos. El error es:
    502 Bad Gateway

    Comentario por Teodor - 02 de mayo 2010 #

  23. @ Teodor -

    Son hasta ahora, mi proveedor de hosting reiniciado mi rebanada de acogida y los procesos de los nodos no llegar a la máquina ..

    Comentario por Dav Glass - 02 de mayo 2010 #

  24. Hola Dav,

    He pasado por esto, pero no pudo obtener el paquete 'nodejs-dom' para usarlo en mi solicitud.

    Tengo el siguiente escenario.

    Tengo una página HTML simple que he añadido YUI 3 y en un iframe tengo el src del iframe conjunto a alguna otra página HTML. Ahora quiero añadir a la delegación caso a la página que se muestra en el iframe, por lo que, puedo manejar un evento de clic de la página que se muestra en el iframe en la página principal html.

    Parece ser posible de acuerdo a su mensaje. ¿Podría por favor explicar cómo.

    Gracias y saludos.

    Comentario por Shankha - 13 de mayo 2010 #

  25. Gracias por el comentario, "el lenguaje mismo == menos código". Eso me hizo clic en él para mí. He estado mirando y he visto Node.js jsdom antes. Nosotros no usamos YUI (jQuery en el momento). Así addingWould aplican los mismos principios? Me gustaría añadir nodos HTMLParser y su navegador falsa para obtener el mismo resultado? Podría utilizar algunos indicadores.

    Esto no sólo resolver un problema de la duplicación de código, pero estoy pensando en términos de pruebas de código JS. Algo que nosotros como empresa y el mundo en general parece que aún se intentan resolver.

    Con respecto al rendimiento, como yo lo entiendo, debido a que se Node.js evented no que lo hacen muy rápido o escalables por lo menos?

    Comentario por Phil Thpmpson - 02 de junio 2010 #

  26. @ Shankha -

    Lo sentimos, no recibe un correo electrónico en su puesto. Esta versión no soporta iframes o eventos en el lado del servidor.

    Comentario por Dav Glass - 02 de junio 2010 #

  27. @ Phil -

    JQuery Teóricamente deberían ejecutarse en JSDom con mis HTMLParser nodo de paquetes. Yo no lo he probado que sé poco o nada acerca de jQuery.

    Yo sé que desde el punto de vista de caja de arena (nuevo documento por solicitud) que puede ser difícil de ejecutar una biblioteca que no está diseñado para configurar un documento y la ventana a una instancia de sí mismo. Aquí es donde realmente brilla YUI 3. Cada nueva instancia de YUI (uno por solicitud) se es que es propio documento y la ventana atado a ella y sólo ella. Entonces usted no tiene que preocuparse por los datos de mezcla de varias solicitudes.

    Una de las razones por las que empezaron a trabajar en esta era de añadir en las suites de prueba del lado del servidor. Sin embargo, no será un sustituto de una prueba de explorador real.

    Comentario por Dav Glass - 02 de junio 2010 #

  28. Gracias por sus esfuerzos DAV.

    Estoy tratando esto pero me estoy haciendo un "ReferenceError:" ". No se define" documento de error. Con la depuración habilitada veo que eso esté ocurriendo justo después de "event-delegado-debug.js" se ha cargado. He tratado de ejecutar los ejemplos así y tienen el mismo error.

    ¿Alguna sugerencia?

    Gracias

    Comentario por Pedro - 17 de julio 2010 #

  29. @ Pedro, ¿estás utilizando la última versión del código de GitHub o la última versión? Yo sólo lo probado en el último de GitHub y todos los ejemplos funcionando.

    Siéntase libre de mándenme una nota (DavGlass [at] gmail [dot] com) fuera de este post si usted todavía está teniendo problemas.

    Comentario por Dav Glass - 21 de julio 2010 #

  30. Dav,

    Sólo trató de comprobar esto hacia fuera de git. Algunas de las rutas han cambiado en los módulos externos que significa el archivo readme en git no funciona completamente.

    También estoy recibiendo

    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
    # ADVERTENCIA: nodo-HTMLParser no se pudo encontrar.
    # Element.innerHTML apoyo compositor ha sido desactivado
    # Element.innerHTML apoyo getter seguirá funcionando
    # Descargar: http://github.com/tautologistics/node-htmlparser
    # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #

    Cuando se ejecuta en el servidor y-template.js.
    También se dio cuenta de que uno de los caminos era el punto a un directorio que tenía a su nombre en ella. Por desgracia no puedo recordar exactamente donde estaba ahora.

    Disculpas si no hay un mejor lugar para publicar esto. Actualmente estoy simplemente andar por ahí en una tarde de domingo :).

    Comentario por Alan Hollis - 08 de agosto 2010 #

  31. @ Alan - Debe mis horquillas de jsdom y el nodo HTMLParser-como se les conoce a trabajar con este ejemplo.

    Comentario por Dav Glass - 10 de agosto 2010 #

  32. @ Dav

    Saludos No me di cuenta que tenía un tenedor de jsdom también. Fue el módulo browser.js que me confunde un poco. En la actualidad hay dos módulos separados que browser.js requiere htmltodom y domtohtml.

    browser.js ahora también le permite pasar en el analizador de HTML que desee utilizar en la llamada windowAugmentation.. Una vez que lo hice todo lo que acaba de trabajar.

    Esta fue mi primera experiencia con node.js y Yui, así que estaba un poco más lento en el trabajo las cosas que yo debería haber sido.

    Le agradezco su tiempo en la creación de estas muestras, que me ayudó a aprender mucho.

    Gracias de nuevo,

    Alan

    Comentario por Alan Hollis - 10 de agosto 2010 #

  33. He leído este artículo y tengo una pregunta: ¿Puedo utilizar este animal como un navegador sin interfaz gráfica?

    Por ejemplo, el código de abajo funciona?

    YUI (). Usar ('nodejs-dom', 'eventos', 'nodo', function (Y) {
    var = documento Y.Browser.document;
    document.location = 'http://www.ajax_application.any';
    sys.puts (document.outerHTML);
    });

    Tengo una aplicación compleja que me gustaría para raspar con algo como esto. En este momento estoy usando Envjs pero sé que voy a tener penalizaciones en el rendimiento en la producción y me gustaría conseguir una mejor opción.

    Ventura

    Comentario por Jorge Ventura - 02 de diciembre 2010 #

  34. Ooops!
    Debe ser

    window.location = 'http://www.ajax_application.any';

    Comentario por Jorge Ventura - 03 de diciembre 2010 #

  35. @ Jorge -

    Usted puede acceder al contenido de una página remota como esto:
    https://gist.github.com/574000

    Sin embargo, no se puede garantizar que la página remoto ejecutar código JavaScript y usted no tendrá acceso a la página de "haga clic en los enlaces" o interactuar con él. Se limitará a ser un local de copia modificable de la página solicitada.

    Comentario por Dav Glass - 03 de diciembre 2010 #

  36. Dav,
    Estaba revisando el código y creo que puedo completar algunas partes. Mi propósito es raspar siempre la misma aplicación, no se preocupan por imágenes, CSS y la interfaz de usuario (botones, haga clic en correo, etc), solo se necesitan para generar la estructura del DOM correctamente.

    Acerca de las secuencias de comandos, puedo ejecutar el código, después de la carga para completar el DOM dentro de la página. Tengo que poner en práctica los métodos que hacen que los cambios en el DOM como document.write y document.writeln.

    Tal vez sea necesario para poner en práctica window.open y el navegador debe tener una lista de ventanas, porque las secuencias de comandos en tiempo de ejecución será la demanda de nuevas ventanas.

    ¿Tiene usted alguna sugerencia para hacer la vida más fácil?

    Gracias,
    Ventura

    Comentario por Jorge Ventura - 04 de diciembre 2010 #

  37. Dav

    Estoy corriendo tu ejemplo Server Express en el nodo v 0.3.2 (el ejemplo que combina todo con una navegación a la izquierda). Se produce un error en el establecimiento de llamada primer título como "no se puede llamar al método conjunto de nulo".

    Puedo correr el calendario individual y ejemplos TabView, pero no el ejemplo de tabla de datos o el ejemplo rasguño.

    Supongo que en cualquier lugar puedo conseguir el objeto YUI como un parámetro de devolución de llamada es donde la falta de este momento

    Las ideas y propensas a error? ¿Es este nodo 0,3 asunto?

    Comentario por Sai - 20 de diciembre 2010 #

  38. Lo siento por la observación por encima de tonto .... todos los ejemplos tienen el objeto de YUI como un parámetro de devolución de llamada en uso.

    Aquí está el rastro

    . / TNT-datatable-script.js
    Información: (Yui): Módulos faltantes: nodejs Unido, 1
    Información: (Yui): La recuperación cargador: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/loader/loader-debug.js
    Información: (get): URL: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/loader/loader-debug.js
    (Nodo) process.compile no debe ser utilizado. Utilizar require ('vm'). RunInThisContext lugar.
    Información: (get): Cargado: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/loader/loader-debug.js
    Información: (Yui): Los módulos que faltan: volteo, nodejs Unido, 2
    Información: (Yui): El uso de cargador
    Información: (loader): intentar cargar volcado, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
    Información: (get): URL: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/dump/dump-debug.js
    Información: (get): Cargado: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/dump/dump-debug.js
    Información: (loader): intentar cargar nodejs Unido, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
    Información: (get): URL: / usr/local/lib/node/.npm/yui3/0.5.17/package/lib/yui3-dom.js
    Información: (get): Cargado: / usr/local/lib/node/.npm/yui3/0.5.17/package/lib/yui3-dom.js
    Información: (loader): cargador de acabado: el éxito, yui_3_2_0_1_12928339018771, yui-base, yui-registro, descarga, nodejs-dom
    Información: (Yui): Colocación de las dependencias disponibles: Yui-base, yui-registro, descarga, nodejs-dom
    Información: (Yui): devolución de llamada de uso anidado: Yui-base, yui-registro, descarga, nodejs-dom
    Información: (Yui): almacenamiento en caché de solicitud: nodejs-dom
    Información: Las pruebas de JSDom ..
    Información: (loader): Indefinido módulo: yui2-tabla de datos, corresponde a un patrón: yui2-
    Información: (loader): Indefinido módulo: yui2-fuente de datos, corresponde a un patrón: yui2-
    Información: (Yui): Módulos faltantes: yui2-DataTable, yui2-fuente de datos, 2
    Información: (Yui): El uso de cargador
    Información: (loader): intentar cargar yui2-tabla de datos, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
    Información: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js
    Información: (get): Cargado: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js
    Información: (loader): intentar cargar yui2-fuente de datos, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
    Información: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datasource/yui2-datasource-debug.js
    Información: (get): Cargado: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datasource/yui2-datasource-debug.js
    Información: (loader): el acabado del cargador: el éxito, y yui_3_2_0_1_12928339018771 yui2-DataTable, yui2-fuente de datos
    Información: (loader): Indefinido módulo: yui2-yahoo, coincidió con un patrón: yui2-
    Información: (loader): Indefinido módulo: yui2 Unido, coincidió con un patrón: yui2-
    Información: (loader): Indefinido módulo: yui2 del evento, coincidió con un patrón: yui2-
    Información: (loader): Indefinido módulo: yui2 piel de-sam-tabla de datos, corresponde a un patrón: yui2-
    Información: (loader): Indefinido módulo: yui2 elementos, corresponde a un patrón: yui2-
    Información: (Yui): Los módulos que faltan: yui2-yahoo, yui2 evento, yui2 Unido, yui2 piel de-sam-tabla de datos, yui2-elementos y 5
    Información: (Yui): El uso de cargador
    Información: (loader): intentar cargar yui2 piel de-sam-tabla de datos, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
    debug: (obtener): Get.css
    debug: (obtener): Real de carga de CSS
    Información: (loader): intentar cargar yui2-yahoo, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
    Información: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-yahoo/yui2-yahoo-debug.js
    Información: (get): Cargado: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-yahoo/yui2-yahoo-debug.js
    Información: (loader): intentar cargar yui2 evento, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
    Información: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-event/yui2-event-debug.js
    Información: (get): Cargado: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-event/yui2-event-debug.js
    Información: (loader): intentar cargar yui2 Unido, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
    Información: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-dom/yui2-dom-debug.js
    Información: (get): Cargado: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-dom/yui2-dom-debug.js
    Información: (loader): intentar cargar yui2 elementos, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
    Información: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-element/yui2-element-debug.js
    Información: (get): Cargado: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-element/yui2-element-debug.js
    Información: (loader): cargador de acabado: el éxito, yui_3_2_0_1_12928339018771, yui2-yahoo, yui2 evento, yui2-fuente de datos, yui2 Unido, yui2 piel de-sam-tabla de datos, yui2 elementos, yui2-tabla de datos
    Información: (Yui): devolución de llamada de uso anidado: yui2-tabla de datos, yui2-fuente de datos
    Información: (Yui): almacenamiento en caché de solicitud: yui2-tabla de datos, yui2-fuente de datos
    Información: Crear origen de datos ..
    Información: Crear DataTable ..
    Información: (get): Cargado: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-element/yui2-element-debug.js
    error: (nodejsyui3): --------------------
    error: (nodejsyui3): TypeError: No se puede establecer los encabezados de propiedad de # que sólo tiene un captador
    error: (nodejsyui3): en [object Object] _formatTdEl (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:5480:18 )
    error: (nodejsyui3): en [object Object] _getTrTemplateEl (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:5448:25 )
    error: (nodejsyui3): en [object Object] _addTrEl (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:5519:29 )
    error: (nodejsyui3): en [object Object]. ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:7327:47 )
    error: (nodejsyui3): en Object.run ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:92:28 )
    error: (nodejsyui3): en [object Object] _runRenderChain (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:7269:24 )
    error: (nodejsyui3):. al [object Object] render ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:7397:10 )
    error: (nodejsyui3): en [object Object]. ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:13101:18 )
    error: (nodejsyui3): en Function.issueCallback ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datasource/yui2-datasource-debug.js:389:26 )
    error: (nodejsyui3): en [object Object] handleResponse (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datasource/yui2-datasource-debug.js:1150:8 )
    error: (nodejsyui3): --------------------

    Comentario por Sai - 20 de diciembre 2010 #

  39. Volví e instalado Nave para cambiar entre las versiones de los nodos, pero se encontró con los mismos errores que antes. estos son los ejemplos que no funcionan para mí:

    scrape.js y object.js raspadura, tnt-datatable-script.js, y-server.js.

    Los errores son siempre en relación con emisores de nula o colocadores de los objetos que no cuentan con un regulador.

    Comentario por Sai - 20 de diciembre 2010 #

  40. @ Sai -

    ¿Puedes enviarlas por correo electrónico a mí en vez de postear aquí, es difícil de leer en el comentario ;)

    DavGlass (arroba) gmail (punto) com

    Comentario por Dav Glass - 20 de diciembre 2010 #

  41. esto es tan maldito frío y no puedo esperar para verla en funcionamiento, pero ...

    No puedo llevar el proyecto a ejecutar. el depurador me dice que las bombas server.js en la línea 35 como express.bodyDecoder () no está definido.

    Soy un gran usuario de YUI y menos de RoR y quería ver cómo node.js y YUI serverside me podía ayudar. Nunca he usado node.js antes, así que no sé si la versión que tengo es el problema (node.js 0.5.0-pre y 2.0.0beta expresa).

    pete

    Comentario por Pete - 06 de marzo 2011 #

  42. @ Pete -

    Usted debe usar el nodo 0.4.2 y Express@1.0.7 si quieres usar mis ejemplos. La versión beta Express es demasiado nuevo y no me he movido mis ejemplos a ella todavía.

    Comentario por Dav Glass - 07 de marzo 2011 #

Disculpa, los comentarios están cerrados en este momento.

Presentado por Yahoo!

Copyright © 2006-2012 Yahoo! Inc. Todos los derechos reservados. Política de privacidad - Condiciones del servicio

Desarrollado por WordPress en Yahoo! Web Hosting .