Plugin-Entwicklung mit jQuery

von: Jakob Westhoff

entwickler.press, 2010

ISBN: 9783868022377 , 300 Seiten

Format: PDF, OL

Kopierschutz: frei

Windows PC,Mac OSX geeignet für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 22,00 EUR

Mehr zum Inhalt

Plugin-Entwicklung mit jQuery


 

Inhaltsverzeichnis

4

Vorwort

12

1 JavaScript: Ein Überblick

14

1.1 Webanwendungen

14

1.2 Serverseitige Webanwendungen

15

1.3 Eingebettet

16

1.4 JavaScript als Wunderwaffe?

17

1.5 Zusammenfassung

18

2 Willkommen in der Welt von jQuery

20

2.1 Herunterladen und Einbinden von jQuery

20

2.1.1 Download von der jQuery-Webseite

21

2.1.2 Verwendung eines CDN

23

2.1.3 Welcher Weg ist der bessere?

25

2.2 jQuery vs. JavaScript

25

2.3 Dokumententraversierung

28

2.3.1 CSS-Selektoren

28

2.3.2 Element-Sets

31

2.3.3 Fluent Interface

32

2.3.4 Traversierung der Baumstruktur

32

2.3.5 jQuerys Gedächtnis für Sets

34

2.4 Dokumentenmanipulation

35

2.4.1 CSS-Eigenschaften

35

2.4.2 Umgang mit Attributen und CSS-Klassen

38

2.4.3 Erstellen neuer Elemente

40

2.4.4 Elemente im DOM platzieren

42

2.4.5 Inhalte von Elementen auslesen und verändern

43

2.4.6 Elemente ersetzen, umhüllen oder löschen

47

2.4.7 Elemente aus dem DOM lösen

51

2.4.8 Optische Position und Größe

51

2.4.9 Callbacks anstelle von Werten mit jQuery 1.4

56

2.5 Ereignisbehandlung

57

2.5.1 Ereignisse registrieren mit jQuery

57

2.5.2 Das Event-Objekt

58

2.5.3 Ereignisregistrierungen wieder aufheben

59

2.5.4 Ereignisse auslösen

60

2.5.5 Umgang mit benutzerdefinierten Ereignissen

61

2.5.6 Abkürzungen zur Ereignisregistrierung

62

2.5.7 Ereignisnamensräume

64

2.5.8 Der Weg eines Ereignisses

65

2.5.9 Ereignisdelegation

66

2.5.10 Ereignisse außerhalb von Elementen

70

2.5.11 Die Proxy-Funktion

73

2.6 Animation

75

2.6.1 CSS-Eigenschaften über die Zeit verändern

75

2.6.2 Relative Werte als Animationsziel

76

2.6.3 Werte mit spezieller Bedeutung

77

2.6.4 Mehrschrittige Animationen

78

2.6.5 Animationen während der Ausführung anhalten

80

2.6.6 Eine Easing-Funktion pro Eigenschaft

80

2.6.7 Animieren mit Abkürzungen

80

2.7 AJAX mit jQuery

82

2.7.1 JSON

83

2.7.2 Verschiedene Kommunikationswege

85

2.7.3 Die ajax-Funktion

90

2.7.4 Globale AJAX-Optionen mit ajaxSetup

99

2.7.5 Abkürzungen auf dem Weg zu neuen Daten

100

2.8 Zusammenfassung

102

3 jQuery-Plug-ins

104

3.1 Was sind jQuery-Plug-ins?

104

3.2 Unterschiedliche Plug-in-Typen

105

3.2.1 Neue Methoden

106

3.2.2 Neue Funktionen

108

3.2.3 Special Events

108

3.2.4 Animations Easing-Funktionen

108

3.2.5 CSS-Selektoren

109

3.2.6 Widgets

109

3.2.7 Effects

109

3.2.8 Behaviours

110

3.3 Grundregeln der Plug-in-Entwicklung

110

3.3.1 Konventionen zur Namensgebung

110

3.3.2 Zugriff auf die jQuery-Bibliothek

112

3.3.3 Anlegen neuer Set-Methoden

114

3.3.4 Anlegen neuer Funktionen

115

3.3.5 Beachtung des Fluent-Interface

115

3.3.6 Multiple Elemente eines Sets korrekt behandeln

116

3.4 Grundgerüst

117

3.5 Zusammenfassung

118

4 Hello World

120

4.1 Anforderungen an das Plug-in

120

4.2 Grundgerüst des world-Plug-ins

120

4.3 Behandlung von Optionen

121

4.3.1 Implementierung der Optionsbehandlung

122

4.4 Manipulation des DOM

125

4.5 Das vollständige Plug-in

126

4.6 Zusammenfassung

127

5 Objektorientierung

128

5.1 Konzept der Objektorientierung

128

5.1.1 Ein Beispiel bitte!

129

5.2 Klassen != Prototypen

130

5.2.1 Objekte in JavaScript

131

5.2.2 Prototypen

134

5.2.3 Konstruktorfunktionen

138

5.3 Zurück zum Bankszenario

140

5.3.1 Der Prototyp für das Kundenobjekt

140

5.3.2 Der Prototyp für das Kontenobjekt

141

5.3.3 Anlegen neuer Kunden- und Kontenobjekte

142

5.4 Prototype Chains

142

5.4.1 Ketten von Prototypen

143

5.4.2 Ein weiteres Hindernis: Konstruktorfunktionen

145

5.5 Zurück zum Bankszenario II

147

5.6 Zusammenfassung

148

6 Livesearch

150

6.1 Livesearch im Detail

150

6.2 Aufgaben des Plug-ins

151

6.3 Kategorisierung des Plug-ins

153

6.3.1 Objektorientiertes Design

153

6.3.2 Objektorientierung nicht zum Selbstzweck

154

6.4 Das übliche Grundgerüst

154

6.5 Das _Livesearch-Objekt

156

6.5.1 Der Konstruktor

156

6.5.2 Methode: disableNativeAutocomplete

158

6.5.3 Methode: createListContainer

159

6.5.4 Methode: createSearchFunction

161

6.5.5 Methode: attachToTarget

165

6.5.6 moveCursor-Methode

170

6.5.7 closeAutocompleteList-Methode

172

6.5.8 renewSearchDelay-Methode

173

6.5.9 abortRunningSearch-Methode

175

6.5.10 executeSearch-Methode

175

6.5.11 resultReceived-Methode

176

6.6 Glückwunsch zum ersten echten Plug-in

177

6.7 Zusammenfassung

178

7 Neue Funktionen für jQuery

180

7.1 Kurzeinführung in REST

180

7.2 Die Funktionen $.put, $.head und $.delete

181

7.2.1 Die Definition von Funktionen

182

7.3 Zusammenfassung

184

8 Special Events

186

8.1 Aufbau eines Special Events

186

8.1.1 Magische Methoden

187

8.2 Existierende Ereignisse erweitern

190

8.2.1 Ein angemessener Mauszeiger für alle Elemente

190

8.3 Drag and Drop

191

8.3.1 Die Ereignisse „dragstart“, „dragmove“ und „dragend“

192

8.3.2 Das Kernstück: _Handler

193

8.4 Tastaturshortcuts mit „add“ und „remove”

196

8.4.1 Erweiterung des keypress-Ereignisses

197

8.5 Zusammenfassung

199

9 CSS-Selektoren entwickeln

200

9.1 Sizzle

200

9.1.1 Geschichte von Sizzle

200

9.1.2 Sizzles Erweiterungsmöglichkeiten

201

9.2 Neue Pseudoklassen für jQuery

205

9.2.1 Die Pseudoklasse :draggable

205

9.2.2 Die Pseudoklasse :ev

208

9.3 Zusammenfassung

210

10 Easing-Funktionen zur Animationskontrolle

212

10.1 Easing-Funktionen im Allgemeinen

212

10.2 jQuerys Dreingaben: linear und swing

212

10.2.1 Easing auf einen Blick: Grafische Darstellung

212

10.2.2 jQuerys Interface für Easing-Funktionen

213

10.3 Weitere Easing-Funktionen mit dem Easing- Plug-in

218

10.3.1 Grafische Übersicht über die Funktionen des Plug-ins

219

10.4 Zusammenfassung

223

11 jQuery UI

224

11.1 Installation und Einsatz

225

11.2 Bereiche des Frameworks

227

11.3 Widgets und Behaviours im Einsatz

228

11.3.1 Das Widget-API

228

11.3.2 Behaviours

231

11.4 Animationen und Effekte

233

11.4.1 Effekte – Das neue Pferd im Stall

233

11.4.2 Farbanimationen und Klassenübergänge

234

11.4.3 Easing – Übergänge mit Niveau

237

11.5 ThemeRoller

237

11.6 Entwicklung eigener jQuery UI Widgets

238

11.6.1 Widget oder Plug-in?

239

11.6.2 Ziel: Das myprogressbar-Widget

240

11.6.3 Die Widget Factory

241

11.6.4 Verarbeitung von Optionen

243

11.6.5 Magische Methoden und Eigenschaften

246

11.6.6 Widgets erschaffen und zerstören

250

11.6.7 Rückgabe eines konkreten Wertes

252

11.7 Behaviours entwickeln

254

11.7.1 Behaviour: destroyable

254

11.8 Komplexe Effekte zum Selbermachen

258

11.8.1 registrierung des eigenen Effekts

258

11.8.2 Effektoptionen behandeln

259

11.8.3 Hilfsmittel zur Effektentwicklung

260

11.8.4 Der grid-Effekt im Detail

262

11.9 Widgets fit für den ThemeRoller

268

11.9.1 jQuery-UI-CSS-Framework

268

11.9.2 Namensgebung für eigene CSS-Klassen

270

11.10 Zusammenfassung

271

12 Testen von Software

272

12.1 Verschiedene Stufen des Testens

272

12.2 Unit Tests in JavaScript

274

12.2.1 Testframeworks

274

12.3 QUnit

275

12.3.1 Download und Dokumentation

275

12.3.2 Einrichten einer Testumgebung

275

12.3.3 Der erste Unit Test

278

12.3.4 Assertions

281

12.3.5 Das xUnit-Pattern und QUnit

284

12.3.6 HTML Fixtures

287

12.3.7 Ereignisbehandlung testen

290

12.3.8 Asynchrone Aufrufe testen

293

12.3.9 FireUnit mit QUnit verheiraten

296

12.4 Mocks und Stubs

297

12.4.1 Simulation Stubs

298

12.4.2 Mock-Objekte

301

12.4.3 Sinon.JS – Stubs, Mocks und Spys

301

12.4.4 Sinon.JS und der fakeXMLHttpRequest

302

12.4.5 Ein Stub für die Zeit

305

12.5 JsTestDriver

310

12.5.1 Client/Server-Architektur

311

12.5.2 Installation und Einrichtung einer Testumgebung

312

12.5.3 Assertions

319

12.5.4 Testlebenszyklen

321

12.5.5 HTML-Fixtures

322

12.5.6 Asynchrone Tests mit JsTestDriver

325

12.5.7 Code-Coverage-Analyse

325

12.5.8 Legacy-Tests: QUnit-Tests mit JsTestDriver ausführen

330

12.6 Zusammenfassung

331

Stichwortverzeichnis

334

Symbole

334

A

334

B

334

C

335

D

335

E

336

F

337

G

337

H

337

I

338

J

338

K

338

L

339

M

339

N

339

O

339

P

340

Q

340

R

340

S

341

T

341

U

342

V

342

W

342

X

343

Y

343

Z

343