繁体   English   中英

如何执行与ES5和ES6兼容的导出?

[英]How do I perform an export that is compatible with ES5 and ES6?

我正在节点中写一个“类”

// mymodule/index.js

function MyClass() {}
MyClass.prototype.method1 = function() {..}

通常我做

module.exports = MyClass

但我希望我的课程可用于两种语法

var MyClass = require('mymodule')

import {MyClass} from 'mymodule'

这是正确的方法吗?

对于编写兼容ES5和ES6的导出,Babel已经为您完成了这项工作。 (正如您对问题的评论中所述。我只是澄清那些在对话中迷路的人。)

module.exports = MyClass

将使用var MyClass = require('mymodule')import MyClass from 'mymodule

但是,要清楚,您询问的实际语法是:

import {MyClass} from 'mymodule'

意味着不同的东西

import MyClass from 'mymodule'

对于后者,您必须将其导出为: module.exports.MyClass = MyClass ,对于ES5模块,必须将其作为var MyClass = require('mymodule').MyClass

两种方式都是正确的,但尝试在没有括号的情况下导入es6这样:

import MyClass from 'mymodule'

否则你必须像这样导出你的函数:

module.exports.MyClass = MyClass

而不是像这样导入:

import { MyClass } from 'mymodule'

从评论中,我了解到您正在尝试在节点中的某些mocha单元测试中运行ES6前端代码。 是的,在节点支持ES6模块之前,您无法做到这一点。 如果我是你,我会使用systemjs为那些mocha测试加载代码。 Mocha支持promises,因此在测试之前加载任何文件应该相当轻松。

为两者编写语法只会为您创造更多问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM