12. mediu de executie
(host-environment):
navigator Web
“injectarea” de cod JavaScript
in documentele (X)HTML via <script>
13. mediu de executie
(host-environment):
platforma de dezvoltare
a aplicatiilor
e.g., Adobe Flex/AIR
14. mediu de executie
(host-environment):
aplicatie de sine-statatoare
Adobe Creative Suite, UltraEdit etc.
15. mediu de executie
(host-environment):
procesor (engine) independent
e.g., Yahoo! Widget Engine
16. mediu de executie
(host-environment):
componente
ale sistemului de operare
Dashboard – Mac OS X
Sidebar – Windows Vista/7
17. cuvinte rezervate:
break else new var case finally return
void catch for switch while continue
function this with default if throw
delete in try do instanceof typeof
18. alte cuvinte rezervate:
abstract enum int short boolean export
interface static byte extends long super
char final native synchronized class float
package throws const goto private transient
debugger implements protected volatile
double import public
19. tipuri de date:
Number
dubla precizie, stocare pe 64 biti
String
secvente de caractere Unicode, 16 biti
Boolean
secvente ce se pot evalua ca true/false
Object
Function, Array, Date, RegExp
Null
semnifica “nici o valoare”
Undefined
“nici o valoare asignata inca”
20. “valoarea” NaN – “not a number”
parseInt ("Salut")NaN
isNaN (NaN + 33)true
41. tablouri
var zoo = new Array ();
zoo[0] = "pinguin";
zoo[1] = "omida";
zoo[2] = "urs";
zoo.length3
42. tablouri
var zoo = new Array ();
zoo[0] = "pinguin";
zoo[1] = "omida";
zoo[2] = "urs";
zoo.length3
notatie alternativa:
var zoo = ["pinguin", "omida", "urs"];
43. tablouri
iterari:
for (var iter = 0;
iter < zoo.length; iter++) {
// de prelucrat zoo[iter]
}
for (var iter = 0, lung = zoo.length;
iter < lung; iter++) {
// varianta mai buna
// de prelucrat zoo[iter] de ce?
}
44. tablouri
elementele pot apartine
unor tipuri de date eterogene
var zoo = [16, "musca", true, "gaga"];
45. functii
obiecte definite prin function
function transformaPixeliInPuncte (px) {
var puncte = px * 300;
return puncte;
}
51. de la functii la clase:
function Animal (nume, marime) {
this.nume = nume; // date-membre
this.marime = marime;
this.oferaNume = function () { // metoda
return this.nume;
};
this.oferaMarime = function () { // metoda
return this.marime;
};
}
67. rularea in browser
de pilda, poate fi accesat obiectul global window
<script type="application/javascript">
var nav = window.navigator.userAgent;
// date privitoare la browser
</script>
69. graceful degradation &
progresive enhancement
initial: interactiune minimala, fara JavaScript
adaugarea progresiva a facilitatilor,
in functie de context
71. JSON – JavaScript Object Notation
format compact pentru interschimb de date
intre aplicatii
72. JSON – JavaScript Object Notation
folosit la serializarea datelor in contextul Web
uzual, transfer (a)sincron de date
intre servicii Web si aplicatii (clienti)
73. JSON – JavaScript Object Notation
defineste datele in termeni de obiecte & literali
json.org
74. {
'nume' : 'Tux',
'stoc' : 33,
'gen' : ['candid', 'furios', 'vesel']
}
datele pot fi
evaluate direct
in JavaScript
75. instrumente
medii de dezvoltare
Aptana Studio
depanare
Firebug (Lite)
Visual Studio Developer 2010
79. jQuery
scop principal:
manipularea documentului HTML
pe baza selectorilor CSS – nivelul 3
ofera un API concis, usor de folosit,
disponibil open source
http://jquery.com/
http://visualjquery.com/
82. jQuery
accesul la nodurile documentului HTML
se realizeaza via functia jQuery()
notatie prescurtata: $()
83. // liniile de tabel de pe pozitii pare vor fi redate
// via proprietatile CSS din clasa ‘fundal-gri’
$("table tr:nth-child(even)").addClass("fundal-gri");
obiect selector metoda
jQuery CSS (functionalitate)
85. jQuery
selectori “magici”:
privitori la pozitie – :first :last
vizibilitate – :hidden :visible
referitori la animatie – :animated
vizand formularele Web – :input :text
:password :radio :submit
desemnand cu anumit continut
:contains (...)
86. jQuery
selectarea nodurilor dorite recurge la
conventiile privitoare la selectorii CSS
$('div.info')
toate elementele <div class="info">
$('div#adresa')
elementul <div id="adresa">
$('div h1')
in contextul: <div> care include <h1>
$('div#menu > p')
in contextul:
<div id="menu"> cu descendentii <p>
87. unele rezultate ale $(…) pot intoarce
colectii de noduri, prelucrate prin:
$('div.info').size ()
marimea colectiei obtinute
$('div.info').each (function(div) { ... })
iterator
$('div.info').html ('<em>Salut</em>')
inserare de cod HTML
88. unele rezultate ale $(…) pot intoarce
colectii de noduri, prelucrate prin:
$('img.foto').attr ('src', '/anonim.png')
alterarea unui atribut
$('a.menu').addClass ('vizitat')
adaugarea unei clase CSS
$('p:odd').css ('color: blue')
modificare de proprietati CSS
89. suportul pentru transferuri asincrone – Ajax:
$('div#stiri').load ('stiri.html');
incarcare asincrona
$.get (url, parametri, functie-callback);
incarcare prin GET
$.post (url, parametri, functie-callback);
incarcare via POST
$.getJSON (url, parametri, functie-callback);
preluare raspuns in format JSON
90. jQuery
extinderi via plug-in-uri:
manipularea formularelor
jquery.com/plugins/project/form
91. jQuery
extinderi via plug-in-uri:
efecte de interfata +
facilitarea interactiunii cu utilizatorul
(e.g., slider, tabs, resize, drag & drop)
http://ui.jquery.com/
92. jQuery
extinderi via plug-in-uri:
pentru alte detalii, a se consulta
http://plugins.jquery.com
94. resurse
B. Bibeault, Y. Katz, jQuery in Action,
Manning, 2008
S. Buraga (coord.), Programarea
in Web 2.0, Polirom, 2007
R. Harmes, D. Diaz,
Pro JavaScript Design Patterns,
Apress, 2008
M. Haverbeke, Eloquent JavaScript, 2007:
http://eloquentjavascript.net/
S. Willinson,
A (Re)-Introduction to JavaScript,
ETech Conference, 2005
95. resurse
Mozilla Developer Center
developer.mozilla.org
Ajaxian
www.ajaxian.com
Ajax Patterns
www.ajaxpatterns.org
jQuery
http://docs.jquery.com
www.learningjquery.com