新書推薦:
《
清俗纪闻
》
售價:HK$
98.6
《
镜中的星期天
》
售價:HK$
76.2
《
世界前沿技术发展报告2024
》
售價:HK$
188.2
《
可转债——新手理财的极简工具
》
售價:HK$
65.0
《
新加坡教育:神话与现实
》
售價:HK$
96.3
《
“口袋中的世界史”第一辑·冷战中的危机事件
》
售價:HK$
291.2
《
绝美的奥伦堡蕾丝披肩编织
》
售價:HK$
177.0
《
狂飙年代:18世纪俄国的新文化和旧文化(第二卷)
》
售價:HK$
177.0
編輯推薦:
是否感觉自己发开的应用像建立在浮沙之上,是否需要创建一年以上不能重写的应用程序?本书会给出扩展性场景和真实示例,指导你构建经久不衰的应用程序,并从可寻址性、可测试性和组件组合等角度向你展示如何处理可扩展性。大规模框架需要能够缩小的能力、从出错组件恢复的能力,以及扩大并管理新功能或更多用户的能力。在此之上,你可以用任何JavaScript工具集构建起可扩展的应用。
识别、评估影响应用程序可扩展性的外部影响因素。
在大型JavaScript应用程序中构建组件。
探索可扩展的组件间通信技术。
定制、配置组件满足扩展需求。
在各种规模和复杂性的情况下,确保应用程序有*好的用户体验。
创建在各种环境中都可移植、可测试的应用。
通过删除或重构组件来进行架构方面的权衡。
设计以可扩展方式失败的组件。
內容簡介:
本书将带你设计和实现能从多个维度(如寻址能力、可配置性和性能)可伸缩的JavaScript的应用程序体系架构;了解常见的JavaScript缩放陷阱,并通过真实的解决方案和策略解决这些问题。内容包括:确定和评估应用程序的外部扩展影响力,创建构成大规模JavaScript应用程序的组件,对可扩展组件间的通信进行设计,设计一个不受限于环境的便携的且可测试的应用程序,等等。
關於作者:
Adam Boduch在开发大型 JavaScript应用方面有近 10年的工作经验。在转型为前端工程师之前,他曾使用 Python与 Linux参与了许多大型云计算产品的构建。Adam拥有非常丰富的开发经验,擅长处理复杂的场景,提高软件的可扩展性。他编写了很多 JavaScript方面的书籍,其中包括 Lo-Dash Essentials,并且,他还热衷于优化用户体验和性能。
Adam现居住于多伦多,是 Virtustream的一名高级软件工程师。
August N. Marcello III是一位充满激情的软件工程师,在客户端的 Web应用架构相关的设计、实现、部署方面,有着近 20年的工作经验。他专注于基于 SaaS创造良好的用户体验,并将其传播到 Web生态系统,这无论从个人还是从专业角度来说都极具价值。对新兴通用技术的热爱以及对先进的 JavaScript平台的专注,驱动着他在技术上精益求精。在工作之余,他会参加越野跑、山地自行车骑行,或者陪伴家人和朋友。他的个人网站为: www.augustmarcello.com。
Yogesh Singh毕业于印度 JSS技术教育学院。他是一位全栈 Web开发者,在服务端 Web开发栈方面( ASP.NET以及 Node.js)很有经验,而且熟练掌握 HTML、CSS以及 JavaScript。
Yogesh热爱 JavaScript以及相关的库和框架( Backbone、 AngularJS、jQuery和 Underscore)。Adam Boduch在开发大型 JavaScript应用方面有近 10年的工作经验。在转型为前端工程师之前,他曾使用 Python与 Linux参与了许多大型云计算产品的构建。Adam拥有非常丰富的开发经验,擅长处理复杂的场景,提高软件的可扩展性。他编写了很多 JavaScript方面的书籍,其中包括 Lo-Dash Essentials,并且,他还热衷于优化用户体验和性能。
Adam现居住于多伦多,是 Virtustream的一名高级软件工程师。
关于审校者
August N. Marcello III是一位充满激情的软件工程师,在客户端的 Web应用架构相关的设计、实现、部署方面,有着近 20年的工作经验。他专注于基于 SaaS创造良好的用户体验,并将其传播到 Web生态系统,这无论从个人还是从专业角度来说都极具价值。对新兴通用技术的热爱以及对先进的 JavaScript平台的专注,驱动着他在技术上精益求精。在工作之余,他会参加越野跑、山地自行车骑行,或者陪伴家人和朋友。他的个人网站为: www.augustmarcello.com。
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公司的全栈开发者。
业余时间,他喜欢在 http:mylearning.in上写博客。他的 LinkedIn简历地址为 https:www.linkedin.cominyogesh21。
Nikolay Sokolov是一名软件工程师,他在云计算、自动化部署和企业软件开发方面有着丰富的经验。现在就职于 Tonomi(http:tonomi.com),负责基于弹性组件模型分发云应用的自动管理包。
可通过 https:twitter.comchemikadze随时联系他。
Serkan Yersen是一名洛杉矶的软件开发者。他是一些开源库的作者,例如: ifvisible.js、underscore.py以及 kwargs.js。Serkan专门从事构建大型 JavaScript应用,以及为用户广泛的应用创建 UI。2006年至 2012年,就职于 http:www.jotform.com期间,他开发了一个复杂的表单生成器,供上百万用户使用。现在,他就职于 Home Depot和 Redbeacon(http:www.redbeacon.com),负责 Web应用开发。你可以访问他的个人网站:http:serkan.io。
关于译者
本书翻译工作由月影领衔的奇舞团翻译小组承担,由王韦华、黄小璐、黄薇负责翻译。王韦华网名 Aztack,前端技术专家。曾就职百度、奇虎 360等国内知名互联网公司。拥有丰富的 Web前端开发经验,擅长 JavaScript、Ruby、Java、C等语言。
个人博客:https:aztack.wang
黄小璐
毕业于华中科技大学计算机学院。现为奇虎 360软件开发工程师。曾参与开源项目
[stcjs](https:github.comstcjsstc)(高性能前端工作流系统)。参与翻译了《高性能 HTML5》等书。
黄薇
毕业于中山大学,于 2013年加入奇舞团,近期参与了 Nova.js(Web Component框架、声享(在线制作 PPT)等项目,对大型 JavaScript 应用有浓厚的兴趣和丰富的开发经验。
以上三位译者曾共同参与《移动 Web手册》一书的翻译工作。
目錄 :
1 扩展JavaScript 应用 ................................................................................. 1
影响扩展的因素 ....................................................................................................................... 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平台的专注,驱动着他在技术上精益求精。在工作之余,他会参加越野跑、山地自行车骑行,或者陪伴家人和朋友。他的个人网站为:www.augustmarcello.com。
非常感谢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公司的全栈开发者。
业余时间,他喜欢在http:mylearning.in上写博客。他的LinkedIn简历地址为https:www.linkedin.cominyogesh21。
感谢我的家人,朋友以及同事的支持。
Nikolay Sokolov是一名软件工程师,他在云计算、自动化部署,还有企业软件开发方面有着丰富的经验。现在就职于Tonomi(http:tonomi.com),负责基于弹性组件模型分发云应用的自动管理包。
可通过https:twitter.comchemikadze随时联系他。
Serkan Yersen是一名洛杉矶的软件开发者。他是一些开源库的作者,例如:ifvisible.js、underscore.py以及kwargs.js。Serkan专门从事构建大型JavaScript应用,以及为用户广泛的应用创建UI。2006年至2012年,就职于http:www.jotform.com期间,他开发了一个复杂的表单生成器,供上百万用户使用。现在,他就职于Home Depot和Redbeacon(http:www.redbeacon.com),负责Web应用开发。你可以访问他的网站:http:serkan.io。
译者简介
本书翻译工作由月影领衔的奇舞团翻译小组承担,由王韦华、黄小璐、黄薇负责翻译。
王韦华
网名Aztack,前端技术专家。曾就职百度、奇虎360等国内知名互联网公司。拥有丰富的Web前端开发经验,擅长JavaScript、Ruby、Java、C等语言。
个人博客:https:aztack.wang
黄小璐
毕业于华中科技大学计算机学院。现为奇虎360软件开发工程师。曾参与开源项目[stcjs](https:github.comstcjsstc)(高性能前端工作流系统)。参与翻译了《高性能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用户名等均按以下格式展示:以users31729为例。路由器应该找到一个模式,能够匹配该字符串,并能够提取出变量31729。
代码块按以下格式展示:
渲染试图的各个部分。
各部分可能有renderer,也可能没有。
但不管有没有renderer,内容都会被返回。
警告和重要注解都会按此格式展示。
提示和技巧都会按此格式展示。
下载示例代码
你可以从http:www.broadview.com.cn下载所有已购买的博文视点书籍的示例代码文件。
勘误表
虽然我们已经尽力确保内容的准确性,但错误仍然可能存在。如发现任何错误,可登录博文视点官网http:www.broadview.com.cn 提交勘误信息。一旦勘误信息被本书作者或编辑确认,即可获得博文视点奖励积分,可用于兑换电子书。读者可以随时浏览图书页面,查看已发布的勘误信息。