npm — это система управления пакетами для JavaScript, которая предоставляет общие модули для использования другими разработчиками и проектами, подобно библиотеке maven языка Java, библиотеке материалов, используемой дизайнерами.
Серия простых в использовании пакетов npm посвящена изучению некоторых забавных и практичных пакетов npm, а также рассказам о сценариях использования и идеях реализации. Если программисты любят использовать свой собственный способ достижения того, чего уже достигли другие, это называется повторением колеса, то эта серия предназначена для того, чтобы вы увидели Фаренгейты.
основное введение
DEBUG — это компьютерная программа. Грейс Хоппер, которая программировала Harvard Mark II, была коммодором ВМС США, ученым-компьютерщиком и одним из первых программистов в мире. Однажды при отладке оборудования возникла проблема.После разборки реле обнаружила, что между контактами зажата моль, которая "затыкала" работу автомата. В результате Хо Бо в шутку называл программные сбои «ошибками» (BUG) и называл устранение неполадок с программными сбоями DEBUG, и это странное «обозначение» позже стало профессиональным жаргоном в компьютерной сфере.
debugЗагрузки на npm на прошлой неделе составили 18 миллионов+, а на github 6 тысяч+ звезд — это высокочастотный базовый пакет, который привлекает внимание.
Основные сценарии использования
Основные функции включают определение пространства имен и цвета, разницу во времени в миллисекундах, замену синтаксической переменной printf и пример кода для сравнения производительности функций.
// 计算函数性能示例,传入一个纯数字数组,计算其平均值
// avgA 使用 lodash 库中 sum 求和
// avgB 使用ES5中 Array.proptype.reduce求和
const _ = require('lodash');
const debug = require('debug');
const debugA = debug('avgA:');
const debugB = debug('avgB:');
const testFixture = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
// 使用lodash sum求和
function avgA(arr) {
return _.sum(arr) / arr.length;
}
// 使用原生reduce 求和
function avgB(arr) {
return arr.reduce((cal, curr) => cal + curr, 0) / arr.length;
}
const range = _.range(0, 10000000, 1);
range.forEach((index) => {
const result = avgA(testFixture);
if (index % 1000000 === 0) {
debugA('time %d', index);
}
})
range.forEach((index) => {
const result = avgB(testFixture);
if (index % 1000000 === 0) {
debugB('time %d', index);
}
})
результат операции:
Сценарий 1. Включите отладку в соответствии со средой проекта.
В реальных проектах отладка часто включается в автономной среде, тогда как онлайн-среда должна быть включена при определенных условиях.
const _ = require('lodash');
const debug = require('debug');
const debugA = debug('A:');
const debugB = debug('B:');
// 当环境为production时,所有的debugA均不会输出
if (process.env.NODE_ENV === 'production') {
debugA.enabled = false;
}
debugA('hello world');
debugB('I am new to debug');
результат операции:
Используйте сценарий 2: покажите интересные рисунки персонажей.
Мы группа людей с особыми убеждениями...
Для рекламы кстати? AIS-TXD набирает сотрудников, интерфейсные дизайнеры подходят к делу, быстро возобновляйте работу txd-jobs@list.alibaba-inc.com
анализ кода
Исходный код можно посмотретьОфициальный гитхаб, основная логика следующая:
- Использование Node.js для распространения решения об окружающей среде
/node.js
, использование браузера/browser.js
-
node.js
Часть командной строки командной строки обработки и определение цветаБиблиотека отображения командной строки tty -
browser.js
Часть обработки конфигурации объявления js, определение цвета (перечисление безопасных для Интернета значений цвета), базовое использованиеconsole.log
- часть common.js, общая логика, включая создание экземпляра, включение переключателя, выбор цвета, синтаксис printf и т. д.
Отладка пакета npm в этом выпуске представлена здесь. Если вы столкнетесь с подобными сценариями, вы можете с уверенностью использовать его. Любые полезные пакеты npm можно рекомендовать в области сообщений.
Подпишитесь, чтобы увидеть больше оригинального контента
Обратите внимание на паблик аккаунт и отправляйте свое резюме (видение набора, взаимодействие, интерфейс)