【问题标题】:Load modules from lodash on demand按需从 lodash 加载模块
【发布时间】:2016-09-14 09:59:17
【问题描述】:

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

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

上面的代码工作正常,但有点耗时,我必须重复指定整个路径。 如果能做到这样岂不是更好:

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

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

【问题讨论】:

    标签: javascript node.js browserify babeljs


    【解决方案1】:

    如果您可以使用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 }; }
    ...
    

    【讨论】:

    • 感谢您的宝贵时间。但是我仍然会缺少一些东西。 lodash 有可用的转换,其他依赖呢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多