在es6中导出/导入Json对象

时间:2016-01-12 10:26:25

标签: javascript json

我正在将一些ES5代码转换为ES6。

我在文件StatesComponent.js

中的某处有以下行
const STATES = require('../data/states.js');

我使用的是jspm而且它不支持require,因此我想使用ES6 import语法。

states.js文件包含以下内容:

exports.AU = [
    { value: 'australian-capital-territory', label: 'Australian Capital Territory', className: 'State-ACT' },
    { value: 'new-south-wales', label: 'New South Wales', className: 'State-NSW' },
    { value: 'victoria', label: 'Victoria', className: 'State-Vic' },

];

exports.US = [
    { value: 'AL', label: 'Alabama', disabled: true },
    { value: 'AK', label: 'Alaska' },
    { value: 'AS', label: 'American Samoa' },
];

STATES变量用作var options = STATES[this.state.country];

如何在states.js中更改json的格式,以便我可以`导入'它?

import STATES from '../data/states'

1 个答案:

答案 0 :(得分:28)

不确定您是否已经得到了答案,但可以将其导出为: -

export default {
  STATES: {
    'AU' : {...},
    'US' : {...}
  }
};

可以导入为: -

import STATES from 'states';

var STATES = {};
STATES.AU = {...};
STATES.US = {...};
export STATES;

可以导入为: -

import { STATES } from 'states';

请注意使用default的一个与不使用default的一个之间的区别。使用default,您可以导出任何javascript表达式,在导入期间,您可以使用任何标识符,它将默认为import whatever from 'states'; 表达式。 你也可以做到

whatever

default将获取我们分配给默认值的对象的值。

相反,当您不导出export表达式时,import {STATES} 会将其导出为对象的一部分,这就是您必须使用的原因

*

在这种情况下,您使用正确的文字名称进行导入,否则导入将无法理解您尝试导入的内容。另请注意,它使用object destructuring导入正确的值。

就像@AlexanderT所说,有一些方法可以导入为import/export,实际上有importexport的各种方法,但我希望我解释了如何导入的核心概念这个sendfile有效。