描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787121307065
是否感觉自己发开的应用像建立在浮沙之上,是否需要创建一年以上不能重写的应用程序?本书会给出扩展性场景和真实示例,指导你构建经久不衰的应用程序,并从可寻址性、可测试性和组件组合等角度向你展示如何处理可扩展性。大规模框架需要能够“缩小”的能力、从出错组件恢复的能力,以及“扩大”并管理新功能或更多用户的能力。在此之上,你可以用任何JavaScript工具集构建起可扩展的应用。
√ 识别、评估影响应用程序可扩展性的外部影响因素。
√ 在大型JavaScript应用程序中构建组件。
√ 探索可扩展的组件间通信技术。
√ 定制、配置组件满足扩展需求。
√ 在各种规模和复杂性的情况下,确保应用程序有*好的用户体验。
√ 创建在各种环境中都可移植、可测试的应用。
√ 通过删除或重构组件来进行架构方面的权衡。
√ 设计以可扩展方式失败的组件。
影响扩展的因素 ……………………………………………………………………………………………………….. 2
对可扩展的需要 ………………………………………………………………………………………………………………….. 2
不断增长的用户 ………………………………………………………………………………………………………………….. 3
添加新功能 …………………………………………………………………………………………………………………………. 3
雇佣更多的开发者 ………………………………………………………………………………………………………………. 4
架构角度 …………………………………………………………………………………………………………………. 5
浏览器是一个独特的环境 …………………………………………………………………………………………. 5
组件设计 …………………………………………………………………………………………………………………………….. 7
组件通信 …………………………………………………………………………………………………………………………….. 7
加载时间 …………………………………………………………………………………………………………………………….. 8
响应性 ………………………………………………………………………………………………………………………………… 9
可寻址性 …………………………………………………………………………………………………………………………….. 9
可配置性 …………………………………………………………………………………………………………………………… 10
架构性取舍 …………………………………………………………………………………………………………….. 11
确定不可变内容 ………………………………………………………………………………………………………………… 11
从开发的便捷性考虑性能 …………………………………………………………………………………………………… 11
性能的可配置性 ………………………………………………………………………………………………………………… 12
从可替换性考虑性能 ………………………………………………………………………………………………………….. 13
可寻址性的开发便捷性 ………………………………………………………………………………………………………. 13
性能的可维护性 ………………………………………………………………………………………………………………… 13
减少功能以提高可维护性 …………………………………………………………………………………………………… 14
利用框架 …………………………………………………………………………………………………………………………… 15
框架与类库 …………………………………………………………………………………………………………….. 16
一致地实现模式 ………………………………………………………………………………………………………………… 16
内建的性能 ……………………………………………………………………………………………………………………….. 16
利用社区智慧 ……………………………………………………………………………………………………………………. 16
框架并非天生支持扩展 ………………………………………………………………………………………………………. 17
小结 ………………………………………………………………………………………………………………………. 17
2 可扩展性的影响因素 …………………………………………………………………….. 19
扩展用户 ……………………………………………………………………………………………………………….. 20
许可证费用 ……………………………………………………………………………………………………………………….. 20
订阅费用 …………………………………………………………………………………………………………………………… 21
消耗费用 …………………………………………………………………………………………………………………………… 21
广告支持 …………………………………………………………………………………………………………………………… 21
开源 ………………………………………………………………………………………………………………………………….. 22
与用户沟通 ……………………………………………………………………………………………………………………….. 23
支持机制 …………………………………………………………………………………………………………………………… 24
反馈机制 …………………………………………………………………………………………………………………………… 25
提示用户 …………………………………………………………………………………………………………………………… 26
用户维度 …………………………………………………………………………………………………………………………… 26
扩展用户示例 ……………………………………………………………………………………………………………………. 27
扩展功能 ……………………………………………………………………………………………………………….. 28
应用价值 …………………………………………………………………………………………………………………………… 28
“杀手级”功能与“杀死”应用的功能 ……………………………………………………………………………… 29
数据驱动的功能 ………………………………………………………………………………………………………………… 30
与竞品比较 ……………………………………………………………………………………………………………………….. 30
修改已有的功能 ………………………………………………………………………………………………………………… 31
支持用户分组和角色 ………………………………………………………………………………………………………….. 32
增加新服务 ……………………………………………………………………………………………………………………….. 32
扩展功能示例 ……………………………………………………………………………………………………………………. 34
开发的可扩展性 ……………………………………………………………………………………………………… 34
寻找开发资源 ……………………………………………………………………………………………………………………. 35
开发职责 ……………………………………………………..
关于作者
Adam Boduch 在开发大型JavaScript应用方面有近10年的工作经验。在转型为前端工程师之前,他曾使用Python与Linux参与了许多大型云计算产品的构建。Adam拥有非常丰富的开发经验,擅长处理复杂的场景,提高软件的可扩展性。他编写了很多JavaScript方面的书籍,其中包括 Lo-Dash Essentials,并且,他还热衷于优化用户体验和性能。
Adam现居住于多伦多,是Virtustream的一名高级软件工程师。
我想在此感谢我的妈妈和爸爸。
关于审校者
August N. Marcello III是一位充满激情的软件工程师,在客户端的Web应用架构相关的设计、实现、部署方面,有着近20年的工作经验。他专注于基于SaaS创造良好的用户体验,并将其传播到Web生态系统,这无论从个人还是从专业角度来说都极具价值。对新兴通用技术的热爱以及对先进的JavaScript平台的专注,驱动着他在技术上精益求精。在工作之余,他会参加越野跑、山地自行车骑行,或者陪伴家人和朋友。他的个人网站为:。
非常感谢Chuck、Mark、Eric和Adam,很荣幸能够跟他们一起工作和学习。谢谢我的家人、朋友,还有我所经历的一切。
Yogesh Singh毕业于印度JSS技术教育学院。他是一位全栈Web开发者,在服务端Web开发栈方面(ASP.NET以及Node.js)很有经验,而且熟练掌握HTML、CSS以及JavaScript。
Yogesh热爱JavaScript以及相关的库和框架(Backbone、AngularJS、jQuery和Underscore)。
他开始从事的是数据挖掘和数据仓库方面的工作,在数据库开发方面十分专业。他是MSSQL的微软认证解决方案成员(MCSA)。
Yogesh自学能力很强,喜欢学习算法和数据结构,并在斯坦福大学Coursera上获得了算法课的结业证明。
他曾就职于OLX India和MAQ Software,目前为Gainsight公司的全栈开发者。
业余时间,他喜欢在上写博客。他的LinkedIn简历地址为。
感谢我的家人,朋友以及同事的支持。
Nikolay Sokolov是一名软件工程师,他在云计算、自动化部署,还有企业软件开发方面有着丰富的经验。现在就职于Tonomi(),负责基于弹性组件模型分发云应用的自动管理包。
可通过随时联系他。
Serkan Yersen是一名洛杉矶的软件开发者。他是一些开源库的作者,例如:ifvisible.js、underscore.py以及kwargs.js。Serkan专门从事构建大型JavaScript应用,以及为用户广泛的应用创建UI。2006年至2012年,就职于期间,他开发了一个复杂的表单生成器,供上百万用户使用。现在,他就职于Home Depot和Redbeacon(),负责Web应用开发。你可以访问他的网站:。
译者简介
本书翻译工作由月影领衔的奇舞团翻译小组承担,由王韦华、黄小璐、黄薇负责翻译。
王韦华
网名Aztack,前端技术专家。曾就职百度、奇虎360等国内知名互联网公司。拥有丰富的Web前端开发经验,擅长JavaScript、Ruby、Java、C 等语言。
个人博客:
黄小璐
毕业于华中科技大学计算机学院。现为奇虎360软件开发工程师。曾参与开源项目[stcjs]()(高性能前端工作流系统)。参与翻译了《高性能HTML5》等书。
黄薇
毕业于中山大学,于2013年加入奇舞团,近期参与了Nova.js(Web Component框架)、声享(在线制作PPT)等项目,对大型 JavaScript 应用有浓厚的兴趣和丰富的开发经验。
以上三位译者曾共同参与《移动Web手册》一书的翻译工作。
读者可扫描以下二维码关注奇舞团周刊。
前言
能够一直正常运行的应用只是特例,大部分的JavaScript应用多多少少都有些问题。而这些问题产生的原因是由于我们总是习惯性地忽略可扩展性。这本书介绍了如何通过扩展前端架构来提高软件质量。扩展JavaScript应用是一件有趣的事情,需要考虑很多因素:用户、开发者、开发环境、浏览器环境等。我们的任务就是全面考虑这些因素,从而提供的用户体验。我们要扩展什么?为何要扩展?本书将为大家解答这些问题。
本书内容
第1章,扩展JavaScript应用,介绍了何为可扩展的JavaScript应用,以及扩展JavaScript应用与扩展其他应用的区别。
第2章,可扩展性的影响因素,介绍了如何理解可扩展的需求,设计出更好的架构。
第3章,组件复合,介绍了构成架构核心的模式,以及如何以之为蓝图组合组件。
第4章,组件的通信与职责,介绍了组件之间的通信是如何制约扩展的。组件的通信模式功能有决定性作用。
第5章,寻址和导航,详细介绍了拥有指向不同资源的URI的大型Web应用,以及如何设计才能应对不断增长的URI数量。
第6章,用户偏好和默认设置,介绍了设置用户偏好的必要性,以及可配置的组件对扩展应用的重要性。
第7章,加载时间和响应速度,介绍了文件数量的增加是如何降低应用效率的。在添加新功能时,要有所舍弃,才能保证UI的响应速度。
第8章,可移植性和测试,介绍了如何编写不依赖于特定环境的JavaScript代码,包括创建可移植的模拟数据和测试代码。
第9章,缩小规模,介绍了移除无用或错误组件对扩展系统其他部分的重要性。
第10章,处理错误,介绍了优秀的JavaScript架构不会因为某个组件的错误而崩溃。许多时候,在设计时充分考虑对错误的处理是成功扩展的关键。
阅读本书的条件
? NodeJS
? 代码编辑器/集成开发环境
? 一个现代Web浏览器
本书读者
本书的目标读者是对前端架构感兴趣的高级JavaScript工程师。阅读本书无须预备框架知识,但本书介绍的大部分概念都来自于框架,例如Backbone、Angular、Ember。阅读本书需要扎实的JavaScript语言知识基础,本书中所有的示例代码都使用ECMAScript 6语法编写。
约定
在阅读本书时,你会发现许多代表不同类型信息的不同文本样式。这里展示了一些例子及其含义详解。
正文中的代码、数据库表名、文件夹名、文件名、文件后缀、路径、URI示例、用户输入,以及Twitter用户名等均按以下格式展示:“以users/31729为例。路由器应该找到一个模式,能够匹配该字符串,并能够提取出变量31729”。
代码块按以下格式展示:
// 渲染试图的各个部分。
// 各部分可能有renderer,也可能没有。
// 但不管有没有renderer,内容都会被返回。
警告和重要注解都会按此格式展示。
提示和技巧都会按此格式展示。
下载示例代码
你可以从下载所有已购买的博文视点书籍的示例代码文件。
勘误表
虽然我们已经尽力确保内容的准确性,但错误仍然可能存在。如发现任何错误,可登录博文视点官网 提交勘误信息。一旦勘误信息被本书作者或编辑确认,即可获得博文视点奖励积分,可用于兑换电子书。读者可以随时浏览图书页面,查看已发布的勘误信息。
评论
还没有评论。