九、JavaScript——未来就是现在

到目前为止,在前几章中,我们重点讨论了如何在不同的 JavaScript 库中应用承诺的概念,以及如何在未来的项目中获得最大的优势。 然而,这并不全是关于 JavaScript 的。

虽然承诺是巨大的,而且它们的实现可以带来很多好处,但这并不是 JavaScript 的终结。 事实上,在接下来的几年里,JavaScript 能提供的东西比我们想象的还要多。 它是现代进步的语言,并日益受到欢迎。 JavaScript 还能为我们提供什么? 我们将在本章中尝试找出答案。

让我们从 ECMAScript 6 开始。

ECMAScript 6 (ECMA 262)

ECMAScript 语言规范已经是第六个版本了。 自 1997 年发布第一个版本以来,ECMAScript 已经成为世界上最广泛采用的通用编程语言之一。 它以其在 web 浏览器中嵌入自身以及使用服务器端和嵌入式应用的能力而闻名。

许多人认为第六版是 ECMAScript 自 1997 年问世以来最详细、覆盖面最广的一次更新。

在本章中,我们将考虑 ECMA 262 的第六版; 这是一个草案版本,旨在更好地支持大型应用、库创建,以及将 ECMAScript 用作其他语言的编译目标。

和谐:发电机

harmony:generators是将被表示为对象的第一类面包块,它将封装挂起的执行上下文(即函数激活)。 到目前为止,这些都在审查中,可以更改,所以我们只考虑这些,以获得有关它们的知识。

一些高水平的例子将有助于更好地理解在它得到批准后,和谐的形状将是什么。

由于这些都是未经批准的草案,我们将使用来自 ECMAScript 母公司网站的示例。

本节使用的参考代码可在http://wiki.ecmascript.org/doku.php?id=harmony:generators中找到。

斐波那契级数

Fibonacci 数的“无限”序列为:

Function* Fibonacci () {
    let [prev, curr] = [0, 1];
    For (;;) {
        [prev, curr] = [curr, prev + curr];
        yield curr;
    }
}

生成器可以在循环中迭代:

for (n of fibonacci()) {
    // truncate the sequence at 1000
    if (n > 1000)
        break;
    print(n);
}

生成器是迭代器,如下面的代码所示:

let seq = fibonacci();
print(seq.next()); // 1
print(seq.next()); // 2
print(seq.next()); // 3
print(seq.next()); // 5
print(seq.next()); // 8

前面的代码片段是非常高级的语法,它们很有可能会被修改。 发电机将是和谐的一个关键因素和显著的补充,但需要时间来充分实施它。

平均值堆栈

虽然 MEAN 堆栈不是一个新概念,但它为我们提供了 JavaScript 中一切的基础。 它为你提供了一个基于 JavaScript 的 web 服务器的形式 node . js,数据库 MongoDB 的形式,也有 JavaScript 语言为核心,Express.js node . js 的 web 应用框架,和 Angular.js 前端元素可以让你扩展 HTML 更先进和现代的方式。

这些概念已经存在一段时间了,但它们有超乎想象的发展潜力。 想象一个全面的金融应用或一个基于 MEAN 堆栈或控制行业的整个银行系统。 硬件将利用这个堆栈中的服务,但这将在不久的将来发生,虽然不会太迟,但仍然需要时间来完全实现堆栈。

我之所以这么说,是因为企业部门仍然不愿意采用或走向 MEAN 标准,原因是这些开源产品的成熟度和财务支持水平。 此外,他们必须升级现有的基础设施。 不管是什么原因,现代 web 应用都在大量使用这个堆栈来编写轻量级和可扩展的应用。 让我们将 MEAN 堆栈标记为 JavaScript 未来的第一项。

JavaScript 实时通信

另一个被称为 JavaScript 未来的强大特性是两个套接字之间的实时通信。 在 JavaScript 之前,套接字编程已经存在了很长时间,以至于每一种主要的编程语言都有使用套接字读写数据的版本,但对于 JavaScript,这是一种需要在这个阶段做大量工作的新概念。 有一些方法可以在 JavaScript 中实现实时套接字编程,但目前最成熟的方法是使用 socket . io。

它基本上实现了基于事件的双向实时通信,从而使两个实体之间的通信成为可能。 它支持各种平台,包括 web 浏览器、手持设备、移动设备和任何启用了通信功能的其他设备。 它的实现是相当容易和可靠的高质量和速度。

我们可以通过它实现什么? 有很多可能性,这取决于您如何在支持 Socket 的基础上进行尝试。 IO 必须提供。 在这个时间点上,你可以写为你的商业智能实时分析或市场预测或趋势识别、或者你可以用它来实时流媒体从地球的一个地方,与其他使用其二进制流函数,或者您可以使用它来监视你前提从远程位置。 所有这些实现现在都是可用的,这些想法可以通过巧妙地使用这些函数实现。

结论是 Socket。 IO 是您可以信赖的最健壮的实时通信库之一。 从目前的趋势来看,我们可以有把握地说,设备之间的实时通信将是 JavaScript 未来最大的优势之一。 这并不一定要通过 Socket.IO 实现; 任何有潜力的图书馆都将占据主导地位。 它是关于 JavaScript 在不久的将来如何给我们留下深刻印象的概念。

物联网

就在不久以前,硬件与设备和机器的接口还仅限于某些成熟和开发的编程语言,没有人考虑过 JavaScript 是否能够与这些成熟的语言站在同一条线上。 这是一种局限于 c++或 Java 或其他高级语言的现状,但现在已经不是这样了。

随着对 JavaScript 的关注越来越多,开发人员和工程师正在尝试在硬件接口中使用 JavaScript 的强大功能。 他们正在通过编写智能代码和利用已经在某种程度上使用与设备通信的库来克服 JavaScript 的问题。

其中一项工作被称为树莓派。 我们先来谈谈树莓派及其用途,然后再看看 JavaScript 是如何使用它的。

树莓派是一款简单的信用卡式电脑设计,学习编程方式非常简单有效。 它带有一块板,你可以在没有附加任何外围设备的情况下称之为计算机。 你必须安装上鼠标、键盘和屏幕才能让它生效。 它有一个安装在 SD 卡上的操作系统,可以进行实验。 这是便携式的,你可以将任何设备连接到它或使用它的另一个设备编程。 它具有一台计算机必须具备的所有基本元素,但以非常简单、便携和易于操作的方式。

它和 JavaScript 有什么关系呢? 现在,JavaScript 已经无处不在了,所以它的实现也已经开始了,用于 Raspberry Pi 的 Pijs.io。

就像你可以用任何其他语言编写树莓派,你也可以使用 JavaScript 编写手持电脑的应用。 这个 JavaScript 库允许您使用 JavaScript 与硬件进行交互,并根据需要对设备进行编程。 你可以在http://pijs.io/看到图书馆。

如前所述,硬件接口并不局限于树莓派; 任何其他的实现都必须做同样的事情。 这几行代码的核心是展示 JavaScript 变得多么强大,被多么广泛地接受。 现在,人们正在考虑为他们的设备编程,不管这些设备是属于他们的日常使用还是商业使用。 JavaScript 在计算机硬件接口方面的前景是非常光明的,并且发展迅速。

计算机动画和三维图形

1996 年,革命性的电影《玩具总动员》引入了计算机生成图像(CGI)的全新概念。 这部电影在动画和电脑绘图方面树立了新的标准。 这部电影的成功不仅仅是因为它的剧本,还因为它所使用的技术。

在当今时代,计算机动画领域已经从多个方面发展起来,并且仍在快速发展。 那么,JavaScript 和这些进步有什么关系呢? 现在,JavaScript 比以往任何时候都更容易通过网络在电脑动画和 3D 图形中发挥作用。

WebGL 是一个用于渲染 2D 和 3D 图像和对象的开源 JavaScript API。 WebGL 的强大之处在于它通过采用浏览器及其引擎的标准而扩展到几乎所有的浏览器。 它具有高度的适应性,可以在任何现代网络浏览器中使用,以渲染所需的图像。

借助 WebGL,现在可以编写无需额外插件即可运行的交互式尖端游戏。 这也将有助于在未来看到动画计算机建模与浏览器,而不是使用笨重、昂贵和笨重的软件。 它也将有助于可视化的信息。 所以,当你投资的其他股票价格上涨或下跌时,你可以看到股价的视觉影响。

到目前为止,WebGL 已经获得了行业中所有主要参与者的支持,包括苹果的 Safari; 微软的 IE 11 及其后续版本 Edge 浏览器; 谷歌用于 Chrome 浏览器; 火狐浏览器的 Mozilla。 另外,WebGL 是 Mozilla 的 Vladimir Vukićević的创意,他在 2011 年发布了最初的版本。

我们可以得出结论,JavaScript 种子种植在动画和 3 d 图形,并在不久的将来,这将不仅帮助 JavaScript 来获得可信度,但也会减轻许多开发人员和工程师需要学习新的语言每次他们面临一个限制在他们当前的语言包。 有了统一的语言,输出的应用将更加有趣。

NoSQL 数据库

曾经有一段时间,RDBMS 对所有开发人员来说都是必须的,尤其是那些从事数据库驱动应用的开发人员。 期望您必须知道什么是主键、什么是连接、如何规范化数据库以及什么是实体关系图。 然而,这种场景正在慢慢消失,NoSQL 的新概念正在当今世界出现,大量数据驱动的应用仍在发挥作用。

在我们继续之前,让我们谈谈为什么工程师们关注非 rdbms 技术。 原因很简单。 数据驱动的应用正在以惊人的方式发展,它们每天每小时都在世界各地生成 tb 级的数据。 处理这样的数据并得到想要的结果不是一件容易的事情。 数据库管理员(dba)写查询和执行它获取的数据分布式存储库的数据库,他们必须等几个小时才能知道结果是印在他们的屏幕或略有误差,将运营商摧毁了他们所有的努力。 这是因为 RDBMS 的设计方式,但在今天的现代世界中,这种延迟和计算时间会让你损失一大笔钱和声誉。

那么另一个选择是什么呢? NoSQL 数据库! 在本章的前一节中,我们已经看到 MongoDB 在 MEAN 栈中扮演了一个关键角色。 然而,值得在这里多给 MongoDB 几行代码,因为它是我们未来发展 JavaScript 的候选者。

MongoDB 是什么? 它是一个面向文档的 NoSQL 数据库,具有与 JSON(比如文档)的跨平台适应性。 直到 2015 年 2 月,它是世界上第四大最流行的 DBMS,被认为是世界上最流行的数据存储。

为什么我们把 MongoDB 列为未来 JavaScript 发展的候选项目? 因为它是基于 JavaScript 的,你可以在它的控制台中用纯 JavaScript 编写脚本。 这使得它成为一种基于 JavaScript 的适应性很强的 DB 技术。 它的发展方式,不仅会过时当前的 RDBMS 场景,而且当与其余的 MEAN 堆栈、硬件接口、Web 或 Socket.IO 结合时,也会创造奇迹。

在任何情况下,MongoDB 都将帮助其余的应用在未来发展,并将现有的 RDBMS 转变为更容易访问和更快的响应引擎。

小结

在这一章中,我们了解到 JavaScript 是一个游戏规则改变者,它有一个光明的未来。 JavaScript 具有很大的趋势和适应性,这将使它在计算机科学的几乎每个领域都有一个新的使用水平。 可能性是无限的,JavaScript 的天空是无限的。 在不久的将来,由于其适应性、可接受性以及成千上万的开发人员和软件巨头的贡献,JavaScript 将主导所有其他编程语言。

这样,我们就到了这本书的结尾。

让我们回顾一下在这本书中学到的东西。 一开始,我们深入研究了 JavaScript 是什么,从哪里开始的,JavaScript 的结构是什么,不同的浏览器如何使用它。 我们还看到了不同的编程模型,其中一个是 JavaScript 正在使用的模型。

然后,我们的旅程转向这本书的核心,承诺。 我们学到了很多关于承诺的基本知识,这些知识将我们带向这个概念的高级用法。 然后我们看到了不同的技术,并对代码进行了抽样,以消除任何歧义。

所以,总而言之,这本书不仅仅是关于 JavaScript 的承诺,它还对 JavaScript 和承诺的历史、实现和用法有一个坚实的概述。 有了这本书,你不仅可以成为一个承诺的大师,而且还可以保持一个独特的理解水平,从而以更光明和更多的方式实现这个概念。

学习快乐!