javascript - ES6 导入语句的好处

标签 javascript import ecmascript-6 export

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

谢谢!

最佳答案

Why should we export modules and then import it in another JS file? What benefit do we get doing this?

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

模块可以:

  1. 在项目之间轻松共享。
  2. 接受独立测试。
  3. 有自己的命名空间和范围,可以有私有(private)变量。
  4. 为代码主体提供清晰明确的界面。
  5. 可以与代码加载机制连接,用于加载代码段。

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

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

If I were to work on ES5 how would I do this export and import?

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

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

这里有一篇关于 Why Modules 的有用文章有关该主题的更多信息?

关于javascript - ES6 导入语句的好处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41628382/

相关文章:

javascript - 允许计算机按字母出现顺序识别字母的文本框

javascript - MAPBOX - 如何在数据驱动样式中使用 GeoJSON 的最小和最大值特征

go - 如何从相对本地文件夹导入 "include"意义上的 .go 文件

javascript - 如何在回调中访问类的 this ?

javascript - 如何在绑定(bind)中仅运行一次附加到 Angular Controller 的功能

javascript - 单击按钮开始的 SVG 路径动画

python - 为什么不能在 Python 中重新导入?

database - 将多个 (csv) 文件导入 Access 数据库的任何方式

javascript - 尽管预设了 ES2015,Webpack 仍输出 ES6 代码

javascript - 为什么 babel 将导入的函数调用重写为 (0, fn)(...) ?