js教学源码 手机autojs菜鸟教程

在如今种类众多的编程语言中,JavaScript是一个非常特殊的存在 。如果从语言设计的角度来分析,JavaScript应该被归类为基于原型的、解释型的高级编程语言 。也就是说,尽管JavaScript在语法上与Java、C/C++非常相似,但从编程方法的应用上来说,它受Self和Scheme这类语言的影响多一些,因此在具体使用方式上更接近后者 。除此之外,JavaScript还是一门支持多种编程范式的语言 。它支持面向对象编程、指令式编程以及函数式编程,因而具有极为灵活的表达能力 。
而在适用领域方面,JavaScript从最初的纯浏览器端脚本语言,逐步发展成了如今这样一门可在Web浏览器端、移动设备端、桌面应用端以及服务器端通用的强大编程语言 。
JavaScript的适用领域如前所述,如果想判断一门编程语言是否适用于某个领域,很大程度上要去分析该领域是否能发挥出该语言的特性优势 。既然我们已经对JavaScript的语言特性有了一定的了解,那么接下来就可以对这门语言的适用领域做一些分析了 。这些分析将有助于初学者明确JavaScript适合用来解决什么问题,不适合用来解决什么问题,以便厘清自己的学习需求和努力方向 。以下是一些适合用JavaScript来解决问题的领域 。

  • Web浏览器端的应用 。JavaScript在Web浏览器端的优势是最显而易见且无可争议的,毕竟这门语言最初就是为解决这一领域的问题而设计的 。正是由于JavaScript赋予了Web页面在浏览器端强大的用户交互能力,我们才迎来了电子商务、云端办公、社交网络等各种Web应用蓬勃发展的Web 2.0时代 。
  • 轻量级的服务器应用 。Node.js运行环境的出现让JavaScript的适用领域扩展到了Web浏览器之外,尤其是在服务器端的应用 。与ASP、PHP这些传统的服务器端脚本语言相比,JavaScript支持事件驱动、异步编程的特性使它在实现轻量级数据密集型的服务器应用方面有一些高性能、高负载的优势 。当然在另一方面,单线程执行和非阻塞I/O的特性也让JavaScript在资源利用率和安全性方面受到了一些限制,使其不适合被用来实现需要大规模并行计算,或对数据安全有高要求的应用 。
  • 轻量级的桌面应用 。Electron框架的出现让JavaScript可以被用来实现一些适用于事件驱动、异步编程、非阻塞型I/O等特性的轻量级桌面应用 。目前流行的VSCode、Atom等代码编辑器都是基于这一框架的JavaScript应用 。但由于其单线程执行的特性使JavaScript无法充分利用多核处理器的计算资源,因而不适合用来实现需要大规模并行计算的桌面应用 。
  • 富媒体式的应用 。在HTML5出现之前,市面上用于创作富媒体的应用程序(如Flash)大多数采用的是ActionScript脚本 。由于它也是一种基于ECMAScript标准的脚本语言,所以也可视它为JavaScript的一种应用 。当然,目前这种形式的应用正在逐渐被人们遗忘,毕竟HTML5为我们提供了更好的选择 。
除此之外,JavaScript有时候还会被用来实现一些Web浏览器的扩展与插件、移动端的一些应用,甚至一些用于系统管理的命令行脚本 。总而言之,虽然目前JavaScript已经发展成了一门无处不在的全能型编程语言,但还是得注意语言特性的发挥,能发挥出其特性优势的领域才是它真正适用的领域 。反之,不分场合地强行使用这门语言只会弄巧成拙、事倍功半 。
选哪一本书做教程?
JavaScript全栈开发
js教学源码 手机autojs菜鸟教程

文章插图
js教学源码 手机autojs菜鸟教程

文章插图
这是一本专注于JavaScript本身及其运行环境的书,而JavaScript语言主要是一门面向Web应用程序开发领域的编程语言,即使是用于开发桌面应用程序的Electron框架,它在本质上也可以被视为一个针对Google Chromium浏览器(Chrome浏览器的开源版本)的扩展,它的用户界面布局也主要依靠HTML、CSS及其扩展技术来完成 。所以在阅读本书之前,希望读者已经掌握了与HTML和CSS相关的基础知识 。
由于本书只专注于讨论如何使用JavaScript语言与其运行环境提供的接口,因此不打算过多地涉及时下五花八门的开发框架 。这样做主要是基于两个方面的考虑 。第一,介绍JavaScript语言及其运行环境本身就足以撑起一本结构完整、内容丰富的书了 。如果再加上众多开发框架的介绍,就会淡化这本书的主题,并使其臃肿不堪 。第二,JavaScript社区的开发框架不仅五花八门,选择众多,而且更新换代极为迅速 。这意味着,即使这本书介绍了客户端的React框架、服务端的Express框架、桌面端的Electron框架,也很有可能到这本书写完并最终出版之时,开发者已经有了更好的选择 。正所谓“授之以鱼不如授之以渔”,读者真正应该掌握的是快速学习新框架的能力,这就需要读者了解这些框架的设计思路,理解为什么决定开放那些接口给用户,以及为什么要对用户隐藏那些实现,从而习得开发框架的能力 。换句话说,虽然不必重复发明轮子,但一个优秀的工程师或设计师应该了解轮子是如何被发明的,这样才能清楚用什么样的轮子构建什么样的车 。