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

后端 未结 3 970
傲寒
傲寒 2021-02-02 07:36

I\'m writing a \"class\" in node

// mymodule/index.js

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

usually I do

相关标签:
3条回答
  • 2021-02-02 08:08

    Both ways are correct, but try to import in es6 like this without the brackets:

    import MyClass from 'mymodule'
    

    Otherwise you would have to export your function like this:

    module.exports.MyClass = MyClass
    

    and than import it like this:

    import { MyClass } from 'mymodule'
    
    0 讨论(0)
  • 2021-02-02 08:26

    As far as writing an export that is compatible for both ES5 and ES6, Babel already takes care of that for you. (As communicated in the comments to your question. I'm only clarifying for those who got lost in the dialog.)

    module.exports = MyClass
    

    will work with both var MyClass = require('mymodule') and import MyClass from 'mymodule

    However, to be clear, the actual syntax you asked about:

    import {MyClass} from 'mymodule'
    

    means something different from

    import MyClass from 'mymodule'
    

    For the latter, you would have to export it as: module.exports.MyClass = MyClass, and for ES5 modules it would have to required as var MyClass = require('mymodule').MyClass

    0 讨论(0)
  • 2021-02-02 08:31

    From the comments, I understand you are trying to run your ES6 frontend code in some mocha unit tests in node. Yes, you can't do that until node support ES6 modules. If I were you, I would use systemjs to load code for those mocha tests. Mocha supports promises, so it should be fairly painless to load any files before tests.

    Writing syntax for both will just create more problems for you.

    0 讨论(0)
提交回复
热议问题