Как бы я перевел это требование в стиль импорта ES6

я хотел бы сделать это

var debug = require('debug')('myapp');

... в ES6 без создания дополнительной переменной. Можно ли это сделать?


person Thijs Koerselman    schedule 28.01.2015    source источник
comment
Предполагая, что модуль debug был настроен для поддержки экспорта ES6, ответ по-прежнему практически нет. Должна быть директива импорта, тогда вы используете импортированный бит. import Debug from 'debug'; let debug = Debug('myapp'); или аналогичный. Возможно, использование System.import удалит лишний объект, но это создаст беспорядок с вложенными функциями.   -  person lemieuxster    schedule 28.01.2015
comment
@lemiuxster Мой код ES6 скомпилирован с помощью преобразования Grunt Browserify 6to5 в CommonJs, поэтому модулю отладки все равно. Мне просто интересно, поддерживается ли такая вещь в ES6. Спасибо, что прояснили это.   -  person Thijs Koerselman    schedule 28.01.2015
comment
Искал тот же ответ. Спасибо.   -  person captainill    schedule 09.04.2015


Ответы (1)


import Debug from 'debug';

const debug = Debug('myapp');

(как сказал Лемье... ссылаясь на тот факт, что он все еще указан в списке вопросов без ответов)

Обратите внимание, как упоминалось в комментариях, это будет работать для модулей, экспортированных с синтаксисом es6, то есть всякий раз, когда использовалось export default expression, что уступало место требованию формы var debug = require('./debug').default('myapp');. Если модуль, который вы импортируете, использовал синтаксис экспорта типа export const Debug = expression или export {Debug} или module.exports = {Debug : expression}, вам придется использовать import {Debug} from 'debug';

person widged    schedule 18.08.2015
comment
Вы разрушаете свойство, которое недоступно. Отладка является экспортом по умолчанию, а не отдельно экспортируемым значением/свойством экспорта. Уберите скобки и я отмечу ваш ответ :) - person Thijs Koerselman; 01.09.2015
comment
Спасибо что подметил это. Сделанный. - person widged; 03.09.2015
comment
Однако кредиты должны быть отправлены @lemiuxster ... Я поставил это как ответ, потому что сообщение появлялось в списке без ответа. Если он/она напишет свой комментарий в качестве ответа, я с радостью удалю свой. - person widged; 03.09.2015
comment
Модуль debug не имеет экспорта по умолчанию, поэтому это не сработает. Хотя я предполагаю, что это отображается только при использовании TypeScript. В этом случае вам нужно: import * Debug from 'debug', а затем const debug = Debug('app')('scope'); - person ken; 30.10.2016
comment
@ken, тебе нужно as там - import * as Debug from 'debug';, но тогда свертыванию это не понравится (cannot call a namespace ('Debug')). - person WillyC; 29.03.2017