当前位置:首页 > javascript >
《编写可靠的JavaScript代码》电子书封面

编写可靠的JavaScript代码

  • 发布时间:2020年05月25日 10:13:27
  • 作者:王肖峰
  • 大小:102 MB
  • 类别:JavaScript电子书
  • 格式:PDF
  • 版本:高清版
  • 评分:7.5

    编写可靠的JavaScript代码 PDF 高清版

      给大家带来的一篇关于JavaScript相关的电子书资源,介绍了关于JavaScript、代码方面的内容,本书是由清华大学出版社出版,格式为PDF,资源大小102 MB,王肖峰编写,目前豆瓣、亚马逊、当当、京东等电子书综合评分为:9.9。

      内容介绍

      《编写可靠的JavaScript代码 测试驱动开发JavaScript商业软件》分为5个部分:

      第Ⅰ一部分“确立牢靠的基本”包含了计算机专业的重要定义,比如SOLID和DRY原则,还探讨了模块测试和测试驱动开发的优势。

      在第Ⅱ一部分“测试根据方式的代码”中,大家叙述并应用测试驱动开发建立了好多个有用的代码方式。

      第Ⅲ一部分“测试和撰写高級JavaScript特性”叙述了怎么使用和测试JavaScript語言更高級的特性。

      第Ⅳ一部分“测试中的独特主题”出示了测试DOM实际操作的示例,还演试了用以提高代码规范的静态数据分析工具的应用。

      第Ⅴ一部分“小结”回望了测试驱动开发的定义,还展现了一些这书采用的JavaScript习语。

      目录

      • 第Ⅰ部分 奠定坚实的基础
      • 第1章 实践软件工程 3
      • 1.1 编写从开始就正确的代码 4
      • 1.1.1 掌握JavaScript的特性 4
      • 1.1.2 在大型系统中规避JavaScript陷阱 15
      • 1.1.3 应用软件工程原则 17
      • 1.2 编写保持正确的代码 22
      • 1.2.1 投资单元测试的未来 22
      • 1.2.2 实践测试驱动开发 22
      • 1.2.3 编写易于测试的代码 23
      • 1.3 小结 26
      • 第2章 准备工具 27
      • 2.1 使用测试框架 27
      • 2.1.1 辨别不正确的代码 30
      • 2.1.2 可测试性设计 32
      • 2.1.3 编写最少的代码 33
      • 2.1.4 安全维护和重构 33
      • 2.1.5 可运行规范 34
      • 2.1.6 当前的开源和商业框架 34
      • 2.1.7 介绍Jasmine 36
      • 2.2 使用依赖注入框架 41
      • 2.2.1 依赖注入的定义 41
      • 2.2.2 使用依赖注入让代码更可靠 43
      • 2.2.3 掌握依赖注入 43
      • 2.2.4 案例研究:编写一个轻量级依赖注入框架 43
      • 2.2.5 使用依赖注入框架 50
      • 2.2.6 当前的依赖注入框架 52
      • 2.3 使用切面工具 53
      • 2.3.1 案例研究:使用和不使用AOP进行缓存 53
      • 2.3.2 案例研究:构建Aop.js模块 55
      • 2.3.3 其他AOP库 67
      • 2.3.4 结论 68
      • 2.4 使用代码检查工具 68
      • 2.4.1 使用linting工具让代码更可靠 68
      • 2.4.2 JSHint简介 71
      • 2.4.3 其他工具 73
      • 2.4.4 严格模式 74
      • 2.5 小结 74
      • 第3章 构造可靠的对象 75
      • 3.1 使用原生数据 75
      • 3.2 使用对象字面量 77
      • 3.3 使用模块模式 78
      • 3.3.1 创建任意模块 78
      • 3.3.2 创建立即执行模块 79
      • 3.3.3 创建可靠的模块 80
      • 3.4 使用对象原型和原型继承 80
      • 3.4.1 默认对象原型 80
      • 3.4.2 原型继承 81
      • 3.4.3 原型链 82
      • 3.5 使用new创建对象 83
      • 3.6 使用类继承 88
      • 3.6.1 模拟类继承 88
      • 3.6.2 重复将杀死Kangaroo 89
      • 3.7 使用函数式继承 91
      • 3.8 猴子补丁(Monkey-Patching) 92
      • 3.9 小结 95
      • 第Ⅱ部分 测试基于模式的代码
      • 第4章 浏览各种模式的优点 99
      • 4.1 案例分析 99
      • 4.2 通过更广泛的词汇产生更加优雅的代码 100
      • 4.3 使用拥有良好设计、良好测试的构建块产生可靠的代码 101
      • 4.4 小结 102
      • 第5章 确保回调模式的正确使用 103
      • 5.1 通过单元测试了解回调模式 104
      • 5.1.1 编写和测试使用了回调函数的代码 104
      • 5.1.2 编写和测试回调函数 109
      • 5.2 避免问题 113
      • 5.2.1 扁平化回调箭头 113
      • 5.2.2 注意this变量 115
      • 5.3 小结 119
      • 第6章 确保承诺模式的正确使用 121
      • 6.1 通过单元测试了解承诺 122
      • 6.1.1 使用承诺 122
      • 6.1.2 构造和返回承诺 127
      • 6.1.3 测试XMLHttpRequest 130
      • 6.2 串联承诺 133
      • 6.3 使用承诺封装器 134
      • 6.4 了解状态和命运 135
      • 6.5 区分标准承诺和jQuery承诺 135
      • 6.6 小结 136
      • 第7章 确保正确使用散函数应用程序 137
      • 7.1 对散函数应用程序进行单元测试 137
      • 7.2 为散函数应用程序创建切面 139
      • 7.3 区分散函数应用程序和柯里化 140
      • 7.3.1 柯里化 140
      • 7.3.2 散函数应用程序 141
      • 7.4 小结 141
      • 第8章 确保备忘录模式的正确使用 143
      • 8.1 通过单元测试了解备忘录模式 144
      • 8.2 使用AOP添加备忘录 147
      • 8.2.1 创建备忘录切面 147
      • 8.2.2 为restaurantApi应用returnValueCache切面 150
      • 8.3 小结 152
      • 第9章 确保单例模式的正确实现 153
      • 9.1 通过单元测试了解单例模式 154
      • 9.1.1 使用对象字面量实现单例共享缓存 154
      • 9.1.2 使用模块实现单例共享缓存 158
      • 9.2 小结 162
      • 第10章 确保工厂模式的正确实现 163
      • 10.1 为工厂编写单元测试 163
      • 10.2 实现工厂模式 169
      • 10.3 考虑其他工厂类型 171
      • 10.4 小结 171
      • 第11章 确保沙箱模式的正确实现和使用 173
      • 11.1 通过单元测试了解沙箱模式 173
      • 11.1.1 创建部件沙箱 174
      • 11.1.2 创建和测试沙箱工具 187
      • 11.1.3 创建与沙箱一起使用的函数 191
      • 11.2 小结 193
      • 第12章 确保装饰器模式的正确实现 195
      • 12.1 使用测试驱动的方式开发装饰器 196
      • 12.1.1 为被装饰的对象编写一个假对象 197
      • 12.1.2 为错误的传递编写测试 198
      • 12.1.3 编写空白装饰器 199
      • 12.1.4 添加传递功能到装饰器 200
      • 12.1.5 验证成功传递 202
      • 12.1.6 添加装饰器的特性 204
      • 12.1.7 通用化装饰器 210
      • 12.2 小结 211
      • 第13章 确保策略模式的正确实现 213
      • 13.1 通过单元测试了解该模式 213
      • 13.1.1 在不使用策略模式的情况下实现transportScheduler 214
      • 13.1.2 使用策略模式实现transportScheduler 216
      • 13.2 小结 227
      • 第14章 确保代理模式的正确实现 229
      • 14.1 通过测试驱动的方式开发代理 230
      • 14.2 小结 245
      • 第15章 确保正确实现可链接方法 247
      • 15.1 通过单元测试了解该模式 248
      • 15.2 链接then方法 255
      • 15.3 小结 257
      • 第Ⅲ部分 测试和编写高级JavaScript特性
      • 第16章 在无接口语言中遵守接口 261
      • 16.1 了解接口的优点 262
      • 16.2 了解接口隔离原则 263
      • 16.3 使用测试驱动开发创建契约注册表 265
      • 16.3.1 定义契约 266
      • 16.3.2 判断是否履行了契约 267
      • 16.3.3 断言契约被履行了 271
      • 16.3.4 绕过契约执行 273
      • 16.3.5 创建在被返回(创建)的对象上实施契约的切面 273
      • 16.4 小结 277
      • 第17章 确保正确的参数类型 279
      • 17.1 了解JavaScript无类型参数带来的机会和风险 280
      • 17.2 扩展ContractRegistry检查参数 280
      • 17.2.1 界定任务范围 280
      • 17.2.2 判断集合中的所有变量是否都履行了它的契约 281
      • 17.2.3 断言集合中的所有变量都履行了它的契约 289
      • 17.2.4 在切面中打包参数检查功能 290
      • 17.3 支持契约库 292
      • 17.4 综合起来 293
      • 17.4.1 创建契约模块 293
      • 17.4.2 创建应用程序的ContractRegistry 296
      • 17.4.3 为生产发布绕过契约 297
      • 17.5 比较面向切面的解决方案和静态解决方案 297
      • 17.5.1 考虑TypeScript的优点 297
      • 17.5.2 考虑切面的优点 297
      • 17.6 小结 298
      • 第18章 确保正确使用call、apply和bind 299
      • 18.1 浏览this是如何绑定的 299
      • 18.1.1 默认绑定 300
      • 18.1.2 隐式绑定 302
      • 18.1.3 new绑定 303
      • 18.1.4 显式绑定 305
      • 18.2 创建和测试使用call、apply和bind的代码 305
      • 18.2.1 使用call和apply 305
      • 18.2.2 使用测试驱动开发创建一个Array.prototype.forEach Polyfill 307
      • 18.2.3 使用bind 316
      • 18.3 小结 321
      • 第19章 确保正确使用方法借用 323
      • 19.1 确保借用对象符合需求 324
      • 19.1.1 让被借用的函数验证借用者的资格 324
      • 19.1.2 向被借用的对象附加切面 326
      • 19.1.3 使用borrow()方法 329
      • 19.1.4 在ContractRegistry中添加对象验证器 330
      • 19.2 预期借用者的副作用 331
      • 19.2.1 考虑被隔离函数的副作用 331
      • 19.2.2 考虑调用其他函数的函数的副作用 332
      • 19.3 预期捐赠者对象的副作用 338
      • 19.4 小结 339
      • 第20章 确保正确使用混合 341
      • 20.1 创建和使用混合 343
      • 20.1.1 创建和使用传统混合 344
      • 20.1.2 创建和使用函数式混合 361
      • 20.2 小结 367
      • 第21章 测试高级程序架构 369
      • 21.1 确保观察者模式的可靠使用 369
      • 21.1.1 检查观察者模式 370
      • 21.1.2 增强观察者模式的可靠性 376
      • 21.2 确保中介者模式的可靠使用 380
      • 21.2.1 了解中介者模式 381
      • 21.2.2 增强基于中介者代码的可靠性 382
      • 21.3 小结 395
      • 第Ⅳ部分 测试中的特殊主题
      • 第22章 测试DOM访问 399
      • 22.1 对UI进行单元测试 399
      • 22.1.1 检查难于测试的UI代码 400
      • 22.1.2 使用TDD创建UI组件 401
      • 22.2 使用分析器优化代码 411
      • 22.2.1 检测低效代码 411
      • 22.2.2 避免不成熟的优化 418
      • 22.3 小结 418
      • 第23章 确保符合标准 419
      • 23.1 使用ESLint 420
      • 23.1.1 安装ESLint 420
      • 23.1.2 运行ESLint 424
      • 23.1.3 使用ESLint实施代码标准 427
      • 23.2 实施架构分离 432
      • 23.2.1 家庭秘密技术 433
      • 23.2.2 铭记技术 435
      • 23.2.3 不可能任务(Mission Impossible)技术 437
      • 23.2.4 魔术棒(Magic Wand)
      • 技术 441
      • 23.2.5 不要使用调用栈技术 442
      • 23.2.6 其他技术 442
      • 23.2.7 其他架构 442
      • 23.3 小结 443
      • 第Ⅴ部分 总结
      • 第24章 测试驱动开发原则的总结 447
      • 24.1 回顾值得使用测试驱动开发的原因 447
      • 24.2 练习测试驱动开发 448
      • 24.3 编写可单元测试的代码 448
      • 24.4 掌握测试驱动开发的
      • 技术 448
      • 24.4.1 在编码之前编写测试 448
      • 24.4.2 保持测试DRY 449
      • 24.4.3 首先测试错误条件 449
      • 24.4.4 测试要先易后难 449
      • 24.4.5 具体 449
      • 24.4.6 只测试一件事情 450
      • 24.4.7 测试数据如同测试一样重要 450
      • 24.4.8 高效地使用Jasmine 450
      • 24.5 测试本书描述的模式 450
      • 24.5.1 测试面向切面编程 450
      • 24.5.2 测试对象构造 451
      • 24.5.3 测试回调 451
      • 24.5.4 测试基于承诺的代码 451
      • 24.5.5 测试散函数应用程序 451
      • 24.5.6 测试备忘录模式 452
      • 24.5.7 测试单例模式 452
      • 24.5.8 测试工厂模式 452
      • 24.5.9 测试沙箱 452
      • 24.5.10 测试装饰器模式 453
      • 24.5.11 测试策略模式 453
      • 24.5.12 测试代理模式 453
      • 24.5.13 测试可链接方法 453
      • 24.5.14 测试接口一致性 453
      • 24.5.15 测试call和apply的
      • 使用 453
      • 24.5.16 测试方法借用模式 454
      • 24.5.17 测试混合 454
      • 24.5.18 测试中介者和观察者模式 454
      • 24.5.19 测试DOM访问 454
      • 24.5.20 实施架构分离的测试 454
      • 24.6 小结 455
      • 第25章 本书JavaScript习语的总结 457
      • 25.1 回顾对象 457
      • 25.1.1 可以添加和删除的对象属性 457
      • 25.1.2 可以将对象用作词典 458
      • 25.2 回顾变量 459
      • 25.2.1 提升变量声明 459
      • 25.2.2 变量有函数作用域 460
      • 25.3 回顾函数 463
      • 25.3.1 函数是对象 463
      • 25.3.2 提升函数声明 463
      • 25.3.3 函数没有返回类型 464
      • 25.3.4 函数可以是匿名的 465
      • 25.3.5 函数可以被嵌套 465
      • 25.3.6 函数调用可以使用任意数量的参数 466
      • 25.3.7 函数可以立即被调用 467
      • 25.4 回顾布尔操作 468
      • 25.4.1 在测试相等性时类型可能会被强制转换 468
      • 25.4.2 值可以是真或假 469
      • 25.5 小结 469

      学习笔记

      原生javascript AJAX 三级联动的实现代码

      js 三级联动的实现代码如下所示: !DOCTYPE htmlhtml lang="en"head meta charset="UTF-8" titlejs原生ajax/title/headbody select name="sel1" option value="" -请选择 省/直辖市/自治区-/option /select select name="sel2" option value="" -请选择 市-/option /select input type="text" value="" id="int"/ script var sel1 = document.getElementsByName('sel1')[0]; var sel2 = document.getElementsByName('sel2')[0]; var ints = document.getElementById('int'); // 创建请求对象 var a = new XMLHttpRequest(); // 初始化 a.open('get','city.json','true'); // 发送 a.send(); //readySate 状态码 交互进行到了哪一步 //0:请求未初始化 //1:服务器链接已建立 //2:请求已经接受 //3:请求处理中 //4:请求已经完成,且响应已就绪 //status 交互……

      推荐15个最好用的JavaScript代码压缩工具

      JavaScript 代码压缩是指去除源代码里的所有不必要的字符,而不改变其功能的过程。这些不必要的字符通常包括空格字符,换行字符,注释以及块分隔符等用来增加可读性的代码,但并不需要它来执行。 在这篇文章中,我们选择了15个最好用的 JavaScript 压缩工具,有简单的在线转换器,GUI工具和命令行界面等。 1. JavaScript Minifier It is a nice looking tool with an API to minify your js code. 2. JSMIni If you want to minify your JavaScript or jQuery files quickly and easily, turn to jsMini. Just copy and paste your source code, select whether you want basic or full compression, and then minify your code. 3. JSCompress JSCompress.com is an online javascript compressor that allows you to compr……

      图文详解Heap Sort堆排序算法及JavaScript的代码实现

      1. 不得不说说二叉树 要了解堆首先得了解一下二叉树,在计算机科学中,二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。 二叉树的每个结点至多只有二棵子树(不存在度大于 2 的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第 i 层至多有 2i - 1 个结点;深度为 k 的二叉树至多有 2k - 1 个结点;对任何一棵二叉树 T,如果其终端结点数为 n0,度为 2 的结点数为 n2,则n0 = n2 + 1。 树和二叉树的三个主要差别: 树的结点个数至少为 1,而二叉树的结点个数可以为 0 树中结点的最大度数……

      javascript实现最长公共子序列实例代码

      介绍 最长公共子序列(Longest Common Subsequence LCS)是从给定的两个序列X和Y中取出尽可能多的一部分字符,按照它们在原序列排列的先后次序排列得到。LCS问题的算法用途广泛,如在软件不同版本的管理中,用LCS算法找到新旧版本的异同处;在软件测试中,用LCS算法对录制和回放的序列进行比较,在基因工程领域,用LCS算法检查患者DNA连与键康DNA链的异同;在防抄袭系统中,用LCS算法检查论文的抄袭率。LCS算法也可以用于程序代码相似度度量,人体运行的序列检索,视频段匹配等方面,所以对LCS算法进行研究具有很高的应用价值。 基本概念 子序列(subsequence): 一个特定序列的子序列就是将给定序列中零个或……

      JavaScript用200行代码制作打飞机小游戏实例

      我去,我的图片分数被这个录屏软件的水印盖上了,扎心。 这个程序的文件以及代码全部上传到了github 程序下载链接传送门 这是自己第一次通过js写的小游戏,那个时候对象的原理跟结构体的概念不是特别的清晰,所以没用对象来写,所以直接导致后期我对这个程序进行修改的时候出现问题,太过于复杂了,我终于了解什么叫做牵一发动全身了。所以这个程序教会我一定一定要用对象的思想处理以后的问题,尤其是这种带属性明显的东西。 当然你要问我图片怎么来的我只能说都是我自己画的所以这可是原创的原创。 代码部分我是通过一个大的函数直接进行所有的封装,当然写这个的时候的我完完全……

      以上就是本次介绍的JavaScript电子书的全部相关内容,希望我们整理的资源能够帮助到大家,感谢大家对码农之家的支持。

      上一篇:Akka入门与实践

      下一篇:Ionic学习手册

      展开 +

      收起 -

      下载地址:百度网盘下载
      JavaScript相关电子书
      移动网页设计与开发:HTML5+CSS3+JavaScript
      移动网页设计与开发:HTML5+CSS3+JavaScript 影印完整版

      将落伍的网址打导致更为灵便、友善,而且令其充分运用不一样机器设备和电脑浏览器的与众不同优点。根据《移动网页设计与开发HTML5+CSS3+JavaScript》,您将为投身第一线开发充分准备! *內容

      立即下载
      JavaScript+Vue+React全程实例
      JavaScript+Vue+React全程实例

      这书根据基础知识与开发实践活动紧密结合的观念,选萃当今简易、好用和时兴的百余个JavaScript编码案例,协助阅读者学习培训把握JavaScript开发语言。本书內容详实、重中之重突显、浅显易懂,包含了JavaScript前端开发开发的各个方面。

      立即下载
      JavaScript ES6函数式编程入门经典
      JavaScript ES6函数式编程入门经典 原书扫描版

      本书使用JavaScript ES6带你学习函数式编程。你将学习柯里化、偏函数、高阶函数以及Monad等概念。具有一定的参考价值,感兴趣的小伙伴们可以参考一下

      立即下载
      JavaScript忍者秘籍
      JavaScript忍者秘籍 高清版

      JavaScript语言非常重要,相关的技术图书也很多,但没有任何一本书对JavaScript语言的重要部分(函数、闭包和原型)进行深入、全面的介绍,也没有任何一本书讲述跨浏览器代码的编写。本书是

      立即下载
      JavaScript忍者秘籍
      JavaScript忍者秘籍 超清第2版

      这是由jQuery库创始人编写的一本深入剖析JavaScript语言的书,从不同层次讲述了逐步成为JavaScript高手所需的知识,适合具备一定JavaScript基础知识的读者阅读

      立即下载
      21天学通HTML+CSS+JavaScript Web开发
      21天学通HTML+CSS+JavaScript Web开发 第7版

      21天学通HTML CSS JavaScript Web开发(第7版) 是全球畅销书《21天学通使用HTML与CSS发布Web站点》的全新升级版本,作者在本书囊括了新的HTML5与CSS3技术,并采用易于理解的步骤式教程讲解了这些技

      立即下载
      JavaScript for PHP Developers
      JavaScript for PHP Developers 完整中文版 立即下载
      大型JavaScript应用最佳实践指南
      大型JavaScript应用最佳实践指南 影印超清版 立即下载
      读者留言
      韩俊驰

      韩俊驰 提供上传

      资源
      32
      粉丝
      42
      喜欢
      189
      评论
      1

      Copyright 2018-2020 www.xz577.com 码农之家

      版权投诉 / 书籍推广 / 赞助:520161757@qq.com