【问题标题】:ES6 import statement benefitsES6 导入语句的好处
【发布时间】:2017-05-28 10:59:16
【问题描述】:

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

谢谢!

【问题讨论】:

    标签: javascript import ecmascript-6 export


    【解决方案1】:

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

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

    模块可以:

    1. 在项目之间轻松共享。
    2. 独立测试。
    3. 拥有自己的命名空间和范围,并且可以拥有私有变量。
    4. 为代码体提供清晰且定义明确的接口。
    5. 可与代码加载机制连接以加载代码片段。

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-12-15
      • 2016-06-25
      • 2016-11-20
      • 2019-08-22
      • 2016-12-11
      • 2021-02-05
      • 2015-08-27
      • 2019-04-13
      • 2017-09-04
      相关资源
      最近更新 更多