通过模块加载和类继承将ES6转换为ES5

氧化物246

我正在尝试找到最佳/可行的解决方案,以将我的ECMA Script 6代码移植到ES5。我想使用模块加载器并利用继承。我到目前为止最接近的是将Babel 6与es2015预设和transform-es2015-modules-systemjs插件一起使用。这是我的.babelrc文件:

{
    "presets": ["es2015"],
    "plugins": ["transform-es2015-modules-systemjs"]
}

我的文件结构如下:

- dist
    (transpiled files in the same structure as the src folder)
- src
    - classes
        - Point.js
        - ColorPoint.js
    app.js
index.html

内容app.js如下:

import ColorPoint from 'classes/ColorPoint.js';

let cp = new ColorPoint(25, 8, 'green');
console.log(cp.toString()); // '(25, 8) in green'

的定义Point.js如下所示:

export default class Point {

的定义ColorPoint.js如下所示:

import Point from 'classes/Point.js';
export default class ColorPoint extends Point {

为了完整起见,的重要部分index.html如下所示:

<script src="node_modules/systemjs/dist/system.js"></script>
<script>
    System.config({
        baseURL: 'dist'
    });

    System.import('app.js');
</script>

我正在使用以下命令将整个src文件夹转换为dist文件夹:

babel src -d dist

问题是Babel在转译ColorPoint.js文件的顶部添加了一行,这会在运行时破坏System.js。错误是:

Uncaught Error: Module http://localhost/es6-tutorial/dist/classes/ColorPoint.js interpreted as global module format, but called System.register.

但是,当我删除此文件顶部的这一行时,它将再次起作用:

function _typeof(obj) { return obj && typeof Symbol !== "undefined" && obj.constructor === Symbol ? "symbol" : typeof obj; }

我猜这可能是编译器中的错误。我希望从之前成功实现继承和模块加载的人那里获得一些指导。或者,可以为我指出一个当前可以运行的示例。

氧化物246

多亏肯德里克·伯森(Kendrick Burson)使我走上了正轨,我才得以解决。我需要做的就是更改System.js配置中的格式。所以我index.html现在看起来像这样:

<script src="node_modules/systemjs/dist/system.js"></script>
<script>
    System.config({
        baseURL: 'dist',
        meta: {
            'classes/*': {
                format: 'register'
            }
        }
    });

    System.import('app.js');
</script>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何通过 Babel、Shim 和 Polyfill 将 Javascript 从 ES6 转换为 ES5

来自分类Dev

Webpack无法将ES6转换为ES5

来自分类Dev

无法将此ES6转换为ES5(包括扩展语法)

来自分类Dev

在运行时将ES5代码转换为ES6

来自分类Dev

React-native将getInitialState(ES5)转换为构造函数(ES6)“ ListView”

来自分类Dev

将 ES6 箭头函数转换为 ES5 函数 JavaScript

来自分类Dev

手动将 es6 箭头函数转换为 es5?

来自分类Dev

如何将ES6转换为ES5而不会在浏览器中大量生产?

来自分类Dev

配置一个Typescript项目以使用Bable从ES6转换为ES5

来自分类Dev

如何在 Angular App 的运行时将 ES6 代码转换为 ES5 代码

来自分类Dev

在将React模块转换为ES6类时如何解决`this`

来自分类Dev

ES6模块和继承

来自分类Dev

将旧的 JavaScript 代码转换为 ES6 模块

来自分类Dev

在ES5模块中支持ES6导入

来自分类Dev

无需转译器即可将ES6 JavaScript转换为ES5

来自分类Dev

将函数转换为es6类

来自分类Dev

将 javascript Winston 工厂类转换为 ES6

来自分类Dev

如何动态扩展 ES5 和 ES6 类

来自分类Dev

仅在开发模块加载程序版本中提供ES6转换,es6-module-loader错误

来自分类Dev

使用es5和es6将输入注入组件构造函数

来自分类Dev

使用es5和es6将输入注入组件构造函数

来自分类Dev

如何使用 babel-loader 将 node_module 中的一个特定文件/文件夹从 es6 转换为 es5?

来自分类Dev

ES5与ES6的承诺

来自分类Dev

通过导入ES6模块来加载和使用旧版JS模块(例如IIFE)

来自分类Dev

Babel'protoToAssign'转换器和ES6类继承

来自分类Dev

将Node.js文件转换为ES5

来自分类Dev

将异步/等待功能转换为等效的ES5

来自分类Dev

使用Webpack将TypeScript转换为es5

来自分类Dev

将具有 addEventListener 和 Parameter 的箭头函数转换为常规 ES5 函数

Related 相关文章

  1. 1

    如何通过 Babel、Shim 和 Polyfill 将 Javascript 从 ES6 转换为 ES5

  2. 2

    Webpack无法将ES6转换为ES5

  3. 3

    无法将此ES6转换为ES5(包括扩展语法)

  4. 4

    在运行时将ES5代码转换为ES6

  5. 5

    React-native将getInitialState(ES5)转换为构造函数(ES6)“ ListView”

  6. 6

    将 ES6 箭头函数转换为 ES5 函数 JavaScript

  7. 7

    手动将 es6 箭头函数转换为 es5?

  8. 8

    如何将ES6转换为ES5而不会在浏览器中大量生产?

  9. 9

    配置一个Typescript项目以使用Bable从ES6转换为ES5

  10. 10

    如何在 Angular App 的运行时将 ES6 代码转换为 ES5 代码

  11. 11

    在将React模块转换为ES6类时如何解决`this`

  12. 12

    ES6模块和继承

  13. 13

    将旧的 JavaScript 代码转换为 ES6 模块

  14. 14

    在ES5模块中支持ES6导入

  15. 15

    无需转译器即可将ES6 JavaScript转换为ES5

  16. 16

    将函数转换为es6类

  17. 17

    将 javascript Winston 工厂类转换为 ES6

  18. 18

    如何动态扩展 ES5 和 ES6 类

  19. 19

    仅在开发模块加载程序版本中提供ES6转换,es6-module-loader错误

  20. 20

    使用es5和es6将输入注入组件构造函数

  21. 21

    使用es5和es6将输入注入组件构造函数

  22. 22

    如何使用 babel-loader 将 node_module 中的一个特定文件/文件夹从 es6 转换为 es5?

  23. 23

    ES5与ES6的承诺

  24. 24

    通过导入ES6模块来加载和使用旧版JS模块(例如IIFE)

  25. 25

    Babel'protoToAssign'转换器和ES6类继承

  26. 26

    将Node.js文件转换为ES5

  27. 27

    将异步/等待功能转换为等效的ES5

  28. 28

    使用Webpack将TypeScript转换为es5

  29. 29

    将具有 addEventListener 和 Parameter 的箭头函数转换为常规 ES5 函数

热门标签

归档