在第 1 章中,您使用基本 JavaScript 创建了一个 Node. Js 网络服务器。现在,我们将仔细研究该语言更高级的功能,以及如何有效地使用它们来创建全栈网络应用程序。
您有时会听到 ES. Next 这个术语来指代 JavaScript 的新版本。在本书中,我们使用 ES. Next 作为现代 JavaScript 及其概念的广义标签。大多数运行时环境已经实现了本书所涉及的功能。否则,您可以使用 Babel. Js 对其进行转译,创建向后兼容的 JavaScript,为旧版运行环境模拟新功能。
2.01 ES. Next 模块
ES. Next 模块允许您将代码分隔成不同文件,以提高维护性和可测试性。它们将一段逻辑封装为易于重用的代码,由于变量和函数仅限于模块的作用域,因此您可以在不同模块中使用相同的变量名,而不会发生冲突。(我们将在第 17 页 “声明变量 “中讨论作用域的概念)。
官方的 ES. Next 模块取代了各种非官方的模块格式,如 UMD 和 AMD。例如,您可以使用 require 来包含 Node. Js 服务器的 Express. Js 包[…]” 官方 ES. Next 模块取代了各种非官方模块格式,如 UMD 和 AMD,您可以使用 require 语句加载这些模块。例如,你在第 1 章中使用 require 将 Express. Js 包包含到 Node. Js 服务器代码中。相反,ES. Next 模块使用导出和导入语句从一个模块的范围中导出函数,并导入到其他地方使用。换句话说,模块允许你创建函数和变量,并将它们暴露在新的作用域中。
使用命名和默认导出
Next. Js 有两种导出:命名导出和默认导出。这些导出在以后导入时使用的语法略有不同。默认导出要求在导入时定义新的函数名。对于命名导出,重命名是可选的,并通过 as 语句完成。
使用命名导出而不是默认导出被认为是一种最佳做法,因为命名导出为模块的功能定义了一个清晰而独特的接口。当我们使用默认导出时,用户有可能以不同的名称导入相同的功能。我们将在第 3 章介绍的 TypeScript 建议,如果模块有一个明确的目的和一个单一的导出,就使用默认导出。相反,它建议使用 named[…]