ES6从对象中导出所有值
说我有一个模块( ./my-module.js
)有一个对象,应该是它的返回值:
let values = { a: 1, b: 2, c: 3 } // "export values" results in SyntaxError: Unexpected token
所以我可以导入他们,如:
import {a} from './my-module' // a === 1 import * as myModule from './my-module' // myModule.a === 1
我发现的唯一方法是对输出进行硬编码:
export let a = values.a export let b = values.b export let c = values.c // or: export let {a, b, c} = values
这不是dynamic的。
是否可以导出一个对象的所有值?
似乎并不如此。 从ECMAScript 6模块引用:最后的语法 :
您可能想知道 – 为什么我们需要命名导出,如果我们可以简单地默认导出对象(如CommonJS)? 答案是,你不能通过对象实施一个静态结构,并失去所有相关的优点(在下一节中描述)。
我不能真正推荐这个解决scheme ,但它确实有效。 不是导出一个对象,而是使用命名的导出每个成员。 在另一个文件中,将第一个模块的命名导出导入到一个对象中,并将该对象导出为默认值。 也可以export * from './file1';
使用export * from './file1';
第一个模块中导出所有命名的export * from './file1';
值/ value.js
let a = 1; let b = 2; let c = 3; export {a, b, c};
值/ index.js
import * as values from './values'; export default values; export * from './values';
index.js
import values, {a} from './values'; console.log(values, a); // {a: 1, b: 2, c: 3} 1
我只是需要这样做的configuration文件。
var config = { x: "CHANGE_ME", y: "CHANGE_ME", z: "CHANGE_ME" } export default config;
你可以这样做
import { default as config } from "./config"; console.log(config.x); // CHANGE_ME
这是使用Typescript记住你。
尝试这个丑陋但可行的解决scheme:
// use CommonJS to export all keys module.exports = { a: 1, b: 2, c: 3 }; // import by key import { a, b, c } from 'commonjs-style-module'; console.log(a, b, c);
export const a = 1; export const b = 2; export const c = 3;
这将在今天巴贝尔工作中发挥作用,并且只要ES2016模块实际登陆浏览器,就应该利用ES2016模块的所有优点。
您还可以添加export default {a, b, c};
这将允许你导入所有的值作为一个对象没有* as
,即import myModule from 'my-module';
资料来源: