Advanced Ajax: architecture and best practices
9780131350649, 0131350641, 2007030306
""I very much enjoyed how this book covers the full Ajax application lifecycle and not only coding techniques.
261
54
4MB
English
Pages xv, 360 pages: illustrations, map; 24 cm
[379]
Year 2007;2008
Report DMCA / Copyright
DOWNLOAD PDF FILE
Table of contents :
Cover......Page 1
Contents......Page 8
Acknowledgments......Page 14
About the Author......Page 16
Introduction......Page 18
0.1 Ajax, the Acronym......Page 19
0.1.2 JavaScript......Page 20
0.1.3 XML......Page 21
0.2 This Book’s Intentions......Page 22
0.3 Prerequisites for This Book......Page 25
Chapter 1 Usability......Page 28
1.1 Interface Versus Showcase......Page 29
1.1.1 Implementation......Page 31
1.2 User Expectations......Page 33
1.3.1 The Throbber......Page 34
1.3.2 Progress Indicators......Page 37
1.3.3 Keeping the User in the Loop......Page 39
1.4.1 More Accessible......Page 47
1.4.2 Easier to Use......Page 49
1.4.3 Easier to Maintain......Page 50
1.4.4 Easier to Parse......Page 51
1.5 What CSS and JavaScript Have in Common......Page 54
Chapter 2 Accessibility......Page 60
2.1 WCAG and Section 508......Page 61
2.1.1 WCAG......Page 62
2.1.2 Section 508......Page 68
2.2 Screen Readers Can Handle Ajax......Page 70
2.2.1 Content Replacement......Page 71
2.2.2 Form Validation......Page 72
2.3 Unobtrusive Ajax......Page 73
2.4 Designing with Accessibility in Mind......Page 75
2.4.1 High-Contrast Design......Page 76
2.4.2 Zoomable Interface......Page 77
2.4.3 Easily Targeted Controls......Page 79
2.5 WAI-ARIA......Page 80
Chapter 3 Client-Side Application Architecture......Page 84
3.1 Objects and Event Triggering......Page 85
3.1.1 Native Object Event Handling......Page 87
3.1.2 JavaScript Objects......Page 88
3.2 Model-View-Controller Design Pattern......Page 104
3.2.1 The Model......Page 105
3.2.2 The View......Page 109
3.2.3 The Controller......Page 118
3.3.1 Advantages of Architecture......Page 121
Chapter 4 Debugging Client-Side Code......Page 124
4.1 Validation, Validation, Validation......Page 125
4.1.1 Markup Validator......Page 126
4.1.2 CSS Validator......Page 127
4.2 Browser Tools and Plugins......Page 128
4.2.1 The Console......Page 129
4.2.2 Internet Explorer......Page 130
4.2.3 Firefox......Page 133
4.2.4 Opera......Page 139
4.2.5 Safari......Page 141
4.3 JavaScript Profiling......Page 143
4.3.1 Recognizing Bottlenecks......Page 145
4.4 Unit Testing......Page 149
4.4.1 Assertions......Page 151
4.4.2 Test Setup......Page 152
4.4.3 The Test Itself......Page 154
4.4.4 Mock Objects......Page 157
4.4.5 Test Suites......Page 160
Chapter 5 Performance Optimization......Page 162
5.1.1 Schema......Page 163
5.1.2 Queries......Page 167
5.2.1 Bandwidth......Page 171
5.2.2 Latency......Page 175
5.3 Cache......Page 177
5.3.1 Filesystem......Page 178
5.3.2 Memory......Page 180
5.3.3 Completing the Implementation......Page 187
5.4 Taking Advantage of HTTP/1.1......Page 188
5.4.1 If-Modified-Since......Page 191
5.4.2 Range......Page 193
5.5 PHP Profiling......Page 195
5.5.1 Advanced PHP Debugger......Page 196
5.5.2 Xdebug......Page 199
Chapter 6 Scalable, Maintainable Ajax......Page 204
6.1.1 Processor Usage......Page 205
6.1.2 Memory Usage......Page 208
6.2 A Multitude of Simple Interfaces......Page 211
6.2.1 Modularity......Page 212
6.2.2 Late Loading......Page 215
6.3.1 Monolithic Applications......Page 218
6.3.2 Preloading......Page 221
Chapter 7 Server-Side Application Architecture......Page 224
7.1 Designing Applications for Multiple Interfaces......Page 225
7.2.1 The Model......Page 229
7.2.2 The Controller......Page 239
7.2.3 The View......Page 248
7.3 Using the Factory Pattern with Your Template Engine......Page 254
Chapter 8 Keeping a Web Application Secure......Page 260
8.1 HTTPS......Page 261
8.1.1 Why Use HTTPS?......Page 262
8.2 SQL Injection......Page 264
8.2.1 Don’t Use Magic Quotes......Page 265
8.2.2 Filtering......Page 266
8.2.3 Prepared Statements......Page 268
8.3.1 Escaping for Markup......Page 269
8.3.2 Escaping for URLs......Page 274
8.4 CSRF......Page 275
8.4.1 Check the Referer......Page 276
8.4.2 Submit an Additional Header......Page 278
8.4.3 Secondary, Random Tokens......Page 279
8.5 Don’t Trust the User......Page 282
8.6 Don’t Trust the Server......Page 283
Chapter 9 Documenting......Page 288
9.1.1 Jog Your Own Memory......Page 289
9.1.3 Mind That Bus......Page 291
9.2.1 phpDocumentor......Page 292
9.2.2 JSDoc......Page 300
9.3 Internal Developer Documentation......Page 305
9.3.1 Coding Standards......Page 306
9.3.2 Programming Guides......Page 310
9.3.3 Style Guides......Page 312
Chapter 10 Game Development......Page 314
10.1 A Different Kind of Security......Page 316
10.1.1 Validation......Page 317
10.1.2 Server-Side Logic......Page 319
10.2 Single Player......Page 321
10.2.1 Double Buffering with Canvas......Page 322
10.3.1 Streaming Response......Page 327
10.3.2 WHATWG event-source Element......Page 332
10.3.3 Predictive Animation......Page 334
Chapter 11 Conclusions......Page 338
11.1 Remember the Users......Page 339
11.2 Design for the Future......Page 340
11.3 Develop for the Future......Page 341
Bibliography......Page 342
Appendix A: Resources......Page 346
Appendix B: OpenAjax......Page 350
Conformance......Page 351
Namespace Registration......Page 354
Event Management......Page 355
A......Page 358
B......Page 359
C......Page 360
D......Page 362
E......Page 363
F......Page 364
H......Page 366
I......Page 367
M......Page 368
P......Page 370
S......Page 372
T......Page 374
V......Page 375
W......Page 376
X-Y-Z......Page 377