《JavaScript忍者秘籍》——1.4 当前最佳实践

简介:

本节书摘来自异步社区《JavaScript忍者秘籍》一书中的第1章,第1.4节,作者:【美】John Resig(莱西格) , Bear Bibeault(贝比奥特) 译者: 徐涛 更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.4 当前最佳实践

掌握JavaScript语言和跨浏览器编码问题是成为Web应用程序开发专家的重要条件,但它们并不是全部。要进军专家行列,还需要秀出以下很多开发人员之前都已经掌握的高质量代码。我们将在第2章深入研究这些被称为最佳实践(best practices)的特征,除了熟练掌握语言外,还包括如下元素。

  • 测试。
  • 性能分析。
  • 调试技巧。

在我们的编程过程中,时常遵守这些最佳实践是极其重要的;跨浏览器开发的复杂性也直接证明了这一点。让我们来看看这些实践。

1.4.1 当前最佳实践:测试
在本书中,我们将使用大量的测试技术,以确保示例代码的运行符合我们的预期,同样也作为测试一般代码的示例。对于测试,我们将使用的一个主要工具是assert()函数,其目的是断言代码是true还是false。

该函数的一般形式是:
screenshot

第一个参数是一个条件,应该是true,而第二个参数则是一个消息,在第一个参数不为true时进行显示。

考虑如下代码:

screenshot

如果变量a的值不等于1,断言就会失败,这些过于戏剧性的消息就会显示。

注意,assert()函数并不是JavaScript语言的原生特性(一些像Java这样的语言,也提供这样的功能),所以我们会自己实现它。我们将在第2章讨论assert()函数的实现以及使用。

1.4.2 当前最佳实践:性能分析
另一个重要的实践是性能分析。浏览器的JavaScript引擎在JavaScript本身的性能表现上取得了惊人的进步,但这并不是我们编写劣质和低效代码的借口。

我们将使用本书稍后的如下代码,收集性能信息:

screenshot

上述代码中,我们在代码执行的地方记录时间戳:一个在代码执行开始前,一个在代码执行后。两个时间戳之间的差值告诉我们代码执行了多少时间,使用相同的方式,我们可以测量其他替代代码方案的执行时间。

注意我们是如何多次执行代码的;在本例中,我们执行的次数由maxCount表示。因为代码的单次操作执行太快而很难准确地测量,所以我们需要多次执行代码以获取可衡量的值。至于执行次数有多频繁,这个数可以是成千上万,甚至上百万,这取决于被测代码的性质。通过反复试验,我们可以选择一个合理的值。

这些最佳实践技术,以及在这个过程中我们将学到的其他实践,将极大地提高我们的JavaScript开发水平。用浏览器提供的有限资源开发应用程序,再加上浏览器功能和兼容性问题的日益复杂,因此掌握完整和强大的技能是非常必要的。

相关文章
|
JavaScript
JS忍者秘籍中的定时器机制详解
前言 前段时间刚看完《JS忍者秘籍》,虽说是15年出版的,有些东西是过时了,但像对原型链、闭包、正则、定时器之类的机制却是不会过时的,里面很多东西都讲的很细,还是值得一读的,本文将对这本书中对定时器机制的部分进行详细的解析,如果喜欢的话可以点波赞/关注,支持一下,希望大家看完本文可以有所收获。 个人博客了解一下:obkoro1.com 准备 阅读本文之前,推荐先阅读Js 的事件循环(Event Loop)机制以及实例讲解这篇文章来理解背后发生的事情,本文对事件循环机制不会很仔细的讲解。 定时器解决的问题: 由于JS的单线程特性,定时器提供了一种跳出单线程限制的方法。
187 0
JS忍者秘籍中的定时器机制详解
|
前端开发 JavaScript 程序员
让JS代码Level提升代码质量的忍者秘籍(实用)
你准备好成为同事眼中深藏不露、高深莫测、阳光帅气的前端开发了吗? 那就开始吧!
207 0
|
JavaScript 前端开发 测试技术
《JavaScript忍者秘籍》——导读
Web应用程序将为用户提供丰富的用户界面体验,没有JavaScript,我们也就只能显示几张小图片。Web开发人员比以往任何时候都更需要熟练掌握能够为Web应用程序带来生命的语言。
958 0
|
JavaScript 前端开发 测试技术
《JavaScript忍者秘籍》——2.5 总结
我们研究了在代码执行时,如何使用日志记录来观察代码的行为,我们甚至实现了一个方便的方法,可以确保在现代和传统浏览器上都能够成功记录日志,不管它们之间有多少差异。
1358 0
|
前端开发 JavaScript 测试技术
《JavaScript忍者秘籍》——2.4 测试套件基础知识
内部的实现函数runTest(),在测试排队时从列中移除时进行调用。它用于检查当前套件目前是否没被暂停以及队列中是否有测试任务,一旦满足情况,将从队列中取出一个测试并尝试执行它。此外,测试组完成执行之后,runTest()会检查该套件目前是否暂停了,如果没暂停(这意味着,测试组中只有异步测试),runTest()将开始执行下一组测试。
1355 0
|
JavaScript 前端开发 测试技术
《JavaScript忍者秘籍》——2.2 测试用例生成
解构型测试用例(deconstructive test cases)——解构型测试用例,在消弱代码隔离问题时进行创建,以消除任何不恰当的问题。这有助于我们实现之前列出的三个特征。我们可能从一个完整的网站开始练习,但在消除额外的HTML标记、CSS和JavaScript之后,我们将看到一个能重现该问题的小用例场景。
1287 0
|
JavaScript 前端开发 开发者
《JavaScript忍者秘籍》——1.5 总结
JavaScript开发毋庸置疑是很具有挑战性的,但有一些勇敢者已经沿着这条曲折的道路走了下来,那就是JavaScript库的开发者。我们将提炼这些代码库中的知识,有效地提高我们的开发技能,并将这些技能提升到世界一流水平。
1502 0
下一篇
无影云桌面