关于 ES6 导入的非常基本的问题。为什么我们要导出模块,然后在另一个 JS 文件中导入它?我们这样做有什么好处?在不进行导出和导入的情况下,还有哪些其他方法(即使它是粗略的)来完成此操作?换句话说,如果我要在 ES5 上工作,我将如何进行导出和导入?
谢谢!
最佳答案
Why should we export modules and then import it in another JS file? What benefit do we get doing this?
模块的全部意义在于为开发人员提供一种方便、干净和简单的方式来将他们的代码组织成可重用或可共享的模块。因此,使用模块的目的是以模块化方式开发代码。
模块可以:
- 在项目之间轻松共享。
- 接受独立测试。
- 有自己的命名空间和范围,可以有私有(private)变量。
- 为代码主体提供清晰明确的界面。
- 可以与代码加载机制连接,用于加载代码段。
虽然所有这些都可以在没有语言定义的结构的情况下完成,但人们可能会采用多种不同的方式来实现,而很少有人会为了这些好处而构建他们的代码。
对于通过 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/