在ES6中定义后导出类

vau*_*han 3 javascript ecmascript-6

// test.js
class Test

export Test
Run Code Online (Sandbox Code Playgroud)
// index.js
import {Test} from './test'
Run Code Online (Sandbox Code Playgroud)

这会导致语法错误Unexpected token.导出预定义类的正确方法是什么?


编辑:要求类定义与导出分开.

vau*_*han 8

正确的做法是使用export {Test}.


Tha*_*you 7

详细说明

export {A, B};
Run Code Online (Sandbox Code Playgroud)

是相同的

// old style
exports.A = A;
exports.B = B;
Run Code Online (Sandbox Code Playgroud)

这需要一个import

import {A,B} from "./somefile";
Run Code Online (Sandbox Code Playgroud)

哪个是一样的

// old style
var A = require("./somefile").A;
var B = require("./somefile").B;
Run Code Online (Sandbox Code Playgroud)

但是,你也可以使用 export default

class Test {
  constructor() {
    console.log("it's works");
  }
}

export default Test;
Run Code Online (Sandbox Code Playgroud)

哪个是一样的

// old style
exports["default"] = Test;
module.exports = exports["default"];
Run Code Online (Sandbox Code Playgroud)

然后导入它就像

import Test from "./test";
new Test();
// "it works!";
Run Code Online (Sandbox Code Playgroud)

哪个是一样的

// old style
var Test = require("./test");
new Test();
// "it works!";
Run Code Online (Sandbox Code Playgroud)