简化`import as`语法

时间:2016-04-12 03:19:53

标签: javascript module ecmascript-6

我目前正在使用以下语法导入一些lodash函数:

def pytest_addoption(parser): parser.addini('custom_value', 'documentation of my custom value')

这很有效,但必须指定每个import {cloneDeep as _cloneDeep, each as _each, size as _size} from 'lodash'变量重命名才有点烦人。有没有可以避免这种情况的捷径?我很乐意将所有这些方法都放在一个对象中,以模拟导入整个lodash库时的功能,例如: as_.cloneDeep

为了澄清,我不想导入整个库。所以我正在寻找一种仍允许模块化导入功能的解决方案。

3 个答案:

答案 0 :(得分:1)

由于您的目标是避免烦恼,我怀疑这可能不是您想要的,但如果您非常关注消费者语法并希望单独导入以进行有效的打包或者您可以随时创建中间模块。

此模块将导入您想要的内容,并且在主代码中您可以按照您希望的方式引用中间模块。

举个例子:

import {parse as _parse, join as _join} from 'path'

export var parse = _parse;
export var join = _join;

并在您的主要应用程序中

import * as path from './custom-lib/path'

path.parse(...);

它涉及一个很糟糕的额外文件,但你只需要写一次。

我不一定认为这是一个很好的解决方案,但我认为这是你最接近你想要的当前标准。

答案 1 :(得分:0)

ECMA2015可以选择将所有对象/容器导入。

import * as _ from 'lodash'

然后您可以像以前一样使用它:

_.cloneDeep()_.each()等......

答案 2 :(得分:0)

您可以导入整个lib以及单个方法:

import _, { cloneDeep, each, isArray } from 'lodash';

_.isArray([]) // true
isArray([])   // true 

执行import x from 'y';后,它会将整个y模块存储在x变量中。

执行import {a, b, c} from 'y';只会引入模块的特定方法a, b, c

您可以通过使用逗号分隔它们来组合这两种类型的导入,就像我在示例中所做的那样。

MDN's reference了解详情。