如何使用ES6模块语法导入属性(破坏)?

时间:2015-08-20 17:30:01

标签: javascript ecmascript-6

import utilityRemove from 'lodash/array/remove';
import utilityAssign from 'lodash/object/assign';
import utilityRandom from 'lodash/number/random';
import utilityFind from 'lodash/collection/find';
import utilityWhere from 'lodash/collection/where';

let util;

util = {};

util.remove = utilityRemove;
util.assign = utilityAssign;
util.random = utilityRandom;
util.find = utilityFind;
util.where = utilityWhere;

使用ES6模块系统有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

如果这些是模块中唯一的符号,我会缩短名称并使用新的对象速记来执行:

import remove from 'lodash/array/remove';
import assign from 'lodash/object/assign';
import random from 'lodash/number/random';
import find from 'lodash/collection/find';
import where from 'lodash/collection/where';

let util = {
  remove,
  assign,
  random,
  find,
  where
};

如果这可能会导致冲突,您可以考虑移动它部分到自己的模块。能够在测试时替换lodash方法可能有用。

由于每个符号来自不同的模块,因此您无法组合导入,除非lodash为此目的提供组合导入模块。

如果您只是在不使用符号的情况下导出符号,您还可以考虑this syntax

export remove from 'lodash/array/remove';
export assign from 'lodash/object/assign';

对于任何导入和使用您的模块,将显示为:

import {remove, assign} from 'your-module';

答案 1 :(得分:1)

您可以在utils模块中执行此操作:

//utils.js

export remove from 'lodash/array/remove';
export assign from 'lodash/object/assign';
export random from 'lodash/number/random';
export find from 'lodash/collection/find';
export where from 'lodash/collection/where';

并像这样使用它:

import * as util from './utils';

...

util.random();