根据需要从lodash加载模块

时间:2016-09-14 09:59:18

标签: javascript node.js browserify babel

我正在使用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。我也可以将命名空间作为_。 我做错了还有另一种做法,或者这是唯一的方法。

1 个答案:

答案 0 :(得分:4)

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

而不是:

#include <immintrin.h>
#include <assert.h>

void SetBit(__m256i & vector, size_t position, bool value)
{
    assert(position <= 255);
    uint8_t lut[32] = { 0 };
    lut[position >> 3] = 1 << (position & 7);
    __m256i mask = _mm256_loadu_si256((__m256i*)lut);
    if (value)
        vector = _mm256_or_si256(mask, vector);
    else
        vector = _mm256_andnot_si256(mask, vector);
}

int main(int argc, char* argv[])
{
    __m256i a = _mm256_set1_epi8(-1);
    SetBit(a, 54, false);

    __m256i b = _mm256_set1_epi8(0);
    SetBit(b, 54, true);

    return 0;
}

你可以使用:

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

并且将对browserify的输出进行转换。

例如:

import _ from 'lodash';

没有插件:

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 }; }
...