我在lodash上使用browserify,發現lodash構成了一大塊被瀏覽過的bundled.js
。要求小部分lodash最小化尺寸
我在整個地方都進口了,但我主要使用cloneDeep
方法到目前爲止。
var lodash = require('lodash');
如何只導入lodash的必要部分以保持bundled.js
較小?我正在使用node.js v6
我在lodash上使用browserify,發現lodash構成了一大塊被瀏覽過的bundled.js
。要求小部分lodash最小化尺寸
我在整個地方都進口了,但我主要使用cloneDeep
方法到目前爲止。
var lodash = require('lodash');
如何只導入lodash的必要部分以保持bundled.js
較小?我正在使用node.js v6
您可以通過require('lodash/cloneDeep')
挑選cloneDeep
方法。還有babel-plugin-lodash可簡化櫻桃採摘,lodash-webpack-plugin可供更小的捆綁。
⚠️警告道: 「每個方法的獨立包裝will not be upgraded to v5」 - John-David Dalton
- 請停止per method packages贊成模塊化lodash
如果您使用lodash < = 4,繼續閱讀。
雖然John-David Dalton's (lodash creator) answer是一點,我正在爲這個未來的讀者一個答案。
lodash的每個函數都可以通過npm作爲模塊使用。有關可用模塊的完整列表,請參見lodash-modularized。
$ npm i --save lodash.clonedeep
這可以這樣使用:
var cloneDeep = require('lodash.clonedeep');
從lodash主頁:
模塊格式
Lodash處於可用variety of builds &模塊格式。
⚠️每個方法的獨立包[不會升級到v5](https://github.com/lodash/lodash/wiki/Roadmap)。 –
@ John-DavidDalton謝謝,我在你的回答中提出你的評論。 –
注意到,還有當你調用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函數的正確方法的可能性。
我一直在構建一個簡化的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功能。如果您定位舊版瀏覽器/環境,則可能需要分別添加polyfills。但是,它只會使用可以填充的功能。
會[lodash.clonedeep](https://www.npmjs.com/package/lodash.clonedeep)就夠了嗎? –
是的,lodash.clonedeep就足夠了 – user781486
能夠讓lodash的創建者回答我的問題是一種榮幸。 Upvoted。正確的答案,但如果你不介意,我會選擇user8461258的答案作爲答案,因爲它適用於像我這樣的noob。我確實在努力調用lodash函數。 – user781486