Javascript 是否在ES6中导出多个变量?
我试图在ES6中导出多个变量: exports.jsJavascript 是否在ES6中导出多个变量?,javascript,ecmascript-6,vue.js,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
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
也许我做得不对?在ES6中可以像这样导出多个对象
var TestObject = Parse.Object.extend('TestObject')
var Post = Parse.Object.extend('Post')
export {
TestObject,
Post
}
然后,在导入时,您可以这样做:
import { TestObject, Post } from './your-file';
您可以在此处阅读所有关于和的内容。这是无效的语法。你能行
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');
export var Post = Parse.Object.extend('Post');
或
进口
import { TestObject, Post } from '../store'
如果它适合您的用例,您可以将非默认导出设置为默认导出的属性。我发现它有助于编写更清晰的代码
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});
导出默认值
导出{}
导入时,导出的名称必须相同
您也可以在导入时使用*。为了导出多个变量,我们必须像这样从{}内的文件中获取想要导出的所有内容-
export { <var 1>, <var 2> , <var 3>, ... , <var n>};
main.js
export { Post };
import { Post } from '<exports file>';
从“”导入{Post};
这只是一个猜测,但您是否尝试过在第一行
export
末尾添加分号?@Pointy我尝试过。同样的错误。刚才的编辑使我的答案无效。在ES6中,导出时不给它一个密钥名是有效的。哦,我明白了。所以不再需要default
关键字了?@mariotake是的,我什么都没有,不知道为什么接受了编辑。更正@alexchenco,你改为对导入的文件进行解构。我很好奇,export default
和export var
有什么区别?默认导出是从“/module”导入foo时得到的导出,如果使用export var SomeThing
则需要按名称导入,例如从“/module”导入{SomeThing}代码>默认值将成为您导入的项目,而无需对导入的对象进行结构化处理。因此,唯一的区别是使用导出默认值的对象没有花括号,而使用“export var”的对象需要花括号?两者在导入时都被命名为某物:foo
,something
@alexchenco-Yup,主要区别是foo
可以被命名为任何东西,并且总是会得到默认值,但是TestObject
需要匹配导出的名称。如果您想在导入它的模块中为它指定一个不同的名称,您必须从
执行导入{TestObject as SomeOtherName}import foo from
是import{default as foo}from
export { Post };
import { Post } from '<exports file>';