按需从 lodash 加载模块

Load modules from lodash on demand

我正在将 Browserify 与 Babel 和 Gulp 一起使用。 目前我的项目只需要 lodash 的很少一部分,我不想加载整个模块。

import assignIn from 'lodash/assignin';
import isPlainObject from 'lodash/isplainobject';
import isFunction from 'lodash/isfunction';

以上代码工作正常,但有点耗时,我必须重复指定整个路径。 如果可以这样来做岂不是很好:

import {assignIn, isPlainObject, isFunction} as _ from 'loadash';

并将其用作_.assignIn。我也可以获得 _ 的命名空间。 我做错了什么有另一种方法或者这是唯一的方法。

如果您可以使用 babel-plugin-lodash 插件,它几乎可以满足您的需求。

而不是:

import assignIn from 'lodash/assignin';
import isPlainObject from 'lodash/isplainobject';
import isFunction from 'lodash/isfunction';

你可以只使用:

import _ from 'lodash';

browserify 的输出将被转换。

例如:

import _ from 'lodash';

function Foo() {
  this.a = 1;
}

Foo.prototype.b = 2;

_.assignIn({ 'a': 0 }, new Foo);

_.isPlainObject({});

_.isFunction(/abc/);

没有插件:

var _lodash = require('lodash');

var _lodash2 = _interopRequireDefault(_lodash);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
...

使用插件:

var _isFunction2 = require('lodash/isFunction');

var _isFunction3 = _interopRequireDefault(_isFunction2);

var _isPlainObject2 = require('lodash/isPlainObject');

var _isPlainObject3 = _interopRequireDefault(_isPlainObject2);

var _assignIn2 = require('lodash/assignIn');

var _assignIn3 = _interopRequireDefault(_assignIn2);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
...