How do you create a mission-critical website providing exceptional performance yet at the same time being flexible, reliable and scalable? That's the question that Kyle Loudon, a software developer and manager of a user interface development group at Yahoo!, sets out to provide the answers to in his book: Developing Large Web Applications.
Sub-titled 'producing code that can grow and thrive' Loudon has adopted a practical approach to developing large web applications that remain effective as they scale up in terms of features, functions and users. His past experiences, including developing a flight planning system that's used by airlines worldwide and teaching object-orienting programming at the University of California, Santa Cruz, have come together in these 279 pages. Not only in the obvious depth of knowledge displayed by the author, but perhaps most importantly in his ability to communicate this clearly and concisely. As Nate Koechley, Frontend Engineer and Designer at Yahoo!, so aptly puts it in his foreword "Build big by thinking small. Build new by thinking old. Manage scope. Boost signal and reduce noise. Resist breakage... these things are easy to rattle off, but it takes an author like Kyle, and a book like this, to make them practical and real".
A book like this, however, is not for beginners to web development languages and tools. If you don't already possess at least some degree of familiarity with the likes of CSS, HTML and JavaScript then you will, dear reader, soon get left behind. It isn't, in any way, a tutorial in any of these languages. Although many of the examples provided can translate to other server-side scripting languages, you'll need to have a good understanding of PHP as that's what the author has used. You needn't be too caught up in the large web applications side of things that the title suggests though, as the techniques presented are equally pertinent to smaller scale development. As long as you have the will to apply established software engineering good practice to web development, and the desire to avoid the common coding and maintenance headaches that afflict so many smaller websites as they scale up in page and code, you'll do just fine.
From the very first chapter which examines the tenets that guide the discussions throughout the remainder of the book, through to the very last chapter that focuses on organizing classes and files on the server in order to reinforce the modularity established in your large-scale HTML, CSS, JavaScript and server-side scripts, the pace relentlessly drives you towards being a more precise programmer. By embracing the virtues of modularity, encapsulation, abstraction while using tried and tested techniques for managing the exchange of data, Loudon is the man to read if you want to ensure your web applications are constructed in such a way as to be scalable without degrading performance. Large-scale HTML, CSS, JavaScript, PHP and Ajax all get their own in-depth chapters. As does object orientation, data management and writing high performance code. Talking of which, all the example code has been made available by the author on his website, which helps make the learning process even more hands-on and can be used as a lightweight application framework.Table of Contents
Chapter 1 The Tenets
Managing Complexity
Modular Components
Ten Tenets for Large Web Applications
Chapter 2 Object Orientation
The Fundamentals of OOP
Why Object Orientation?
UML Class Diagrams
Modeling a Web Page
Writing the Code
Achieving Modularity
Object-Oriented PHP
Object-Oriented JavaScript
Chapter 3 Large-Scale HTML
Modular HTML
HTML Tags
XHTML
RDFa
HTML 5
Chapter 4 Large-Scale CSS
Modular CSS
Positioning Techniques
Layouts and Containers
Other Practices
Chapter 5 Large-Scale JavaScript
Modular JavaScript
Working with the DOM
Working with Events
Working with Animation
An Example: Chained Selection Lists
Chapter 6 Data Management
Dynamic Modules
Data Managers
Data Using SQL As a Source
Data Using XML As a Source
Data from Web Services
Data in the JSON Format
Cookies and Forms
Chapter 7 Large-Scale PHP
Modular Web Pages
Working with Pages
Working with Modules
Layouts and Containers
Special Considerations
Chapter 8 Large-Scale Ajax
In the Browser
On the Server
MVC and Ajax
Chapter 9 Performance
Caching Opportunities
Managing JavaScript
Distribution of Assets
Control Over Site Metrics
Modular Testing
Chapter 10 Application Architecture
Thinking Modularly
Organizing Components
Architecture and Maintenance