新書推薦:
《
礼不远人:走近明清京师礼制文化
》
售價:HK$
109.3
《
杯中风土:日本酒的文化史
》
售價:HK$
90.9
《
简读中国史(全四册)
》
售價:HK$
282.4
《
全球基础研究人才指数报告(2023)
》
售價:HK$
342.7
《
20世纪40年代以来中国大陆海岸线演变特征
》
售價:HK$
423.2
《
更好的行为:给教师的指南(教师成长系列)
》
售價:HK$
78.2
《
闽南佛教寺庙建筑艺术与景观研究
》
售價:HK$
181.7
《
烧掉你的船:将焦虑转化为积极行动的9个策略
》
售價:HK$
68.8
編輯推薦:
使用JavaScript Next编程
优秀的代码可读性强、无错误且可维护。现代JavaScript也称为JavaScript Next,可以让开发人员容易地编写出完美的应用程序。在ES 2015中引入的新特性使得编写JavaScript项目与编写反应式应用和微服务一样,简化了JavaScript项目结构,极大地精简了面向异步的任务。
內容簡介:
《ES 20152016 编程实战》一书介绍了ES 2015及后续JavaScript发行版本中的新特性。读者在34个简短的课程中,可以逐个示例地学习,每个示例的设计目的是为了让读者掌握一种特定的技能。本书内容全面,探讨了语言的新语法、新声明和新数据类型。读者可以使用模块结构化代码,使用promise取代回调函数,使用类而不是构造函数。读者每翻过一页、每完成一个练习、每学习一次经过精心编裁的示例,都将向成为JavaScript大师迈近一步。 ?ES 2015及后续版本中的新特性 ?编写异步代码 ?创建自定义的迭代子 ?模块和类的排错
關於作者:
JD Isaacks已经从事编程工作15年了,主要使用基于ECMAScript的语言。他先前是The Iron Yard编码学院的JavaScript讲师,喜欢开源,为React、Backbone和D3等许多热门项目做出了贡献。他也是Bower.js和Moment.js团队的成员,是最受欢迎的Sublime Text软件包之一的GitGutter的创建者
目錄 :
目 录
第1课 ECMAScript规范和提案
流程 1
1.1 ECMAScript简史 1
1.2 ES2015增加这么多特性的
原因 2
1.3 谁决定添加何种特性 2
1.3.1 规范阶段 2
1.3.2 选择某个阶段 3
1.4 《ES 20152016编程实战》所讨论的内容 4
本课小结 4
第2课 使用Babel转编译 5
2.1 什么是转编译 5
2.1.1 编译成JavaScript语言 5
2.1.2 Babel的适用场合 6
2.2 配置Babel 6 6
2.3 《ES 20152016编程实战》所需的Babel配置 8
2.3.1 源代码映射的注意事项 9
2.3.2 将Babel配置为NPM
脚本 9
本课小结 10
第3课 使用Browserify捆绑模块 11
3.1 什么是模块 11
3.2 模块在Node.js中如何
工作 11
3.3 什么是Browserify 12
3.4 Browserify如何协助ES6
模块 12
3.5 让Browserify与Babel一起
工作 13
3.5.1 安装Browserify 13
3.5.2 使用babelify创建项目 13
3.6 Browserify的替代选择 16
本课小结 16
单元1 变量和字符串
第4课 使用let声明变量 19
4.1 let的作用域 20
4.2 let提升的工作原理 24
4.3 使用let还是使用var 26
本课小结 27
第5课 使用const声明常量 29
5.1 常量的工作机制 30
5.2 何时使用常量 33
本课小结 35
第6课 新字符串方法 37
6.1 搜索字符串 38
6.2 填充字符串 40
本课小结 42
第7课 模板字面量 45
7.1 什么是模板字面量 46
7.1.1 模板字面量的字符串
插值 47
7.1.2 模板字面量的多行
字符串 49
7.2 模板字面量是不可重用的
模板 50
7.3 使用标记模板字面量进行
自定义处理 51
本课小结 54
第8课 顶点项目:构建领域特定
语言 57
8.1 创建一些辅助函数 58
8.2 创建一个HTML转义的
DSL 59
8.3 创建一个将数组转换为
HTML的DSL 60
本课小结 61
单元2 对象和数组
第9课 新的数组方法 65
9.1 使用Array.from构建数组 66
9.2 使用Array.of构建数组 68
9.3 使用Array.prototype.fill
构建数组 69
9.4 使用Array.prototype.includes
搜索数组 71
9.5 使用Array.prototype.find
搜索数组 72
本课小结 73
第10课 Object.assign 75
10.1 使用Object.assign设置
默认值 76
10.2 使用Object.assign扩展
对象 78
10.3 在使用Object.assign时防止
对象改变 80
10.4 如何使用Object.assign
赋值 82
本课小结 84
第11课 解构 85
11.1 解构对象 86
11.2 解构数组 88
11.3 结合数组解构和对象
解构 89
11.4 可以解构的类型 91
本课小结 92
第12课 新对象字面量语法 93
12.1 简写属性名称 94
12.2 简写方法名称 96
12.3 计算属性名称 99
本课小结 100
第13课 符号 101
13.1 使用符号作为常量 102
13.2 使用符号作为对象键 104
13.3 使用全局符号创建行为
钩子 105
13.4 使用公知符号修改对象
行为 107
13.5 符号的陷阱 109
本课小结 110
第14课 顶点项目:模拟锁和
钥匙 111
14.1 创建锁和钥匙系统 111
14.2 创建Choose the Door
游戏 113
本课小结 117
单元3 函数
第15课 默认参数和rest 121
15.1 默认参数 122
15.2 使用默认参数避免重新
计算值 125
15.3 使用rest操作符收集
参数 127
15.4 使用rest在函数之间传递
参数 129
本课小结 130
第16课 解构参数 131
16.1 解构数组参数 132
16.2 解构对象参数 134
16.3 模拟命名参数 134
16.4 创建别名参数 137
本课小结 138
第17课 箭头函数 139
17.1 使用箭头函数使代码
简洁 140
17.2 使用箭头函数维护
上下文 143
17.3 箭头函数的陷阱 145
本课小结 147
第18课 生成器函数 149
18.1 定义生成器函数 150
18.2 使用生成器函数 152
18.3 使用生成器函数创建
无限列表 154
本课小结 156
第19课 顶点项目:囚徒困境 157
19.1 生成囚徒 158
19.2 让囚徒互动 160
19.3 获取和存储结果 161
19.4 将模拟程序结合在一起 162
19.5 哪种囚徒表现最好 164
本课小结 166
单元4 模块
第20课 创建模块 169
20.1 模块规则 170
20.2 如何创建模块 171
20.3 JavaScript文件何时成为
模块 175
本课小结 176
第21课 使用模块 177
21.1 指定模块的位置 178
21.2 从模块中导入值 179
21.3 如何绑定导入值 182
21.4 导入副作用 183
21.5 对模块进行分解和组织 184
本课小结 187
第22课 顶点项目:猜单词
游戏 189
22.1 规划 190
22.2 单词模块 190
22.3 状态模块 191
22.4 游戏界面模块 192
22.5 index 194
本课小结 195
单元5 迭代子
第23课 迭代子概述 199
23.1 迭代子的定义 200
23.2 for..of语句 200
23.3 spread 202
23.4 迭代器观察藏在
迭代子下的机制 206
本课小结 210
第24课 集合 211
24.1 创建集合 212
24.2 使用集合 213
24.3 WeakSet简介 216
本课小结 217
第25课 映射 219
25.1 创建映射 220
25.2 使用映射 221
25.3 何时使用映射 223
25.4 WeakMap简介 227
本课小结 227
第26课 顶点练习:21点游戏 229
26.1 若干张纸牌和一副牌 230
26.2 让CPU缓慢运行,便于玩家
观察 234
26.3 将各部分代码组合
在一起 235
本课小结 239
单元6 类
第27课 类概述 243
27.1 类的声明 244
27.2 实例化类 246
27.3 导出类 247
27.4 类方法不绑定 248
27.5 在类定义中设置实例
属性 249
27.6 静态属性 251
本课小结 252
第28课 扩展类 255
28.1 继承 256
28.2 super 257
28.3 继承类时常见的错误 259
本课小结 260
第29课 顶点项目:彗星游戏
Comets 263
29.1 创建可控的精灵 264
29.2 添加彗星 265
29.3 发射火箭 266
29.4 物体碰撞时 268
29.5 添加爆炸效果 270
本课小结 271
单元7 异步工作
第30课 promise 275
30.1 使用promise 276
30.2 错误处理 278
30.3 promise辅助函数 279
本课小结 282
第31课 高级promise 283
31.1 创建promise 284
31.2 嵌套的promise 286
31.3 捕获错误 288
本课小结 291
第32课 异步函数 293
32.1 使用生成器的异步代码 294
32.2 异步函数概述 296
32.3 异步函数中的错误处理 297
本课小结 299
第33课 observable 301
33.1 创建observable 302
33.2 组合编写observable 304
33.3 创建observable组合器 305
本课小结 306
第34课 顶点项目:画布画廊 307
34.1 获取图片 308
34.2 在画布上绘制图片 309
34.3 重复过程 311
本课小结 314
附录 习题答案 315
內容試閱 :
前 言
《ES 20152016编程实战》的目标受众是那些希望学习2015及后续版本中所引入的现代特性的JavaScript编程人员。《ES 20152016编程实战》并未专注于ES2015或ES2016的特定版本,而是专注于开发人员将会遇到的最佳新特性,这是开发人员投身到现代JavaScript开发环境中应该理解的特性。
《ES 20152016编程实战》目标读者
任何程序员,无论其技术水平如何,都可以从《ES 20152016编程实战》中获益良多。《ES 20152016编程实战》没有讲授如何编程。只要读者能够自如地使用经典的JavaScript编程,无须成为JavaScript专家,就可以阅读并理解此书的内容。
《ES 20152016编程实战》的组织方式
《ES 20152016编程实战》被分解为内聚性强的几个单元。每个单元围绕特定主题如函数或异步编码展开。这些单元都会分成特定主题的课堂,在开始上课之前,为了以正确的方式打开读者的思维,每节课都会从启发式问题开始。在每节课中,都会有快速测试,在读者继续学习之前,帮助确定读者是否理解了本节的核心概念。在每节课结束时,都会有练习帮助读者理解和应用所学习的内容。在每个单元结束时,读者将使用本单元中所学的所有内容构建顶点项目。
关于代码
《ES 20152016编程实战》以嵌在正文中的代码清单的形式包含了许多源代码示例。源代码的格式为特殊字体,以便与正文分开。有些时候,代码以粗体显示,以突出显示此代码与本章前面步骤中的代码不同,例如将新的特性添加到现有的代码行中。
在许多情况下,重新格式化了原始的源代码。添加换行符、重新缩进以适应书中狭小的页面空间。在极少数情况下,空间依然不够用,代码清单将使用行继续标记?。
此外,在文本中描述代码时,源代码中的注释通常已移除。在许多代码清单中,都使用代码注释突出重要概念。
《ES 20152016编程实战》中使用的代码可以在出版商的网站https:www.manning.combooksget-
programming-with-javascript-next或GitHubhttps:github.comjisaacksget-programming
-jsnext上获得,也可扫描封底二维码获得。
书籍论坛
《ES 20152016编程实战》的购买者可以免费访问由Manning Publications运营的私有网络论坛,在这个论坛中,购买者可以对该书发表评论、提出技术问题,从作者和其他用户那里获得帮助。要访问论坛,请访问https:forums.manning.comforumsget-programming
-with-javascript-next。购买者还可以访问https:forums.manning.comforumsabout,了解有关Manning论坛和行为规则的更多信息。
Manning承诺为读者提供一个交流的场所,让读者之间以及读者和作者之间能够进行有意义的对话。这不是作者做出的任何具体参与论坛的承诺,作者在论坛上贡献自己的时间和知识仍然是自愿无偿的行为。我们建议读者尝试向作者提出一些具有挑战性的问题,保持作者的兴趣。只要《ES 20152016编程实战》还在出版,就可以从出版商的网站上访问论坛和之前讨论的档案。
在线资源
在https:github.comtc39ecma262上,读者可以与时俱进,了解JavaScript的最新特性。在此处,读者可以得知何种特性处在提案流程中的哪个阶段。稍后在《ES 20152016编程实战》中,我们将谈论这些阶段和提案的工作机制。