rkm*_*max 28 javascript ecmascript-5 ecmascript-6
我正在节点中写一个"类"
// mymodule/index.js
function MyClass() {}
MyClass.prototype.method1 = function() {..}
Run Code Online (Sandbox Code Playgroud)
通常我做
module.exports = MyClass
Run Code Online (Sandbox Code Playgroud)
但我希望我的课程可用于两种语法
var MyClass = require('mymodule')
Run Code Online (Sandbox Code Playgroud)
和
import {MyClass} from 'mymodule'
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
Nne*_*Ude 12
对于编写兼容ES5和ES6的导出,Babel已经为您完成了这项工作.(正如您对问题的评论中所述.我只是澄清那些在对话中迷路的人.)
module.exports = MyClass
Run Code Online (Sandbox Code Playgroud)
将与工作都var MyClass = require('mymodule')
和import MyClass from 'mymodule
但是,要清楚,您询问的实际语法是:
import {MyClass} from 'mymodule'
Run Code Online (Sandbox Code Playgroud)
意味着不同的东西
import MyClass from 'mymodule'
Run Code Online (Sandbox Code Playgroud)
对于后者,您必须将其导出为:module.exports.MyClass = MyClass
,而对于ES5模块,则必须将其导出为var MyClass = require('mymodule').MyClass
两种方式都是正确的,但尝试在 es6 中像这样不带括号导入:
import MyClass from 'mymodule'
Run Code Online (Sandbox Code Playgroud)
否则你将不得不像这样导出你的函数:
module.exports.MyClass = MyClass
Run Code Online (Sandbox Code Playgroud)
然后像这样导入它:
import { MyClass } from 'mymodule'
Run Code Online (Sandbox Code Playgroud)