Newsgroup: it.comp.lang.javascript
Titolo: Librerie e namespace

Due domande in un post.
1) Avete mai provato in produzioni o avete opinioni pensate e sensate
:-) sulle diverse librerie javascript che ci sono in giro?
Ormai convinto della necessità di usare delle librerie "standard",
anche perchè oltre la marea di funzioni sparse non ho delle mie
librerie javascript, ne ho individuato due che mi sembrano le migliori
e le più affidabili:
- 
http://dojotoolkit.org/
- 
http://mochikit.org/
La seconda mi ispira più fiducia vista la completa documentazioni, il
fatto che sia più limitata al "core" e lasci stare i widgets. Da
aggiungere che il blog del creatore della libreria è sempre seguito
dal Gotha javascript internazionale.
La famosa 
prototype.conio.net
 mi ispira meno a causa del
Object.prototype "hacking" che nonostante fosse nelle intenzioni
dell'inventore di javascript:
http://weblogs.mozillazine.org/roadmap/archives/008325.html
mi sembra che possa portare un bel pò di problemi soprattutto quando
si mischiano delle librerie.
2) Mi sapete spiegare le diverse tecniche (che poi mi sembrano molto
simili) per creare un namespace in javascript e cosa consigliare? Al
momento ho individuato 3 modi per creare i namespace:
A) Quello utilizzato dalle YAHOO UI library
https://srv4.zim.mpg.de/sec-cgi-bin/epubtktrac/file/trunk/ePubTk/lib/js/YAHOO.js?rev=793
B) Quello spiegato per le js STL
http://www.webreference.com/programming/javascript/gr/column13/index.html
C) Quello usato da Mochikit
http://trac.mochikit.com/browser/mochikit/trunk/MochiKit/MochiKit.js
Ciao.
Fabio Serra

 simili) per creare un namespace in javascript e cosa consigliare?
Non lo crei, in caso lo simuli. Alla fine il metodo universalmente usato
è quello di utilizzare un object initializer; trattando quindi nella
pratica il "namespace" come un oggetto.
Ovviamente poi devi riferirti tramite:
Namespace.etc;
A meno che tu non voglia farti una funzione del tipo:
function using (ns){...};
dove poi "iteri" l'oggetto ns e rendi i suoi metodi/proprietà "globali".
Stai attento, ovviamente, a non abusare di questa cosa. Potresti farti
prendere la mano iniziando a pensare che, cose che si vedono in altri
linguaggi tipo:
System.FormControl.Validation
possa essere figo, per poi ritrovarsi "cascate" di object initializer. E
secondo me, non ne vale la pena.
-- 
"When you have eliminated the impossible, whatever remains, 
however improbable, must be the truth." 

 System.FormControl.Validation
Già era quello che pensavo :-) ma ti dò ragione. Però un minimo secondo
me conviene usarli, soprattutto adesso dove può diventare probabile
usare librerie diverse. È meglio pararsi da eventuali conflitti tra nomi
di classi.
Quindi un qualcosa come
if (FASER == undefined) var FASER = {}; //controllo il NS
FASER.Automobile = function () {};   //Costruttore
FASER.Automobile.prototype.faiQualcosa = function() {} //Metodo
Non dovrebbe far male.
-- 
--
FABIO SERRA
Per rispondere in e-mail sostituire "invalid" con "faser"
*Questo testo deve essere valutato secondo il senso della RFC-3*
------------------

 Non dovrebbe far male.
No, infatti; qui rimani anche ad un livello. Ti mettevo solo in guarda
dal non farti prendere la mano. :)
