开发大规模Web应用(影印版)
Kyle Loudon
Nate Koechley 序
出版时间:2011年03月
页数:279
如何创建一个运行关键任务,提供灵活、适应、可靠的24/7服务,又具有超高性能的网站?《开发大规模Web应用》由Yahoo! UI团队经理撰写,为打造坚如磐石的应用指明了现实途径,无论你添加多少特性、功能和用户,这些指导原则一样有效。你将学会如何运用其他类型软件所要求的同样精度来开发大规模Web应用。
· 让小型网站在添加更多网页、代码和程序员时,避免常见的编码和维护痛苦
· 为大规模Web应用优化HTML、CSS、JavaScript、PHP和AJAX ,获得全面的解决方案
· 在一处做修改,即可更新所有相应的页面元素
拥抱模块化、封装、抽象和松耦合组件等各种优点
· 采用行之有效的技巧管理数据交换,包括表单和Cookies
· 学习代码管理和软件工程中经常被忽视的最佳实践
对代码进行性能优化和测试简化
“如果你准备构建一个精心打造的大型站点,那么这本书就是为你撰写的。从今天就开始吧,因为全世界都在等着你的应用面世。”
——来自前言
本书作者Kyle Loudon在Yahoo!领导着一个UI团队。他曾经从事设计原版的Apple iPod用户界面,并且领导隶属于波音公司的 Jeppesen DataPlan UI团队,开发用于全世界各航线的飞行规划系统。
(建议读者熟悉各种Web开发工具——包括JavaScript、PHP、HTML和CSS。)
  1. Foreword
  2. Preface
  3. 1. The Tenets
  4. Managing Complexity
  5. Modular Components
  6. Achieving Modularity
  7. Benefits of Modularity
  8. Ten Tenets for Large Web Applications
  9. 2. Object Orientation
  10. The Fundamentals of OOP
  11. Why Object Orientation?
  12. UML Class Diagrams
  13. Generalization
  14. Association
  15. Modeling a Web Page
  16. Defining Page Types
  17. Defining Module Types
  18. Writing the Code
  19. Achieving Modularity
  20. Object-Oriented PHP
  21. Classes and Interfaces
  22. Inheritance in PHP
  23. Object-Oriented JavaScript
  24. Objects
  25. Inheritance in JavaScript
  26. 3. Large-Scale HTML
  27. Modular HTML
  28. A Bad Example: Using a Table and Presentation Markup
  29. A Better Example: Using CSS
  30. The Best Example: Semantically Meaningful HTML
  31. Benefits of Good HTML
  32. HTML Tags
  33. Bad HTML Tags
  34. Good HTML Tags
  35. IDs, Classes, and Names
  36. Conventions for Naming
  37. XHTML
  38. Benefits of XHTML
  39. XHTML Guidelines
  40. RDFa
  41. RDFa Triples
  42. Applying RDFa
  43. HTML 5
  44. 4. Large-Scale CSS
  45. Modular CSS
  46. Including CSS
  47. Applying CSS
  48. Specificity and Importance
  49. Scoping with CSS
  50. Standard Module Formats
  51. Positioning Techniques
  52. CSS Box Model
  53. Document Flow
  54. Relative Positioning
  55. Absolute Positioning
  56. Floating
  57. Layouts and Containers
  58. Example Layouts
  59. Example Containers
  60. Other Practices
  61. Browser Reset CSS
  62. Font Normalization
  63. 5. Large-Scale JavaScript
  64. Modular JavaScript
  65. Including JavaScript
  66. Scoping with JavaScript
  67. Working with the DOM
  68. Common DOM Methods
  69. Popular DOM Libraries
  70. Working with Events
  71. Event Handling Normalization
  72. A Bad Example: Global Data in Event Handlers
  73. A Good Example: Object Data in Event Handlers
  74. Event-Driven Applications
  75. Working with Animation
  76. Motion Animation
  77. Sizing Animation
  78. Color Transition
  79. An Example: Chained Selection Lists
  80. 6. Data Management
  81. Dynamic Modules
  82. Data Managers
  83. Creating Data Managers
  84. Extending Data Managers
  85. Data Using SQL As a Source
  86. An SQL Example
  87. Data Using XML As a Source
  88. An XML Example
  89. Data from Web Services
  90. Data in the JSON Format
  91. Cookies and Forms
  92. Managing Data in Cookies
  93. Managing Data from Forms
  94. 7. Large-Scale PHP
  95. Modular Web Pages
  96. Generating Pages in PHP
  97. Working with Pages
  98. Public Interface for the Page Class
  99. Abstract Interface for the Page Class
  100. Implementation of the Page Class
  101. Extending the Page Class
  102. Working with Modules
  103. Public Interface for the Module Class
  104. Abstract Interface for the Module Class
  105. Implementation of the Module Class
  106. Extending the Module Class
  107. An Example Module: Slideshow
  108. Layouts and Containers
  109. Special Considerations
  110. Handling Module Variations
  111. Multiple Instances of a Module
  112. Dynamic JavaScript and CSS
  113. Implementing Nested Modules
  114. 8. Large-Scale Ajax
  115. In the Browser
  116. Managing Connections
  117. Using Ajax Libraries
  118. On the Server
  119. Exchange Formats
  120. Server Proxies
  121. Modular Ajax
  122. MVC and Ajax
  123. Using Ajax with MVC
  124. Public Interface for the Model Object
  125. Implementation of the Model Object
  126. Public Interface for the View Object
  127. Abstract Interface for the View Object
  128. View Object Implementation
  129. Public Interface for the Connect Object
  130. Abstract Interface for the Connect Object
  131. Implementation of the Connect Object
  132. Controllers
  133. An Example of Ajax with MVC: Accordion Lists
  134. 9. Performance
  135. Caching Opportunities
  136. Caching CSS and JavaScript
  137. Caching Modules
  138. Caching for Pages
  139. Caching with Ajax
  140. Using Expires Headers
  141. Managing JavaScript
  142. JavaScript Placement
  143. JavaScript Minification
  144. Removing Duplicates
  145. Distribution of Assets
  146. Content Delivery Networks
  147. Minimizing DNS Lookups
  148. Minimizing HTTP Requests
  149. Control Over Site Metrics
  150. Modular Testing
  151. Using Test Data
  152. Creating Test Data
  153. 10. Application Architecture
  154. Thinking Modularly
  155. Organizing Components
  156. Sitewide Architecture
  157. Section Architecture
  158. Architecture for Pages
  159. Architecture and Maintenance
  160. Reorganizing Module Uses
  161. Adding Module Variations
  162. Making Widespread Changes
  163. Changes in Data Sources
  164. Exposing Modules Externally
  165. Index
书名:开发大规模Web应用(影印版)
作者:Kyle Loudon
译者:Nate Koechley 序
国内出版社:东南大学出版社
出版时间:2011年03月
页数:279
书号:978-7-5641-2495-3
原版书书名:Developing Large Web Applications
原版书出版商:O'Reilly Media
Kyle Loudon
 
Kyle Loudon是美国加州洛斯加托斯Jeppesen Dataplan公司的一名软件工程师,主管图形接口开发小组,主攻航迹规划软件的研发,这些软件主要用于商业航空公司、私营航空部门和其他一些航空制造业。在来到Jeppesen之前,Kyle在IBM公司是一名系统程序员。在技术上,Kyle主要对操作系统、网络、人机交互等领域感兴趣。1992年,Kyle在普渡大学拿到了计算机科学学士学位,并取得了法语的第二学位,同时他还被选入斐陶斐荣誉学会(美国大学优等生之荣誉学会)。他在普渡大学计算机系教了三年的计算机课程。在这期间,他完成了他个人的第一本书《Understanding Computers》,这本书用理论结合实践的方式介绍计算机的方方面面。如今,尽管他继续工作在硅谷的软件业,但他仍然坚韧不拔地在追求一个更高的学位。
除了计算机,Kyle多年来喜欢打网球、教网球。他还喜欢山地骑行、滑冰,偶尔也和朋友们一起参加高尔夫课程。另外,Kyle还喜欢各种形式的戏剧、美食,以及某些风格的音乐和艺术;他期望成为钢琴家和艺术家,但希望渺茫。他现在在Jeppesen的工作是从他1992年开始驾驶飞机之后找到的。现在,他是一个拥有美国联邦航空局颁发的商业飞行员执照的飞行员。
 
 
The animal on the cover of Developing Large Web Applications is a Newfoundland.
Also known as a “Newf” or “Newfie,” this massive dog is 26–28 inches tall at the
shoulder and weighs 100–150 pounds. As its name implies, it originated in Newfoundland,
Canada, where it was used by fishermen to haul nets, carry boat lines to shore,
and retrieve items that fell overboard. An agile swimmer, the Newfoundland has
webbed feet and a water-resistant coat, which can be black, brown, gray, or white and
black (Landseer).
Newfoundlands are “gentle giants” known for their sweet, loyal dispositions and obedience
to their masters. They rarely bark, but are protective when necessary. They are
generally very good with children and other animals. They are well suited for apartment
dwellers, as they tend to be relatively inactive indoors; for exercise, a daily walk is
usually sufficient, though they do enjoy opportunities to play and swim. In keeping
with their heritage, Newfoundlands prefer colder climates and do not do well in hot
weather; they should never be left in the heat without water and shade. They are prone
to certain health problems, including hip and elbow dysplasia, cystinuria (a hereditary
defect indicated by calculi stones in the kidney or bladder), and subvalvular aortic
stenosis, a common heart defect that can cause sudden death at an early age. Their
average life expectancy is 10 years.
Thanks to its muscular build and swimming prowess, the breed is frequently used in
water rescues. Indeed, it seems to have an innate lifesaving ability in general: Newfoundlands
have been credited with saving shipwreck survivors (the 1863 wreck of the
Dispatch, which carried more than 100 Irish immigrants, and the 1919 wreck of the SS
Essie); navigating through blizzard conditions in Alaska and the Aleutian Islands during
World War II to provide ammunition and supplies to soldiers; and, according to legend,
keeping Napoleon Bonaparte afloat when rough seas knocked him overboard following
his escape from exile on the island of Elba in 1815. One particularly heroic story involves the Newfoundland mascot of the Royal Rifles of Canada, called Sergeant Gander. During
the Battle of Lye Mun on Hong Kong Island in December 1941, the courageous dog
retrieved a grenade thrown at the battalion and carried it off, saving several lives and
sacrificing his own in the process. In 2000, nearly 60 years after his heroic act, Sgt.
Gander was posthumously awarded the Dickin Medal, given to animals displaying
“conspicuous gallantry” in times of war.