了解关于 Angular2 Web 应用程序的 ES6 模块

Understanding ES6 modules with regards to Angular2 web application

以下几点解释了我对 ES6 模块在 Angular2 web 应用程序开发方面的理解和问题。

  1. 据我了解,模块(export/import)已经在ES6中被引入,并且目前的浏览器支持导出/导入语法, 但它们不支持模块加载。

  2. 因为目前的浏览器不支持模块加载,要么我们使用像systemJS这样的模块加载器来加载 通过进行某种 AJAX 调用来模块,或者我们必须使用像 webpack 这样的模块打包器,它将所有模块打包到一个 JS 文件中。

请告诉我第 1 点和第 2 点是否正确。

  1. 我观察到 tsconfig.json 中的 "target" 属性 大部分时间是 "es5" ,是否应该始终将其设置为 "es5"到 Angular 2 个 Web 应用程序,或者可以根据我们使用的是 systemJS 还是 webpack
  2. 来修改它
  1. 差不多
  2. 是的,尽管模块系统之间存在差异。
    幸运的是,typescript 允许您以单一格式编写,并将根据您传递给它的 module 编译器选项将其编译为正确的系统。
  3. 我不确定你从哪里得到的统计数据表明 target 通常是 es5,这取决于应用程序打算 运行 和哪个 es6 您计划使用的功能。
    例如 Promiseconst/let、箭头函数和许多其他 es6 特性已经在大多数最新的浏览器中实现。
    您可以使用兼容性 table(您可以在 MDN 中找到每个功能)检查您计划使用的每个功能,并自行确定是否可以定位 es6
    如果你不能但仍然想,那么你可以尝试使用 babel.