Eric Elliott是一名经验丰富的JavaScript应用程序开发者,他曾在Adobe Creative Cloud团队中担任科学家,在Tout公司(一家视频分享网站)担任首席JavaScript工程师,在Zumba Fitness公司(全球领先的健身品牌)担任首席客户端应用架构师,同时他还是一名作家、演讲者、用户体验与营销领域的顾问,他与他的妻子居住在旧金山湾区。
第1章 javaScript的革命时代
Javascript的特性
性能
对象
语法
函数是一等公民
事件
复用性
结论
解构现代JavaScript应用
基础架构
JSON ——数据存储与通信
NoSQL数据库
RESTful JSON web Services
第2章 函数
减少隐式副作用
函数声明
lambdas
立即执行函数表达式
方法上下文
函数作用域
变量提升
闭包
方法API的设计
参数命名
多态函数
范型编程与集合多态
链式调用与流式API
无状态函数(纯函数)
偏函数应用与函数加里化
异步操作
回调函数
Promises与Deferreds
小结
第3章 对象
过时的类继承
流式JavaScript
原型
原型代理
原型克隆
享元模式
创建对象
工厂函数
使用Stamps进行原型继承
小结
第4章 模块
模块化编程原则
接口
模块模式
AMD规范
加载器插件
CommonJS模块规范
npm包管理器
ES6模块规范
基于CommonJS、npm、Grunt与Browserify构建客户端应用
定义应用
特性实现
构建与部署
小结
第5章 关注点分离
客户端的关注点
模块管理
模型-视图-控制器
表现层与Dom操作
服务端关注点
Node与Express入门
在Node中组织代码
小结
第6章 访问控制
身份验证
密码认证
Credential类库
多因素身份验证
联合认证与授权认证
应用功能授权
应用授权
OAuth 2.0协议
小结
第7章 日志
调试
服务端数据监控
安全/入侵检测
审计
业务指标分析
传播力度
日志清单
应用请求日志
异常日志
日志输出示例
日志预警
跟踪业务指标(效果跟踪)
性能分析与优化
客户端事件记录
日志数据挖掘
小结
第8章 构建RESTful API
可用性
专一性
一致性
自描述的超媒体
功能可见性
超媒体即应用状态引擎
HTML:一种特别的API媒介类型
Jade
Jiron
响应式API
性能优化
小结
第9章 特性开关
组织特性
特性的规模
特性编组
特性的生命周期
开发阶段
预发布阶段
灰度测试
正式发布
默认激活
完整集成
客户端实现
小结
第10章 应用工程国际化
小结
附录A JavaScript编码风格指南
本书并不打算向读者详细讲解JavaScript语言基础,它基于你现有的JavaScript知识结构,向你展示那些会让你的编码工作长久受益的JavaScript特性与技巧。一般来说,随着应用程序的规模不断扩大,添加新功能与缺陷修复开始变得越来越难以下手,代码随之变得脆弱、臃肿,甚至一个非常小的改动都可能带来大范围的代码重构。如果你在编码过程中遵循了本书中介绍的设计模式,你会发现代码开始变得灵活而富有伸缩性,对代码的细微变更不会再对其他模块产生负面影响。
本书的内容主要聚焦在客户端JavaScript应用设计上,同时也会穿插一些较为基础的Node、RESTful API等服务端技术介绍。应用逻辑前端化已经是大势所趋,以往我们常常将模板渲染、与第三方服务通信等任务交给服务端去处理,诸如此类的工作如今通常在浏览器中完成。
事实上,现今的JavaScript应用已经在浏览器中扮演起了传统桌面级应用的角色。当然,这一切仍然离不开服务端的技术支撑,像静态资源托管、动态模块加载、数据持久化、操作日志记录以及第三方API服务调用等,这些都属于服务端的职能范畴。
本书内容涵盖:
面向应用开发者的JavaScript特性与**实践。
代码组织、模块化与复用。
. 客户端关注点分离(MVC等)。
. 服务端与API的通信机制。
. 用Node.js设计并实现RESTful API。
. 构建、测试、团队协作、应用部署与扩展。
. 应用工程的国际化。
本书目标读者具备一定的JavaScript开发基础,有至少1或2年的JavaScript实践经验,并想了解如何使用JavaScript开发大规模Web或企业级应用的开发者。
抱有强烈的学习热情,尤其是对闭包、函数式编程、原型继承这些JavaScript语言独有的强大特性想做了解与尝试的编程入门者。(即使你是**次听到这些概念。)也许你想在下一个具有挑战性的JavaScript项目中使用TDD(测试驱动开发)技术,本书所有的代码范例中均包含测试用例。在你读完本书后,代码自测的意识与方法也会随之建立起来。
不太适合本书的读者本书不面向JavaScript初学者,涉及JavaScript基础技术点的地方会一带而过。如果你想对这些技术点进行深入了解,可以在Douglas Crockford的《JavaScript精粹》(O扲eilly,2008)以及David Flannagan的《JavaScript 权威指南》编注1(O扲eilly,2011)中找到相关解读。由著名的“四人帮”(Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides) 合著的《设计模式:可复用面向对象软件的基础》编注2(http://bit.ly/1pwzcUc)(Addison-Wesley,1994)会帮助你更好地理解设计模式。
Google与维基百科同样是信息查阅的好帮手,对软件设计模式来说,维基百科是一份非常不错的参考资料。
如果这是你**次接触JavaScript,我建议你在步入正篇之前先把基础功课做足。Marijn Haverbeke所著的《Eloquent JavaScript》(http://eloquentjavascript.net/)(No Starch Press,2011 )是我个人比较喜爱的一本JavaScript入门教程,还有上文中提到的《JavaScript 精粹》,*好每一个章节都通读一遍。另外,特别留意下附录A,这是JavaScript开发前辈们对自己所犯的错误做的系统总结,从中你可以获得一些启发。
单元测试很难估量单元测试在应用中的重要性,本书中几乎所有的代码样例中均附有单元测试用例。编写测试用例让你对功能实现了解得更为透彻,对方案与接口设计的把握越来越谨慎,设计测试用例的过程同样是迫使你思考将代码解耦的过程。保持编写单元测试与解耦代码的习惯会使你在今后的工作中持续受益,相信在读完本书之后你会收获这种编码习惯。
关于单元测试与编码风格的更多内容,请参见本书附录A。
本书的约定本书使用下列排版约定:
斜体 (italic)用于表示新术语、URL、电子邮件地址、文件名、文件扩展名。
等宽字体 (constant width)用来表示程序列表和代码片段,包括变量或函数名、数据库、数据类型、环境变量、语句和关键字等。
等宽加粗字体 (constant width bold)用来表示命令或者其他用户直接输入的文本。
等宽斜体 (constant width italic)用来表示可被替换的字符或文本,这些字符在合适的场景和特定的条件下会被替换成其他的值。
注意: 表示一种提示、建议或一般的消息提醒。
警告: 表示一种警告。
Safari Books OnlineSafari在线图书是一个数字图书馆,读者可以在这个图书馆里自选图书, 在这里可以搜索到超过7500本与技术和创作相关的书籍和视频,在这里可以迅速找到你想要的内容。
订阅之后,你就可以阅读在线图书馆的任意图书的任意章节和任意视频。你还可以将图书 下载到手机和移动设备里。在纸质书籍出版前就可以抢先阅读,甚至可以抢先阅读作者手稿,并实时给作者反馈。同时还可以复制和粘贴实例代码、组织你的收藏内容、下载章节、将关键段落加入书签、创建笔记、打印出来,你既可以节省时间,又可以提升阅读效率。
O'Reilly Media已经将本书上传至Safari在线图书馆里了。如果想在线阅读本书和其他相关内 容,请免费登录http://my.safaribooksonline.com。
联系我们对于本书的评论或问题请联系出版商:
美国:
O'Reilly Media,Inc.1005 Gravenstein Highway NorthSebastopol,CA 95472中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)奥莱利技术咨询(北京)有限公司我们为本书制作了一个Web页面,页面中包含了简介、样章以及其他信息。可以从这里访问这个页面:
http://bit.ly/programming-jsa如果要留言或者提交关于本书的技术问题的反馈,请发邮件至:
bookquestions@oreilly.com本书的更多信息、资源、参考文献和新闻,请登录出版社官网:
http://www.oreilly.com.cnhttp://www.oreilly.comFacebook:http://facebook.com/oreillyTwitter:http://twitter.com/oreillymediaYouTube:http://www.youtube.com/oreillymedia致谢感谢@JS_Cheerleader(https://twitter.com/JS_Cheerleader)给予我的鼓励,你提供的JavaScript在线资源非常棒!
感谢Brendan Eich一直以来不知疲倦地推动JavaScirpt与Web技术向前发展。感谢整个O'Reilly团队,感谢Simon St. Laurent,是你让这本书有机会与读者见面,我知道你一直都在给我加油鼓劲!感谢Brian McDonald对本书的宝贵意见,感谢Meghan Blanchette,你总是不断地给我打气!感谢以下每一个人对本书的技术审校与建议:
. César Andreu. James Halliday (Substack). Hugh Jackson. Ramsey Lawson. Shelley Power. Kyle Simpson. Kevin Western特别感谢本书中所有开源软件项目的作者,向开源社区中那些不断提升JavaScript应用程序用户体验的开发者致敬,身为软件开发者,我们正站在巨人的肩膀上。
¥199.00
¥199.00
¥10.00¥20.00