2017-01-01 4 views
0

ES6 я прочитал где-то (забыл источник, к сожалению), что это более эффективно, так или иначе, чтобы сделать это:Более эффективный импорт

import _find from 'lodash/find'; 

в противоположность:

import _ from 'lodash'; // just to use _.find 

Я понимаю, как это могло быть более эффективным для импорта одной функции, но где именно коэффициент эффективности/производительности? Связано это с webpack? Если я не использую webpack в качестве моего механизма сборки, это имеет значение?

+3

Да, речь идет о меньших размерах модулей. Как для клиентских сборок, так и для сборки в целом. – Bergi

+0

Другими словами, при создании для производства он будет включать только код lodash для 'find', если я импортирую с помощью первого метода, не так ли? Это вещь в веб-пакете или она применяется к ES6 в целом? – ffxsam

+1

Он применяется к модулям вообще, независимо от того, какую систему модулей или модуль вы используете. Тем не менее существуют связки, которые автоматически удаляют мертвый (ненужный) код, даже если вы импортируете большой модуль; этот торги строят размер для времени сборки. – Bergi

ответ

1

Когда вы импортируете большую библиотеку, вы импортируете все это (по крайней мере, с большинством связующих), поскольку нет четкого способа отличить то, что необходимо от импортируемого вами объекта.

Я не слишком хорошо знаком с lodash, но это точка входа должна выглядеть примерно так:

module.exports = { 
    find: require('./find.js') 
    filter: require('./filter.js') 
    // rest of the exposed functions 
} 

Во втором стиле импорта вы получили весь этот объект, но вам нужна только 1 функция от всего этого ,

Так что, если вы сделаете это:

import _ from 'lodash' 

Вы будете в конечном итоге с целой библиотекой lodash упакованной в свой пачке, в то время как если вы сделаете это:

import find from 'lodash/find' 

Вы только find и это зависимости, что приводит к значительно меньшему размеру пакета.

+0

О: import {find} from 'lodash' –

+0

@KenFehling Если вы импортируете из комплекта es6, все в порядке. Если вы импортируете это из библиотеки, например: lodash, в основном все равно придется сначала загрузить все, так что вам лучше с последним вариантом в ответе. –