Vue. js - loda sh | Как импортировать только указанные c функции в глобальном масштабе? - PullRequest
0 голосов
/ 13 марта 2020

В настоящее время я импортирую всю библиотеку loda sh следующим образом:

import _ from 'lodash';
Object.defineProperty(Vue.prototype, '$_', { value: _ });

И она работает нормально, и я могу получить доступ ко всем функциям loda sh, используя this.$_.startCase()

Но я использую только функции startCase и omit во всем моем проекте. Поэтому я попытался импортировать jus эти функции:

import {startCase, omit} from 'lodash/core';
Object.defineProperty(Vue.prototype, '$omit', { value: omit});
Object.defineProperty(Vue.prototype, '$startCase', { value: omit});

Но когда я пытаюсь получить доступ к этим функциям, используя this.$omit(), выдается ошибка, говорящая, что функция не определена.

Что здесь не так?

1 Ответ

2 голосов
/ 13 марта 2020

Для использования именованных импортов, таких как import {omit} from 'lodash/core', lodash/core должен быть модулем ES, который имеет оператор export для omit. Пакет lodash - это UMD, это означает, что он обрабатывается Webpack как модуль Common JS и имеет только экспорт по умолчанию из-за функциональной совместимости модулей.

lodash/core в этом отношении работает так же, как и lodash весь модуль будет импортирован в пакет:

import _ from 'lodash/core';
let { omit } = _;

Функции должны быть либо импортированы из отдельных вложенных lodash модулей:

import omit from 'lodash/omit';

Или они должны быть импортированы из lodash-es пакет, который предоставляет модули ES и разрешает именованный импорт:

import {omit} from 'lodash-es';
...