Preface Introduction Part Ⅰ.Buidng Your AppIication 1.Mocking Up the Save The Child Application Considering Mobile First Introducing Balsamiq Mockups The Project Owner Talks to a Web Designer Creating First Mockups Turning Mockups into a Prototype Single—Page Applications Running Code Examples from WebStorm Our First Prototype Our Main Page JavaScript The Footer Section The Donate Section Adding Video Adding the HTML5 Video Element Embedding YouTube Videos Adding Geolocation Support Geolocation Basics Integration with Google Maps Browser Feature Detection with Modernizr Search and Multimarkers with Google Maps Summary 2.Using Ajax and JSON Understanding Ajax Understanding JSON Working with Ajax Retrieving Data from the Server Ajax: Good and Bad Populating States and Countries from HTML Files Using JSON Populating States and Countries from JSON Files Using Arrays in JSON Loading Charity Events by Using Ajax and JSON Using JSON in CMS Handling JSON in Java Compressing JSON Adding Charts to Save The Child Adding a Chart with the Canvas Element Adding a Chart by Using SVG Loading Data from Other Servers by Using JSONP Beer and JSONP Summary 3.Introducing the jQuery Library Getting Started with jQuery Hello World Using Selectors and Filters Testing iQuery Code with JSFiddle Filtering Elements Handling Events Attaching Event Handlers and Elements by Using the Method on() Delegating Events Using Ajax with iQuery Handy Shorthand Methods Programming Save The Child by UsingiQuery Login and Donate Loading HTML States and Countries by UsingiQuery Ajax Loading JSON States and Countries by UsingiQuery Ajax Submitting the Donate Form UsingiQuery Plug—ins Validating the Donate Form by Using a Plug—in Adding an Image Slider Summary Part Ⅱ.Enterprise Considerations 4.Developing Web Applications in the Ext JS Framework Exploring JavaScript Frameworks Choosing to Use Ext JS Downloading and Installing Ext JS Becoming Familiar with Ext JS and Tooling Creating the First Version of Hello World Generating Applications with the Sencha CMD Tool Choosing Which Ext JS Distribution to Use Declaring, Loading, and Instantiating Classes Best Practice: MVC Exploring a Component's Life Cycle Working with Events Specifying Layouts Developing Save The Child with Ext JS Setting Up the Eclipse IDE and Apache Tomcat Running the Top Portion of the Save The Child UI Completing Save The Child Summary 5.Selected ProductMty Tools for Enterprise Developers Using Node.js, V8, and npm Automating Everything with Grunt Exploring the Simplest Gruntfile Using Grunt to Run JSHint Checks Watching for the File Changes Using Bower Using Yeoman Using Ext JS and CDB for Productive Enterprise Web Development Ext JS MVC Application Scaffolding Generating a CRUD Application Data Pagination Summary 6.Modularizing Large—Scale JavaScript Projects Understanding Modularization Basics Exploring Roads to Modularization The Module Pattern CommonJS Asynchronous Module Definition Universal Module DeFmition ECMAScript 6 Modules Dicing the Save The Child Application into Modules Inside the RequirelS Conflguration: config.js Writing AMD Modules Loading Modules On Demand Using RequireJS Plug—ins Using RequireJS Optimizer Loosely Coupled InterModule Communications with Mediator Summary 7.Test—Driven Development with JavaScript Why Test? Testing Basics Unit Testing Integration Testing Functional Testing Load Testing Test—Driven Development Implementing TDD by Using QUnit Behavior—Driven Development with Jasmine Multibrowser Testing Testing the DOM Building Save The Child with TDD Harnessing the ExtJS Application Testing the Models Testing the Controllers Testing the Views Setting Up the IDE for TDD Summary 8.Upgrading HTTP to WebSocket Using HTTP for Near Real—Time Applications Polling Long Polling HTTP Streaming Implementing Server—Sent Events Introducing the WebSocket API The WebSocket Interface The Client—Side API Using WebSocket Frameworks The Portal Atmosphere Choosing the Format for Application—Level Messages CSV XML JSON Google Protocol Buffers Using WebSocket with Proxies Adding an Auction to Save The Child Monitoring WebSocket Traffic by Using Chrome Developer Tools Sniffing WebSocket Frames by Using Wireshark Creating the Save The Child Auction Protocol Summary 9.Introduction to Web Application Security HTTP versus HTTPS Authentication and Passwords Basic and Digest Authentication Single Sign—on Handling Passwords Authorization OAuth—Based Authentication and Authorization Federated Identity with OpenID Connect and JSON Web Tokens OAuth 2.0 Main Actors Save The Child and OAuth Top Security Risks Injection Cross—Site Scripting Regulatory Compliance and Enterprise Security Summary …… Part Ⅲ.Responsive Web Design and Mobile Devices A.Selected HTML5 APls B.Running Code Samples and IDE Index