What is included with this book?
Kyle Loudon is a software developer at Yahoo! where he leads a group doing user interface development. Some of Kyle's experiences prior to joining Yahoo! include working on the user interface for the original Apple iPod, writing software for various other mobile devices, and leading the user interface group at Jeppesen Dataplan (a Boeing company) in the development of a flight planning system used by airlines around the world. He also spent a small amount of time with IBM in the early 1990s. For several years, he has taught object-oriented programming part-time at the University of California, Santa Cruz while working as a software developer in Silicon Valley.
Kyle received a B.S. in Computer Science from Purdue University in 1992 with a minor in French, and was elected there to the Phi Beta Kappa honor society. He has also done some advanced education in Computer Science at Stanford University.
Foreword | p. xi |
Preface | p. xiii |
The Tenets | p. 1 |
Managing Complexity | p. 1 |
Modular Components | p. 3 |
Achieving Modularity | p. 3 |
Benefits of Modularity | p. 4 |
Ten Tenets for Large Web Applications | p. 4 |
Object Orientation | p. 7 |
The Fundamentals of OOP | p. 8 |
Why Object Orientation? | p. 9 |
UML Class Diagrams | p. 9 |
Generalization | p. 10 |
Association | p. 10 |
Modeling a Web Page | p. 11 |
Defining Page Types | p. 11 |
Defining Module Types | p. 11 |
Writing the Code | p. 12 |
Achieving Modularity | p. 14 |
Object-Oriented PHP | p. 15 |
Classes and Interfaces | p. 15 |
Inheritance in PHP | p. 19 |
Object-Oriented JavaScript | p. 22 |
Objects | p. 22 |
Inheritance in JavaScript | p. 25 |
Large-Scale HTML | p. 27 |
Modular HTML | p. 28 |
A Bad Example: Using a Table and Presentation Markup | p. 28 |
A Better Example: Using CSS | p. 30 |
The Best Example: Semantically Meaningful HTML | p. 31 |
Benefits of Good HTML | p. 35 |
HTML Tags | p. 37 |
Bad HTML Tags | p. 37 |
Good HTML Tags | p. 38 |
IDs, Classes, and Names | p. 40 |
Conventions for Naming | p. 41 |
XHTML | p. 41 |
Benefits of XHTML | p. 41 |
XHTML Guidelines | p. 42 |
RDFa | p. 45 |
RDFa Triples | p. 45 |
Applying RDFa | p. 46 |
HTML 5 | p. 49 |
Large-Scale CSS | p. 51 |
Modular CSS | p. 52 |
Including CSS | p. 52 |
Applying CSS | p. 55 |
Specificity and Importance | p. 57 |
Scoping with CSS | p. 58 |
Standard Module Formats | p. 63 |
Positioning Techniques | p. 65 |
CSS Box Model | p. 66 |
Document Flow | p. 67 |
Relative Positioning | p. 68 |
Absolute Positioning | p. 68 |
Floating | p. 70 |
Layouts and Containers | p. 71 |
Example Layouts | p. 72 |
Example Containers | p. 80 |
Other Practices | p. 82 |
Browser Reset CSS | p. 83 |
Font Normalization | p. 85 |
Large-Scale JavaScript | p. 87 |
Modular JavaScript | p. 88 |
Including JavaScript | p. 88 |
Scoping with JavaScript | p. 90 |
Working with the DOM | p. 92 |
Common DOM Methods | p. 92 |
Popular DOM Libraries | p. 93 |
Working with Events | p. 98 |
Event Handling Normalization | p. 99 |
A Bad Example: Global Data in Event Handlers | p. 99 |
A Good Example: Object Data in Event Handlers | p. 100 |
Event-Driven Applications | p. 101 |
Working with Animation | p. 102 |
Motion Animation | p. 102 |
Sizing Animation | p. 103 |
Color Transition | p. 104 |
An Example: Chained Selection Lists | p. 105 |
Data Management | p. 115 |
Dynamic Modules | p. 116 |
Data Managers | p. 117 |
Creating Data Managers | p. 120 |
Extending Data Managers | p. 121 |
Data Using SQL As a Source | p. 123 |
An SQL Example | p. 124 |
Data Using XML As a Source | p. 127 |
An XML Example | p. 127 |
Data from Web Services | p. 131 |
Data in the JSON Format | p. 132 |
Cookies and Forms | p. 133 |
Managing Data in Cookies | p. 133 |
Managing Data from Forms | p. 134 |
Large-Scale PHP | p. 135 |
Modular Web Pages | p. 136 |
Generating Pages in PHP | p. 136 |
Working with Pages | p. 141 |
Public Interface for the Page Class | p. 141 |
Abstract Interface for the Page Class | p. 144 |
Implementation of the Page Class | p. 147 |
Extending the Page Class | p. 157 |
Working with Modules | p. 162 |
Public Interface for the Module Class | p. 162 |
Abstract Interface for the Module Class | p. 163 |
Implementation of the Module Class | p. 164 |
Extending the Module Class | p. 165 |
An Example Module: Slideshow | p. 165 |
Layouts and Containers | p. 177 |
Special Considerations | p. 180 |
Handling Module Variations | p. 180 |
Multiple Instances of a Module | p. 181 |
Dynamic JavaScript and CSS | p. 182 |
Implementing Nested Modules | p. 182 |
Large-Scale Ajax | p. 185 |
In the Browser | p. 186 |
Managing Connections | p. 186 |
Using Ajax Libraries | p. 189 |
On the Server | p. 194 |
Exchange Formats | p. 194 |
Server Proxies | p. 197 |
Modular Ajax | p. 198 |
MVC and Ajax | p. 200 |
Using Ajax with MVC | p. 201 |
Public Interface for the Model Object | p. 206 |
Implementation of the Model Object | p. 207 |
Public Interface for the View Object | p. 209 |
Abstract Interface for the View Object | p. 209 |
View Object Implementation | p. 210 |
Public Interface for the Connect Object | p. 210 |
Abstract Interface for the Connect Object | p. 211 |
Implementation of the Connect Object | p. 212 |
Controllers | p. 214 |
An Example of Ajax with MVC: Accordion Lists | p. 215 |
Performance | p. 221 |
Caching Opportunities | p. 222 |
Caching CSS and JavaScript | p. 222 |
Caching Modules | p. 227 |
Caching for Pages | p. 231 |
Caching with Ajax | p. 231 |
Using Expires Headers | p. 233 |
Managing JavaScript | p. 234 |
JavaScript Placement | p. 234 |
JavaScript Minification | p. 234 |
Removing Duplicates | p. 235 |
Distribution of Assets | p. 237 |
Content Delivery Networks | p. 237 |
Minimizing DNS Lookups | p. 237 |
Minimizing HTTP Requests | p. 238 |
Control Over Site Metrics | p. 241 |
Modular Testing | p. 243 |
Using Test Data | p. 243 |
Creating Test Data | p. 245 |
Application Architecture | p. 247 |
Thinking Modularly | p. 247 |
Organizing Components | p. 248 |
Sitewide Architecture | p. 248 |
Section Architecture | p. 254 |
Architecture for Pages | p. 256 |
Architecture and Maintenance | p. 258 |
Reorganizing Module Uses | p. 258 |
Adding Module Variations | p. 261 |
Making Widespread Changes | p. 263 |
Changes in Data Sources | p. 266 |
Exposing Modules Externally | p. 268 |
Index | p. 271 |
Table of Contents provided by Ingram. All Rights Reserved. |
The New copy of this book will include any supplemental materials advertised. Please check the title of the book to determine if it should include any access cards, study guides, lab manuals, CDs, etc.
The Used, Rental and eBook copies of this book are not guaranteed to include any supplemental materials. Typically, only the book itself is included. This is true even if the title states it includes any access cards, study guides, lab manuals, CDs, etc.