【问题标题】:Require small section of lodash to minimize size需要一小部分 lodash 以最小化尺寸
【发布时间】:2016-11-07 03:03:37
【问题描述】:

我在 lodash 上使用 browserify,发现 lodash 构成了 browserified bundled.js 的很大一部分。

我在整个 lodash 中导入,但到目前为止我主要使用cloneDeep 方法。

var lodash = require('lodash');

如何仅导入 lodash 的必要部分以保持 bundled.js 小?我正在使用 node.js v6

【问题讨论】:

    标签: node.js browserify lodash


    【解决方案1】:

    您可以通过require('lodash/cloneDeep') 只挑选cloneDeep 方法。还有babel-plugin-lodash 用于简化挑选过程,lodash-webpack-plugin 用于更小的捆绑包。

    【讨论】:

    • lodash.clonedeep 够吗?
    • 是的,lodash.clonedeep 就足够了
    • 很荣幸有lodash的创造者来回答我的问题。赞成。正确答案,但如果您不介意,我会选择 user8461258 的答案作为答案,因为它适用于像我这样的菜鸟。我确实在努力调用 lodash 函数。
    【解决方案2】:

    ⚠️ 警告:“每个方法独立包will not be upgraded to v5” - John-David Dalton

    如果您使用的是 lodash


    虽然John-David Dalton's (lodash creator) answer 是正确的,但我正在为未来的读者提供这个答案。

    lodash 的每个功能都可以通过 npm 作为一个模块使用。有关可用模块的完整列表,请参阅 lodash-modularized

    点赞lodash.clonedeep

    $ npm i --save lodash.clonedeep
    

    可以这样使用:

    var cloneDeep = require('lodash.clonedeep');
    

    来自lodash主页:

    模块格式

    Lodash 以 variety of builds 和模块格式提供。

    【讨论】:

    • ⚠️ 每个方法独立包will not be upgraded to v5.
    • @John-DavidDalton 谢谢,我把你的评论写进了我的回答中。
    【解决方案3】:

    我一直在构建一个简化的 lodash 函数包,其占用空间要小得多。 cloneDeep 就是其中之一。你可以看看它是否适合你:https://github.com/simontonsoftware/micro-dash

    您可以看到in the jsdocs lodash 的cloneDeep,当它是您导入的唯一函数时,仍然拉入缩小的> 12K bytes,而micro-dash 的版本是< 300 bytes

    请注意自述文件中列出的差异。对于cloneDeep,可能相关的点是:

    • 仅设计用于基元、普通对象和数组。它没有被设计或测试为处理继承的属性、符号键、arguments 对象、原始对象(例如Object(1))、日期、地图、集合等。
    • 假定一个现代环境/构建链。例如。本项目不会包含重复的 ES6 函数(如Array.isArray()),可以直接使用 ES6 函数。如果您针对较旧的浏览器/环境,您可能需要单独包含 polyfill。但是,它只会使用可填充的功能。

    【讨论】:

      【解决方案4】:

      请注意,调用 lodash 函数时会有所不同,具体取决于导入 lodash 的方式。

      var lodash = require('lodash');
      var clone = lodash.cloneDeep(obj);
      

      如果您按照 John-David Dalton 的建议进行挑选,则需要以这种方式调用该函数。

      var lodash_clonedeep = require('lodash/cloneDeep');
      var clone = lodash_clonedeep(obj);
      

      专家们可能会忽略新手可能不知道调用 lodash 函数的正确方法的可能性。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-23
        • 2019-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-08
        • 2022-08-04
        相关资源
        最近更新 更多