为什么会有不同的方法在JavaScript中导入模块?

问题描述 投票:3回答:1

我不确定在以下情况下导入JavaScript模块之间的区别:

  • CommonJS
  • ES5
  • ES6
  • NodeJS
  • 打字稿

为什么有这么多种导入javascript模块的方法?在不同的实现中,“模块”的定义是否有所不同?所有人都在做同一件事,但是语法不同吗?

javascript node.js typescript commonjs
1个回答
8
投票

ES5及更早版本中没有模块。由于当时JavaScript中没有标准的模块系统,因此创建了各种模块系统(CommonJS,AMD以及Node.js和TypeScript中的类似CommonJS的系统),但这是一件非常有用的事情。因此,工具和工具构建者满足了需求。

ES2015(又名“ ES6”)为JavaScript中的模块创建了标准语法,现已被所有现代浏览器,Node.js和TypeScript所采用。该标准语法将模块标识符的语义留给主机环境使用,因此Web社区的领导者必须就如何在浏览器中进行操作达成共识(而Node.js必须弄清楚如何在Node.js中做到这一点)。等),因此在ES2015发布与您可以原生使用该语法之间存在一些延迟(尽管Webpack,Rollup等已处理了该语法)。

[在某些情况下,ES2015的静态语法无法完全完成工作,因此import() (dynamic import) proposal在某些环境中已经受支持,并且将在ES2020中使用。

© www.soinside.com 2019 - 2024. All rights reserved.