在ES6中导出多个变量?

时间:2016-01-07 01:08:18

标签: javascript ecmascript-6 vue.js

我正在尝试在ES6中导出多个变量:

exports.js

var TestObject = Parse.Object.extend('TestObject')
var Post = Parse.Object.extend('Post')

export default TestObject
export Post

main.js:

import TestObject from '../store'
import Post from '../store'

var testObject = new TestObject() // use Post in the same way
testObject.save(json).then(object => {
  console.log('yay! it worked', object)
})

我知道只有一个默认值,所以我只在第一项中使用了default

但是,我收到此错误消息:

Module build failed: SyntaxError: /home/alex/node/my-project/src/store/index.js: Unexpected token (9:7)
   7 | 
   8 | export default TestObject
>  9 | export Post

也许我这样做的方式不对?

5 个答案:

答案 0 :(得分:43)

这不是有效的语法。你可以做到

export {Post}

甚至只是

export var Post = Parse.Object.extend('Post')

或将整个文件缩短为

export default Parse.Object.extend('TestObject')
export var Post = Parse.Object.extend('Post')

您的导入也不正确,您需要

import TestObject, {Post} from '../store'

如果您真的想要一个默认导出和一个单独的命名导出。如果需要,您也可以只创建两个命名导出并且没有默认值,例如

export var TestObject = Parse.Object.extend('TestObject'),
    Post = Parse.Object.extend('Post')

import {TestObject, Post} from '../store'

答案 1 :(得分:20)

您可以在ES6中导出多个这样的对象

var TestObject = Parse.Object.extend('TestObject')
var Post = Parse.Object.extend('Post')

export {
    TestObject,
    Post
}

然后,在导入时你会这样做:

import { TestObject, Post } from './your-file';

您可以在此处阅读有关importexport的所有内容。

答案 2 :(得分:0)

默认导出 导出{}

在导入时,导出的名称必须相同。

您也可以在导入时使用*。

答案 3 :(得分:0)

要导出多个变量,我们必须像这样从{}内部的文件中提取所有想要导出的内容-

     string url = $"test";
     webBrowser.Url = new Uri(url);

对于默认导出,我们可以单独编写-

webBrowser.ObjectForScripting = this;

在您的代码中,您可以进行以下更改-

exports.js

export { <var 1>, <var 2> , <var 3>, ... , <var n>};

main.js

export default <var name>;  // there can be only one deafault export; 

example

答案 4 :(得分:-1)

如果它符合您的使用案例,您可以将非默认导出设置为默认导出的属性。我发现它可以使代码更清晰。

const TestObject = Parse.Object.extend('TestObject');
TestObject.Post = Parse.Object.extend('Post');

export default TestObject;

然后,导入时只需导入默认值:

import TestObject from './your-file.js';

然后,你就这样使用它:

TestObject.Post({some, args});