Node.js, YUI 3 e Dom Manipulation ... Oh My!
9 aprile, 2010 alle 7:30 am da Dav vetro | In Development | 42 commentiAggiornamento da precedente articolo : YUI 3 non viene eseguito in ambito globale. Ho fatto alcune modifiche al mio nodejs-yui3 progetto per consentire YUI 3 per eseguire pienamente come un vero e proprio non-global modulo.
All'inizio di questa settimana che ti ho dato una sbirciatina in esecuzione YUI 3 sul server con Node.js . Ora sono tornato per dirvi quello che ho avuto fino ad oltre l'ultima settimana o giù di lì. Un paio di settimane fa mi sono imbattuto in un progetto su GitHub chiamato jsdom da Elijah Insua ( @ tmpvar ). jsdom si descrive come:
[A] CommonJS attuazione del DOM destinato ad essere indipendente dalla piattaforma e come minimal / leggero possibile mentre completamente aderente alle specifiche DOM del W3C.
Che suonava interessante per me, così ho fork del repository e iniziato a giocare intorno con esso per vedere cosa avrei potuto arrivare a fare. Con mia grande sorpresa, ha appena lavorato. E poiché è scritto in JavaScript, è stato facile iniziare l'hacking e l'aggiunta di nuove funzionalità. L'unico problema che ho potuto vedere è che è uno strato di puro DOM, in mancanza di alcune caratteristiche della distinta base che sono necessarie per lo sviluppo web le applicazioni più comuni. Così ho deciso di aggiungere le caratteristiche avrei bisogno di eseguire YUI 3 contro jsdom. Dopo un paio di giorni di hacking, ho avuto una implementazione di base di jsdom che supporta quasi tutte le esigenze di YUI 3.
Come YUI 3 in esecuzione con jsdom
Ho iniziato da solo anche jsdom e la creazione dell'oggetto "falso" documento. A questo punto è riuscito a caricare il nostro core YUI tre funzionalità DOM , ma il modulo di carico Event would't. In quel momento ho notato che alcune astrazioni distinta chiave mancavano - per esempio, Evento ha bisogno di qualche sorta di window oggetto. Così ho creato un oggetto "falso" finestra per abbinare il mio documento "falso" e le cose hanno iniziato a caricare. Come ho detto nel precedente articolo, sistema modulare YUI 3 è fantastico e rende questo tipo di lavoro molto più semplice da fare.
La maggior parte degli script di accesso document e la window direttamente. YUI 3 non lo fa, invece, abbiamo i riferimenti al documento attivo / finestra in una configurazione allegata a ciascuna istanza YUI. Questi possono essere accessibili da Y.config.doc e Y.config.win . Tutti e 3 i moduli YUI aderire a questa pratica (e vi raccomandiamo caldamente di fare lo stesso nei vostri YUI Galleria 3 moduli o componenti personalizzati su misura).
Qualcuno potrebbe pensare che questo è un po 'eccessivo, ma ho già utilizzato questa funzione nel mio lavoro presto Editor per YUI 3. Sono in grado di creare un'istanza di YUI e lo hanno legato alla finestra di un iframe / documento. Questo significa che posso correre Selector ed eventi all'interno del iframe senza dover caricare YUI all'interno di quel documento. Sul server, questo rende ancora più senso. Si può avere più documenti aperti nello stesso processo, ma i tuoi YUI 3 casi solo bisogno di conoscere il documento che state utilizzando.
Per sostenere questo lavoro, ho creato un nuovo modulo chiamato YUI 3 nodejs-dom . Questo modulo comprende le librerie corrette, se disponibile, e impostare l'istanza di YUI con un document e la window di riferimento. Insieme con la configurazione, si creerà un nuovo oggetto sull'istanza chiamato Browser . Poiché tutti i YUI uso del modulo Nodo 3 e il Nodo utilizza Y.config.doc , non dovrebbe essere necessario fare altro per rendere il lavoro YUI 3 codice sul server. Ma se stai lavorando con il vecchio JavaScript e la necessità di accedere ai document , window , location o navigator di oggetti, sono tutti disponibili sul Browser oggetto. Ecco una rapida panoramica di ciò che il Y.Browser oggetto appare come segue:
{Navigatore: {UserAgent: 'Node.js (darwin, U; rv: 0.1.33)' , AppVersion: '0 .1.33 ' , Piattaforma: 'Darwin' } , Finestra: {ScreenTop: 0 , PageYOffset: 0 , ScreenY: 0 , Navigatore: [circolare] , InnerHeight: 768 , PageXOffset: 0 , ScreenLeft: 0 , ScreenX: 0 , InnerWidth: 1024 , Lunghezza: 1 , ScrollY: 0 , OuterHeight: 768 , ContentWindow: [circolare] , Cornici: [[Circolare], [lunghezza]: 1] , SetInterval: [Funzione] , Name: 'nodejs' , ScrollX: 0 , Documento: '# DOCUMENTO' , OuterWidth: 1024 , SetTimeout: {[Funzione] , Location: {href: '/ Utenti / davglass / .node_libraries / browser.js'} } , Self: [circolare] , Documento: [circolare] , Location: [circolare] }
innerHTML supporto
Dal momento che innerHTML non è nel DOM Level1 specifiche, non è in jsdom. Questo era un requisito per me, quindi ho bisogno di trovare una soluzione. Ho trovato un progetto su GitHub chiamato node-HTMLParser e sosteneva di essere in grado di analizzare HTML, compresi sintassi errata. ho biforcuta e ha apportato alcune modifiche al codice, ripulito la sintassi e fissato un paio di questioni. Mi consiglia di utilizzare la forchetta, se stai seguendo insieme a casa, so che la mia forcella lavorare e io continuerò a mantenere il più a lungo, se necessario. Alla fine qualcuno scriva un parser basato su @ IZS 's sax-js modulo.
Vediamo un po 'di codice
Questo è un esempio molto semplice ciao mondo:
YUI (). Utilizzare ('nodejs-dom', 'evento', 'nodo', function (Y) { var = documento Y.Browser.document; document.title = 'Questo è un test'; var i = Y.Node.create ('<i> di prova Questo </ i>'); i.addClass ('foo'); Y.one ('body'), append (i).; var div = document.createElement ('div'); div.id = 'pippo'; div.innerHTML = '<em id="foo"> Test </ em> questo id="bax"> <strong impressionante </ strong>!'; document.body.appendChild (div); var foo = Y.one ('# foo'); foo.addClass ('bar'); sys.puts (document.outerHTML); });
Il codice qui sopra restituire questo frammento di codice HTML:
<html> <head> <title> Questo è un test </ title> </ Head> <body> <i class="foo"> Test Questo </ i> <div id="foo" class="bar"> <em id="foo"> Test </ em> questo id="bax"> <strong awesome! </ strong> </ Div> </ Body> </ Html>
È questo che penso che sia?
Questa è la domanda più comune che ho ricevuto quando mostra le demo di questa roba. La risposta: Sì, questo è ciò che si pensa che è: un documento completo rendering sul server scrivendo JavaScript standard contro la standard DOM API e BOM. Ho diversi esempi del suo utilizzo nel progetto GitHub . Questi esempi includono il rendering YUI 3 visualizzazioni a scheda , i cursori e Overlay . Utilizzando il 2 in 3 progetto mi è stato anche in grado di rendere un YUI 2 Calendario e Layout Manager .
Esempi
Ho buttato un paio di esempi tratti dalla mia repo git in modo da poterli vedere in azione:
La demo Calendar è progettato per mostrare un esempio di progressive enhancement, utilizzando YUI per generare il calendario sul server e consentono una navigazione statica per determinati giorni e mesi. Questa implementazione usa la stessa JavaScript per generare il server-side view come si usa sul client per renderlo in JavaScript puro. Non vi è volutamente alcun JavaScript lato client. Pensate a questo come linea di base devi usare per il miglioramento progressivo, rendendo completamente funzionale DOM sul lato server per fornire funzionalità ai clienti senza supporto JavaScript.
Il secondo esempio mostra come è possibile combinare i dati del server che cosa è e quali sono i dati del cliente. Se ho un vero e proprio quadro MVC, che YUI 3 fornisce, posso separare i miei dati (JSON) dai miei modelli widget (DHTML) e da modelli di pagina statica (HTML). L'esempio mostra come è possibile utilizzare gli stessi dati ma l'accesso da 3 posti diversi per ottenere solo le parti desiderate.
Spero che si vede il potere qui che vedo, tra cui un possibile futuro privo di cambio di contesto e privo di scrivere molteplici livelli di codice di rendering dei vari livelli di un'applicazione a supporto progressive enhancement. Buon divertimento! ( @ davglass )
Condividi ed estendere: Segnalibro con Del.icio.us | Digg it! | reddit!
42 commenti
Siamo spiacenti, il commento forma è chiusa in questo momento.

Copyright © 2006-2012 Yahoo! Inc. Tutti i diritti riservati. Privacy Policy - Termini di servizio
Powered by WordPress su Yahoo! Web Hosting .

Totalmente spazzato via. Questo è certo roba davvero interessante.
Commento di Lauren Smith - 9 Aprile 2010 #
Whoa, che sono alcune cose interessanti che hai qui :) Inoltre, forse libxmljs sarà più veloce per il parsing del codice HTML, come è scritto in C, invece di JS.
Commento di Kuroki Kaze - 9 Aprile 2010 #
Questo sembra fantastico! Dovrò dare un'occhiata più da vicino questa sera per vedere cosa posso ottenere nodejs-dom per lavorare con-questo potrebbe aprire un bel poche porte per il template e così via. : D
Commento di Stephen Belanger - 9 Aprile 2010 #
Per favore mi spieghi il mondo reale caso d'uso di server-side generazione di html da javascript.
Perché e quando questo sarebbe utile?
Commento di Dmitri Snytkine - 9 Aprile 2010 #
@ Lauren Grazie
@ Kuroki stava guardando, ma non è stabile al momento.
@ Stephen Awesome, non vedo l'ora di vedere cosa fanno le persone con questa roba.
Commento di Dav Glass - 9 Aprile 2010 #
@ Dmitri Snytkine
Beh, frammenti HTML vengono in mente. Utilizzando un linguaggio di templating che carica un file esterno modello può essere un po 'troppo quando tutto ciò che vogliamo fare è, per esempio, generare un link.
Probabilmente è lecito ritenere l'attributo 'href' è presente, ma si può o non può decidere di fare uso di 'rel', 'title', 'classe', 'id', ecc
Per fare un modello con opzioni per ognuna di queste in genere richiedono un insieme di istruzioni if, quando si potrebbe facilmente generare solo un elemento con una certa jquery come in questo modo;
frammento var = $ (") attr ('href', 'http://google.com') attr ('id', 'someid') toString ()...;
Sarebbe vorranno almeno 5 volte codice molto tempo e un po 'di più per ottenere lo stesso risultato senza usare le interazioni DOM.
Commento di Stephen Belanger - 9 Aprile 2010 #
@ Dmitri I veri casi d'uso per questo mondo è la seguente:
1. Progressive enhancement. Prendiamo l'esempio di calendario, si dispone già di un calendario completamente funzionale con YUI, ma per farlo funzionare sul server si deve scrivere in un altro calendario, ad esempio PHP, allora avete 2 volte il codice da mantenere.
2. Stessa lingua == meno codice. Se il mio codice sul server può anche essere eseguito sul client, allora il mio codice di base è ora drasticamente inferiore.
3. Faster girarsi. Ora che il codice sul server e sul client sono quasi identici, posso spendere la metà del tempo di costruire qualcosa perché non ho bisogno di costruire qualcosa di due volte. La convalida del modulo è un grande. Si dispone di un modulo client che necessita di convalida, ma ha bisogno della stessa convalida sul server. Perché scrivere due volte in due lingue diverse quando si può fare una volta?
Ritiene che lo aiutano a spiegare un po 'meglio?
Commento di Dav Glass - 9 Aprile 2010 #
@ Stephen Nizza commento ;)
Commento di Dav Glass - 9 Aprile 2010 #
Dave e Stephen grazie per la tua spiegazione.
Per quanto riguarda il calendario esempio mi chiedo come questo confronto con le librerie lato server?
In sviluppatori ASP.NET possibile utilizzare i controlli cosiddetti che già si occupano della parte client-side.
Capisco il vantaggio per le aziende che creano le proprie soluzioni (come yahoo con YUI), ma io non sono sicuro se ci sono vantaggi per webfirms smaler.
Posso chiedere di dare un altro esempio di come le imprese più piccole potrebbe beneficino delle esperienze anche questo?
Grazie e cordiali saluti
Commento di pxlpz - 9 Aprile 2010 #
fyi c'è anche un puro oggetto finestra js di andare avanti con jsdom @ http://github.com/tmpvar/jswindow
Commento di rdzah - 9 Aprile 2010 #
@ Rdzah Non è ancora completo o funzionali. Sembra un po 'di mare per fare un oggetto pieno finestra quando non è realmente necessario, ancora. La mia finestra "fake" farà la maggior parte tutto ciò che è necessario per rendere il lavoro esistente JS ;)
Commento di Dav Glass - 9 Aprile 2010 #
Dave,
Si rock. Davvero.
Ma devo dire, hai davvero solo pubblicare il codice di esempio che include due elementi separati con lo stesso ID?
Siggy
Commento di SiggyTheViking - 9 Aprile 2010 #
PS
Scusa se ho scritto male il tuo nome, Dav.
Commento di SiggyTheViking - 9 Aprile 2010 #
Roba buona ... ma ... Aptana è Jaxer ha ne ha da vendere (oltre al supporto E4X senza soluzione di continuità) ...
perché non fork Jaxer su Github (è open source ora) e farlo funzionare su node.js ... poi ALLLLLL questa roba è solo libero (e quindi alcuni).
BTW: a chi non è sicuro "perché questo è utile" ... perché PHP è utile? Same ... esatto ... caso d'uso. I valori di server-side js (SSJS), tuttavia, significa che possiamo iniziare a vedere al 100% la parità tra il codice di là dei confini app ... e se non è possibile allungare la mente abbastanza lontano per vedere i valori in questo, beh ... spiacente for'ya :)
Buon roba qui (ancora una volta).
Commento di Ryan Gahl - 15 Aprile 2010 #
Nevermind (tipo di) ... DOM/BOM/E4X/XHTML Jaxer è derivato direttamente da Spidermonkey, mentre node.js V8 è solo (quindi non E4X nativo ancora).
Ancora ... qualcuno con il know-how dovrebbe essere in grado di tirare un sacco di roba preziosa elaborazione del progetto Jaxer, se anche solo dal punto di vista concettuale.
Porting Spidermonkey / Tracemonkey ad un suono contesto V8/node.js fattibile?
Commento di Ryan Gahl - 15 Aprile 2010 #
L'uomo, continuo a non rendere al 100% senso qui.
Suppongo che sia semplicemente una questione di "node.js / questo approccio handrolling" VS. : Jaxer / Spidermonkey "
Alla fine i ragazzi node.js handrolling probabilmente vincerete quando qualcuno pubblica una raccolta di moduli che corrispondono Jaxer le capacità ma con il valore aggiunto che provengono dai node.js / CommonJS / ecosistema JSGI.
E ok, ho finito per ora. Roba buona.
Commento di Ryan Gahl - 15 Aprile 2010 #
@ SiggyTheViking -
In realtà, che (dup id) è stata apposta per dimostrare che funziona come previsto ;)
Commento di Dav Glass - 19 Aprile 2010 #
Hey Dav,
Oltre al bug uno, che ha altri problemi a trovare e risolvere in nodo-HTMLParser? Se ci sono più, avrei volentieri accettare un req pull o patch.
Ti dispiacerebbe dare un'occhiata al più tardi il nodo-HTMLParser? E 'ora v1.0 +, supporta lo streaming, è circa il 40% più veloce rispetto alla versione che biforcuta, e io sarà sicuramente che lo sostengono nel futuro, poiché è il cuore del mio progetto attuale.
Commento di Chris Winberry - 20 aprile 2010 #
Come si esegue questa? Hai eseguito il test di base attraverso un util benchmark e rispetto al solo sputando le stringhe di codice HTML? Proprio curioso di sapere se questo sarebbe fattibile in un sito ad alto traffico.
Commento di Ben - 20 Aprile 2010 #
Ben -
Non ho fatto ancora alcuna analisi comparativa formale, poiché si tratta di un proof of concept e ho trascorso un po 'meno di una settimana su di essa ;)
Io, tuttavia, avere quella sulla mia lista ..
Commento di Dav Glass - 21 Aprile 2010 #
Impressionante roba incredibile awesome! Fork e la clonazione in questo momento!
Commento di Spartan - 24 Aprile 2010 #
Nessuno degli esempi precedenti lavori. L'errore è:
502 Bad Gateway
Commento di Teodor - 2 Maggio 2010 #
@ Teodor -
Sono adesso, il mio provider di hosting riavviato la mia fetta di accoglienza ed i processi nodo non è venuto con la macchina ..
Commento di Dav Glass - 2 Maggio 2010 #
Ciao Dav,
Ho passato con questo, ma non ha potuto ottenere il pacchetto 'nodejs-dom' per il suo utilizzo nella mia applicazione.
Ho il seguente scenario.
Ho una semplice pagina HTML in cui ho aggiunto YUI 3 e in un iframe ho la src del iframe insieme a qualche altra pagina html. Ora voglio aggiungere la delegazione evento per la pagina visualizzata in iframe, in modo che, posso gestire un evento click della pagina visualizzata in iframe nella pagina principale html.
Sembra essere possibile in base al tuo post. Vuoi spiegare in che modo.
Grazie e saluti.
Commento di Shankha - 13 Mag, 2010 #
Grazie per il commento, "la stessa lingua == codice meno". Che davvero fatto clic su di esso per me. Sono appena stato a guardare e ho visto Node.js jsdom prima. Non usiamo YUI (jQuery per il momento). Così addingWould applicano gli stessi principi? Potrei aggiungere il nodo-HTMLParser e il vostro Browser falso per ottenere lo stesso risultato? Avrebbe potuto usare alcune indicazioni.
Questo non solo risolvere un problema di duplicazione del codice ma io sto pensando in termini di testare il codice JS. Qualcosa che noi come società e il mondo in generale sembrano essere ancora alle prese con.
Per quanto riguarda le prestazioni, quanto ho capito a causa Node.js essere evented non sarebbe che la rendono molto veloce, o almeno scalabile?
Commento di Phil Thpmpson - 2 Giugno 2010 #
@ Shankha -
Ci dispiace, non ho avuto una e-mail sul tuo post. Questa versione non supporta gli iframe o eventi sul lato server.
Commento di Dav Glass - 2 Giugno 2010 #
@ Phil -
JQuery Teoricamente dovrebbe funzionare sotto JSDom con i miei nodi HTMLParser pacchetti. Non ho provato ne so poco o niente su jQuery.
So che da un punto di vista sandbox (nuovo documento per richiesta) che può essere difficile eseguire una libreria che non è stato progettato per la configurazione di un documento e la finestra a un'istanza di se stesso. Questo è dove YUI 3 brilla davvero. Ogni nuova istanza YUI (uno per ogni richiesta) si è è proprio documento e la finestra legata ad esso e da soli. Allora non dovete preoccuparvi di miscelazione dei dati sulle richieste multiple.
Uno dei motivi per cui ho iniziato a lavorare su questo è stato quello di aggiungere in server-side suite di test. Tuttavia, non sarà un sostituto per un test browser reale.
Commento di Dav Glass - 2 Giugno 2010 #
Grazie per i vostri sforzi DAV.
Sto provando questo fuori, ma io sono sempre un "ReferenceError:" Errore di documento "non è definito.". Con il debug attivato posso vedere che sta accadendo subito dopo "event-delegato-debug.js" è stato caricato. Ho provato a fare funzionare gli esempi come bene e hanno lo stesso errore.
Qualche suggerimento?
Grazie
Commento di peter - 17 Luglio 2010 #
@ Peter, stai utilizzando l'ultima codice da GitHub o l'ultima versione? Ho appena provato su più tardi dal GitHub e tutti gli esempi funzionano ancora.
Sentitevi liberi di mandami una nota (davglass [at] gmail [dot] com) fuori questo post, se hai ancora problemi.
Commento di Dav Glass - 21 Luglio 2010 #
Dav,
Appena provato a controllare questo fuori dal git. Alcuni dei percorsi sono cambiati i moduli esterni che significa che il readme in git non funziona completamente.
Sto anche diventando
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# WARNING: node-HTMLParser non è stato trovato.
# Element.innerHTML supporto setter è stato disattivato
# Element.innerHTML supporto getter continuerà a funzionare
# Download: http://github.com/tautologistics/node-htmlparser
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
Quando si esegue y-server-template.js.
Anche notato che uno dei percorsi è stata punto a una directory che aveva il tuo nome in esso. Purtroppo non riesco a ricordare esattamente dove era ora.
Mi scuso se c'è un posto migliore di questo post. Attualmente sto solo fare in giro in un pomeriggio di Domenica :).
Commento di Alan Hollis - 8 agosto 2010 #
@ Alan - Si dovrebbe miei forcelle di jsdom e il nodo-HTMLParser come sono conosciuti a lavorare con questo esempio.
Commento di Dav Glass - 10 Agosto 2010 #
@ Dav
Ciao Non avevo capito che avevi un fork di jsdom troppo. Era il modulo browser.js che mi ha confuso un po '. Ora ci sono due moduli separati che browser.js richiede htmltodom e domtohtml.
browser.js ora permette anche di passare il parser HTML che si desidera utilizzare in. chiamata windowAugmentation. Una volta ho fatto tutto solo ha funzionato.
Questa era la mia prima esperienza con node.js e Yui quindi ero un po 'più lento a lavorare le cose che avrei dovuto essere.
Apprezzo il vostro tempo nella creazione di questi campioni, mi hanno aiutato a imparare molto.
Grazie ancora,
Alan
Commento di Alan Hollis - 10 Agosto 2010 #
Ho letto questo articolo e una domanda: Posso usare questo come un browser per animali senza testa?
Ad esempio sotto il codice funziona?
YUI (). Utilizzare ('nodejs-dom', 'evento', 'nodo', function (Y) {
var = documento Y.Browser.document;
document.location = 'http://www.ajax_application.any';
sys.puts (document.outerHTML);
});
Ho una applicazione complessa che vorrei raschiare utilizzando qualcosa di simile. In questo momento sto usando Envjs ma so che avrò penalizzare le prestazioni in produzione e mi piacerebbe avere una soluzione migliore.
Ventura
Commento di Jorge Ventura - 2 Dicembre 2010 #
Ops!
Dovrebbe essere
window.location = 'http://www.ajax_application.any';
Commento di Jorge Ventura - 3 Dicembre 2010 #
@ Jorge -
È possibile accedere al contenuto di una pagina remota come questo:
https://gist.github.com/574000
Tuttavia, non è possibile garantire che la pagina remota eseguirà Javascript e potresti non avrà accesso alla pagina per "fare clic sui link" o interagire con esso. Essa sarà semplicemente una copia locale modificabile della pagina richiesta.
Commento di Dav Glass - 3 Dicembre 2010 #
Dav,
Stavo controllando il tuo codice e credo che io possa completare alcune parti. Il mio scopo è quello di raschiare sempre la stessa applicazione, non mi importa di immagini, CSS e l'interfaccia utente (pulsanti, fare clic e etc), ho bisogno solo per generare la struttura DOM in modo corretto.
Chi gli script, posso eseguire il codice, dopo il carico di completare il DOM all'interno della pagina. Devo implementare i metodi che fanno cambiamenti nel DOM, come document.write e document.writeln.
Forse necessarie per l'attuazione window.open e il Browser deve avere un elenco delle finestre perché gli script in fase di esecuzione richiederà per le nuove finestre.
Avete qualche suggerimento per rendere la vita più facile?
Grazie,
Ventura
Commento di Jorge Ventura - 4 Dicembre 2010 #
Dav
Sto lavorando con il tuo esempio esplicito del server sul nodo v 0.3.2 (l'esempio che combina il tutto con un nav sinistra). Non riesce alla prima chiamata Imposta il titolo come "non può chiamare il metodo impostato su null".
Sono in grado di eseguire il calendario individuale ed esempi Visualizzazione a scheda, ma non l'esempio datatable o l'esempio raschiare.
Credo che ovunque io ottenere l'oggetto YUI come parametro callback è dove la sua mancanza in questo momento
Tutte le idee / trucchi? E 'questo nodo 0,3 problema?
Commento di Sai - 20 Dicembre 2010 #
Mi dispiace per l'osservazione muti sopra .... tutti gli esempi sono l'oggetto YUI come parametro callback in uso.
Ecco la traccia
. / Tnt-datatable-script.js
info: (yui): moduli mancanti: nodejs-dom, 1
info: (yui): Recupero loader: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/loader/loader-debug.js
info: (get): URL: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/loader/loader-debug.js
(Nodo) process.compile non deve essere usato. Utilizzare require ('vm'). RunInThisContext invece.
info: (get): Loaded: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/loader/loader-debug.js
info: (yui): Moduli mancanti: ribaltabili, nodejs-dom, 2
info: (yui): Utilizzo Loader
info: (loader): il tentativo di caricare dump, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
info: (get): URL: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/dump/dump-debug.js
info: (get): Loaded: / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build/dump/dump-debug.js
info: (loader): il tentativo di caricare nodejs-dom, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
info: (get): URL: / usr/local/lib/node/.npm/yui3/0.5.17/package/lib/yui3-dom.js
info: (get): Loaded: / usr/local/lib/node/.npm/yui3/0.5.17/package/lib/yui3-dom.js
info: (loader): loader finitura: successo, yui_3_2_0_1_12928339018771, YUI-base, YUI-log, discarica, nodejs-dom
info: (yui): Installazione dipendenze disponibili: yui-base, yui-log, discarica, nodejs-dom
info: (yui): callback Nested uso: Yui-base, YUI-log, discarica, nodejs-dom
info: (yui): caching richiesta: nodejs-dom
info: test JSDom ..
info: (loader): Undefined modulo: yui2-DataTable, abbinato uno schema: yui2-
info: (loader): Undefined modulo: yui2-datasource, abbinato uno schema: yui2-
info: (yui): moduli mancanti: yui2-DataTable, yui2-datasource, 2
info: (yui): Utilizzo Loader
info: (loader): il tentativo di caricare yui2-datatable, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
info: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js
info: (get): Loaded: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js
info: (loader): il tentativo di caricare yui2-datasource, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
info: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datasource/yui2-datasource-debug.js
info: (get): Loaded: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datasource/yui2-datasource-debug.js
info: (loader): finitura loader: successo, yui_3_2_0_1_12928339018771 e yui2-DataTable, yui2-datasource
info: (loader): Undefined modulo: yui2-yahoo, abbinato uno schema: yui2-
info: (loader): Undefined modulo: yui2-dom, abbinato uno schema: yui2-
info: (loader): Undefined modulo: yui2-evento, abbinato uno schema: yui2-
info: (loader): Undefined modulo: yui2-pelle-sam-datatable, abbinato uno schema: yui2-
info: (loader): Undefined modulo: yui2-elemento, abbinato uno schema: yui2-
info: (yui): Moduli mancanti: yui2-yahoo, yui2-evento, yui2-dom, yui2-pelle-sam-datatable, yui2-elemento, 5
info: (yui): Utilizzo Loader
info: (loader): il tentativo di caricare yui2-pelle-sam-datatable, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
debug: (get): Get.css
debug: (get): Real carico CSS
info: (loader): il tentativo di caricare yui2-yahoo, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
info: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-yahoo/yui2-yahoo-debug.js
info: (get): Loaded: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-yahoo/yui2-yahoo-debug.js
info: (loader): il tentativo di caricare yui2-evento, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
info: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-event/yui2-event-debug.js
info: (get): Loaded: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-event/yui2-event-debug.js
info: (loader): il tentativo di caricare yui2-dom, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
info: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-dom/yui2-dom-debug.js
info: (get): Loaded: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-dom/yui2-dom-debug.js
info: (loader): il tentativo di caricare yui2-elemento, / usr/local/lib/node/.npm/yui3-core/2010.11.03/package/build /
info: (get): URL: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-element/yui2-element-debug.js
info: (get): Loaded: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-element/yui2-element-debug.js
info: (loader): loader finitura: successo, yui_3_2_0_1_12928339018771, yui2-yahoo, yui2-evento, yui2-datasource, yui2-dom, yui2-pelle-sam-datatable, yui2-elemento, yui2-datatable
info: (yui): callback Nested uso: yui2-DataTable, yui2-datasource
info: (yui): caching richiesta: yui2-DataTable, yui2-datasource
info: Creazione DataSource ..
info: Creazione DataTable ..
info: (get): Loaded: http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-element/yui2-element-debug.js
errore: (nodejsyui3): --------------------
errore: (nodejsyui3): TypeError: Impossibile impostare proprietà di intestazioni #, che ha solo un getter
errore: (nodejsyui3): a [object Object] _formatTdEl (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:5480:18 )
errore: (nodejsyui3): a [object Object] _getTrTemplateEl (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:5448:25 )
errore: (nodejsyui3): a [object Object] _addTrEl (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:5519:29 )
errore: (nodejsyui3): a [object Object]. ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:7327:47 )
errore: (nodejsyui3): a Object.run ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:92:28 )
errore: (nodejsyui3): a [object Object] _runRenderChain (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:7269:24 )
errore: (nodejsyui3):. a [object Object] render ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:7397:10 )
errore: (nodejsyui3): a [object Object]. ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datatable/yui2-datatable-debug.js:13101:18 )
errore: (nodejsyui3): a Function.issueCallback ( http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datasource/yui2-datasource-debug.js:389:26 )
errore: (nodejsyui3): a [object Object] handleResponse (. http://yui.yahooapis.com/2in3.4/2.8.2/build/yui2-datasource/yui2-datasource-debug.js:1150:8 )
errore: (nodejsyui3): --------------------
Commento di Sai - 20 Dicembre 2010 #
Sono tornato e installato Nave per passare tra le varie versioni dei nodi, ma ha incontrato gli stessi errori in precedenza. questi sono gli esempi che non lavorano per me:
scrape.js, raschiare-object.js, TNT-datatable-script.js, y-server.js.
Gli errori sono sempre relative al setter o setter su nulla su oggetti che non dispongono di un setter.
Commento di Sai - 20 Dicembre 2010 #
@ Sai -
Puoi email loro a me, invece di inviare qui, è difficile da leggere in commenti ;)
davglass (at) gmail (dot) com
Commento di Dav Glass - 20 Dicembre 2010 #
questo è così maledetto freddo e io non vedo l'ora di vederlo in azione, ma ...
non riesco a ottenere il progetto per l'esecuzione. il debugger mi dice che le bombe server.js on line 35 come express.bodyDecoder () non è definito.
Sono un utente pesante di YUI e meno di RoR e voleva vedere come node.js e serverside YUI poteva aiutarmi. Non ho mai usato node.js prima quindi non so se la versione che ho è il problema (node.js 0.5.0-pre ed espressa 2.0.0beta).
pete
Commento di pete - 6 marzo 2011 #
@ Pete -
Si dovrebbe usare Node 0.4.2 e Express@1.0.7 se si desidera utilizzare i miei esempi. La versione beta Express è troppo nuovo e non ho mosso i miei esempi oltre ad esso ancora.
Commento di Dav Glass - 7 marzo 2011 #