在多个子文件中使用从模块导入的类

时间:2018-12-14 15:31:23

标签: javascript ecmascript-6

我目前正在使用ecmascript 2015重写我的一个项目。 我有一个module.js文件,其中有两个类。我想在两个文件中使用这些类(index.php和page.php,这是index.php中包含的动态生成的页面)。

我的树文件如下:

 /..
    modules.js // Where I store my classes
    page.php // This also contains a <script> part in which I would like to use my classes
    index.php // Where I import my .js files
    script.js // Where I would also like to use my classes

我已经将我的类导入了index.php文件中,如下所示:

<script type="module" src="js/modules.js">
    import * from "./js/modules.js"
</script>
<script src="script.js"></script>

我的模块文件如下:

export { Blabla1 , Blabla2 };

class Blabla1 {
    constructor(......) {
        .....
  }

class Blabla2 {
    constructor(......) {
        .....
  }
}

问题是我无法初始化在script.js和page.php中导入的任何类并陷入困境:

ReferenceError: Blabla1 is not defined

如果有人对我的问题有任何猜想,我将不胜感激

2 个答案:

答案 0 :(得分:0)

如果要将类从one.js文件导出/导入到another.js文件,则应在下面使用此代码。

export class Person {
  static logme() {
    console.log('Hi');
  }
}

然后从另一个.js文件中调用它

import Person from './another.js';
console.log(Person.test());

答案 1 :(得分:0)

理想情况下,这应该可行:

<script type="module">
    import { Blabla1, Blabla2 } from './js/module.js';
    var bla1 = new Blabla1();
</script>`

export { Blabla1 , Blabla2 };

class Blabla1 {
    constructor() {
        console.log('In Blabla1');
  }
} // It's missing

class Blabla2 {
    constructor() {
        console.log('In Blabla2');
  }
}