| Course Code: |
IN 628 |
| Course Abstract: |
This course provides participants with advanced coverage and hands-on exercises using the latest and most common Ajax tools, frameworks, and design patterns implemented today. The course begins by exploring popular tools for easier front-end application development and popular frameworks which help create solutions that avoid lots of low-level coding. Heavy use of design patterns is at the heart of this course, invoking over 50 patterns in various ways to solve problems. In this course, Ajax-based model-view-controller, caching, state patterns, throttling, aggregation, scheduling, client-server decoupling patterns, as well as cross-domain communication are explored. There is also an examination of how to write efficient, safe, and fast code for the browser. |
| Audience: |
This course is designed for participants already familiar with HTML, CSS, JavaScript, and Ajax basics. Due to the short amount of class time, this course does not cover JavaScript OO concepts, Ajax basic principles, creation of an Ajax Library, validation techniques, JSON fundamentals, DOM and CSS manipulation, and event handling. Please refer to the course entitled, Front-End Engineering with Ajax for proper coverage of these topics. |
| Duration: |
2 days |
| Learning Outcomes: |
Upon completion of this course participants will build a rich client web-based interface using common frameworks such as prototype, script.aculo.us, and DWR to yield advanced effects such as zooming, sliding, and drag-and-drop. These effects are incorporated with Ajax and CSS to create a web-based windows look-and-feel. |
| Course Topics: |
Ajax Requests, Frameworks, and Tools An XHR Utility Using the Prototype Library Script.aculo.us Dojo YUI GWT DWR XHR Limitations IE-Specific XHR Limitations Mozilla Issues with XHRs Making Multiple Requests Request Queuing Dependent Responses Aborting Requests Passing Parameters Rolling Forms Aptana and Eclipse Firebug Logging Browser Plug-ins Log4JS JSUnit and Testing Environments Advanced JavaScript Topics Strict Type Checking Overloading in JavaScript Variable Scoping Closures Currying JavaScript Objects: Constructor/Prototype Hybrids Object Literals Inheritance Private Variables and Functions Achieving Inheritance via Libraries Namespaces
Advanced Client-Server Communication Cross-Domain Proxies Incorporating a Dynamic Script Tag Server-to-Client Status Updates (Server Push) Periodic Updates Mashups REST Solutions Designing REST-based content URLs Caching Passive Caching Choosing Cache Keys Finite vs. Infinite Caching Predictive Caching Type Ahead Suggests Improving Client-Server Performance Maintaining State Handling Back Buttons in Applications window.location and window.history Various Back Button Solutions Using Libraries to Implement Back Button Solutions
Ajax in the Browser XML vs. JSON Handling XML in Different Ways Client-Side XSLT XML-to-JSON Conversions Using IFrames IFrames as a Transport Mechanism Handling File Uploads Multi-stage Downloads Enhancing Performance and Security Request Throttling Optimizing JavaScript Dealing with Browser Memory Leaks How the DOM Loads Code Compression and Verification Techniques Code Obfuscation Security Treats Cross-Site Scripting Attacks Data Injection Issues
|
| Prerequisites: |
Strong HTML and JavaScript knowledge is required. Knowledge of Ajax, OO JavaScript, and CSS is required. While the server-side discussions are Java-based, it is helpful to understand Java EE components such as servlets and JSPs, but not necessary. Server-side implementations are pre-written to minimize Java knowledge needed. |