2016-11-07 63 views
2

我在lodash上使用browserify,發現lodash構成了一大塊被瀏覽過的bundled.js要求小部分lodash最小化尺寸

我在整個地方都進口了,但我主要使用cloneDeep方法到目前爲止。

var lodash = require('lodash'); 

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

回答

4

您可以通過require('lodash/cloneDeep')挑選cloneDeep方法。還有babel-plugin-lodash可簡化櫻桃採摘,lodash-webpack-plugin可供更小的捆綁。

+1

會[lodash.clonedeep](https://www.npmjs.com/package/lodash.clonedeep)就夠了嗎? –

+0

是的,lodash.clonedeep就足夠了 – user781486

+1

能夠讓lodash的創建者回答我的問題是一種榮幸。 Upvoted。正確的答案,但如果你不介意,我會選擇user8461258的答案作爲答案,因爲它適用於像我這樣的noob。我確實在努力調用lodash函數。 – user781486

1

⚠️警告道: 「每個方法的獨立包裝will not be upgraded to v5」 - John-David Dalton

如果您使用lodash < = 4,繼續閱讀。


雖然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 &模塊格式。

+1

⚠️每個方法的獨立包[不會升級到v5](https://github.com/lodash/lodash/wiki/Roadmap)。 –

+0

@ John-DavidDalton謝謝,我在你的回答中提出你的評論。 –

0

注意到,還有當你調用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函數的正確方法的可能性。

1

我一直在構建一個簡化的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。但是,它只會使用可以填充的功能。