ES6 导入语句的好处

Jav*_*ice 4 javascript import export ecmascript-6

关于 ES6 导入的非常基本的问题。为什么要导出模块,然后再导入到另一个JS文件中?我们这样做有什么好处?在不进行导出和导入的情况下,还有哪些其他方法(即使它很粗糙)来实现这一目标?换句话说,如果我要在 ES5 上工作,我将如何进行导出和导入?

谢谢!

jfr*_*d00 5

为什么要导出模块,然后再导入到另一个JS文件中?我们这样做有什么好处?

模块的全部意义在于为开发人员提供一种方便、干净和简单的方式来组织他们的代码到可重用或可共享的模块中。因此,使用模块的重点是以模块化方式开发代码。

模块可以:

  1. 在项目之间轻松共享。
  2. 进行独立测试。
  3. 有自己的命名空间和作用域,可以有私有变量。
  4. 为代码体提供清晰且定义清晰的接口。
  5. 可以连接一个代码加载机制来加载代码片段。

虽然所有这些都可以在没有语言定义的结构的情况下完成,但人们可能会有很多不同的方式来实现,而很少有人会为了这些好处来构建他们的代码。

通过 NPM 提供数千个模块的 node.js 开发可以非常清楚地看到这些好处。如果没有每个人都订阅的标准模块设计,就很难共享大量的代码片段,这些代码片段都做不同的事情。ES6 模块系统是对这种机制进行标准化的尝试。

如果我要在 ES5 上工作,我将如何进行导出和导入?

您必须找到要采用的 3rd 方模块系统(在 ES6 之前的日子里有很多,例如 AMD 或 CommonJS),或者构建自己的或不使用并且可能会放弃上述一些好处。node.js 模块系统就是这样一种在 Javascript 语言标准之外设计的系统。因为它内置于 node.js 并且是 node.js 项目加载多个源文件的主要机制,所以它成为 node.js 开发的事实上的标准。

或者,您现在可以使用像 Babel 这样的转译器,它可以让您在 ES6 中编写代码,然后他们会为您将其转换为与 ES5 兼容的代码。您向适合构建过程的代码添加一个“构建”步骤,有点像编译另一种语言(除非您进行的是转译而不是编译),并且您可以获得在 ES6 中编写和调试的优势,但您的代码保持兼容性使用 ES5 运行时引擎(例如旧浏览器),只有一些限制。

这是一篇关于为什么使用模块的有用文章,以获取有关该主题的更多信息?