[Linuxtrent] Re: [ot] impazzire con AJAX e javascript

  • From: Mario <alexmario@xxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Sun, 4 Dec 2005 12:07:26 +0100

Andrea Rossato wrote:
> caro mario ti ringrazio molto dell'esempio, che mi apre gli occhi su 
> come strutturare la cosa. ora mi metto a sperimentare.
> qui si nota la mia difficoltà ad ambientarmi nella programmazione OO, e 
> la tendenza ad utilizzare oggetti e metodi come  fossero funzioni in un 
> linguaggio procedurale...
> avresti (tu o altri) qualche lettura, anche di una certa tecnicità, per 
> cercare di formarsi una "sensibilità" orientata agli oggetti?
> 

Direi che i tasselli che mancano sono sostanzialmente 2.

Il primo è la programmazione a eventi, che non è propria dell'ambiente Web.

Il secondo è appunto l'approccio OO.

In merito al secondo dovrebbero esserci abbondanti documenti in rete.

Questa mi pare una bella guida introduttiva alla teoria, quindi senza
esempi di codice : 
http://www.accu.org/acornsig/public/articles/ood_intro.html

Per quanto riguarda le applicazioni nei vari linguaggi c'è il mitico
Bruce Eckel, un programmatore di ottima esperienza OO che è anche un
ottimo scrittore.

Ti consiglio il suo : Thinking in patterns

http://www.mindview.net/

Trovi tutti i suoi libri in pdf, ha scritto guide object oriented per
diversi linguaggi (Java, C++, python...)

In javascript non ha fatto nulla, ma l'applicazione dei concetti risulta
più semplice dopo averne preso confidenza su altri linguaggi.

L'OO presenta alcune parti importanti oltre alla teoria di base :

1 design patterns, ovvero strutture già confezionate per risolvere
alcuni problemi, sono concetti di design, quindi il codice è da
scrivere, ma sono paradigmi interessanti perché permettono di dare la
soluzione migliore a certi problemi.

2 extreme programming, un approccio alla programmazione che punta a
ottenere un codice di alta qualità attraverso l'impiego di uno schema
preciso di lavoro.

3 paradigma a framework, ma questo è utile soltanto se si è intenzionati
a realizzare qualcosa che può essere impiegato in varie situazioni con
piccoli aggiustamenti.


> per il javascript ciò che mi ha dato una visione generale del liiguaggio 
> è stato questo:
> http://javascript-reference.info/
> un cheat sheet!
> 

Come diceva anche Guido javascript è più una acquisizione di esperienza
attraverso l'utilizzo di trucchi che non imparare il linguaggio di per se.
Questo perché la struttura del linguaggio è molto semplice ed il limite
consiste solo nella conoscenza che il programmatore ha del mondo Web.

Fra gli esempi di codice interessante che ho visto ultimamente c'è
http://www.tiddlywiki.com/

Forse potresti cannibbalizzare diverse parti per utilizzarle sul tuo editor.

> 
> il problema è che viene usato come proprietà sia per leggere ma anche 
> settare un ramo/albero del DOM, pur non facendone ufficialmente parte, 
> secondo gli standard. si tratta infatti di un'estensione proprietaria 
> introdotta da microsoft.[1]
> da quanto leggo l'operazione di settaggio non dovrebbe essere fatta con 
> il dom di un documento xml (quindi in una pagina xhtml servita come 
> andreabbe servita: application/xhtml+xml), il dom dovrebbe essere 
> modificato con metodi del dom stesso.
> 
> quindi, ad esempio:
> var div = document.getElementById('page');
> div.innerHTML = "Ciao! <b>Io sono un pezzo di HTML</b>";
> 
> in firefox-1.5 funziona
> 
> in firefox-1.0.7 e precedenti ciò dà un errore:
> Error: uncaught exception: [Exception... "Component returned failure 
> code: 0x80004005 (NS_ERROR_FAILURE) [nsIDOMNSHTMLElement.innerHTML]" 
> nsresult: "0x80004005 (NS_ERROR_FAILURE)"
> 
> ovviamente la cosa ha molto senso e firefox-1.0.7 faceva bene a non 
> permetterlo: il browser fa prima un parsing del docuemnto xhtml+xml (che 
> è appunto xml), ma poi puoi modificare il dom con innerHTML inserendogli 
> una normalissima stringa. boh.
>

Capisco.
Potresti implementare comunque in questo modo le varie parti, mettendo
il tutto in un catch[1], e in caso di eccezione implementare una
truttura via dom, vale a dire utlizzando appendChild e
createElement/createTextNode ricorsivo.


> 
> ciao e ancora grazie.
> andrea
>

Figurati, anzi la cosa mi interessa e se ti serve una mano sarei felice
di dartela.
 
[1] In javascript è possibile utilizzare la gestione degli errori con la
seguente sintassi :

try {
  // code
} catch(error) {
  // code on error
}
 
E' utilissiomo per debuggare i problemi su explorer.
Inoltre con throw puoi anche scatenare eccezioni che quindi ti aiutano a
individuare dove si scatena il problema.

Lo riporto perché è una parte recente in javascript, forse non tutti i
browser lo supportano (Mozilla 1.1 >/Firefox 1.0 > /IE 6.0 > sì da
quello che ho provato).

-- 
Ciao,
  Mario.


----------------------------------------------------
This mail has been sent using Alpikom webmail system
http://www.alpikom.it

-- 
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: