【发布时间】:2017-05-28 10:59:16
【问题描述】:
关于 ES6 导入的非常基本的问题。为什么要导出模块,然后导入另一个 JS 文件?我们这样做有什么好处?在不进行进出口的情况下,还有哪些其他方法(即使是粗略的)可以做到这一点?换句话说,如果我要在 ES5 上工作,我将如何进行此导出和导入?
谢谢!
【问题讨论】:
标签: javascript import ecmascript-6 export
关于 ES6 导入的非常基本的问题。为什么要导出模块,然后导入另一个 JS 文件?我们这样做有什么好处?在不进行进出口的情况下,还有哪些其他方法(即使是粗略的)可以做到这一点?换句话说,如果我要在 ES5 上工作,我将如何进行此导出和导入?
谢谢!
【问题讨论】:
标签: javascript import ecmascript-6 export
为什么要导出模块,然后导入另一个 JS 文件?这样做有什么好处?
模块的全部意义在于为开发人员提供一种方便、干净和简单的方法,将他们的代码组织成可重用或可共享的模块。因此,使用模块的目的是以模块化的方式开发代码。
模块可以:
虽然所有这一切都可以在没有语言定义的结构的情况下完成,但人们可能会采用多种不同的方式来完成这些工作,而为这些好处构建代码的人会少得多。
在 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 的有用文章以获取有关该主题的更多信息?
【讨论】: