Модуль утилиты
Модуль util предоставляет практические функции инструмента, такие как определение типа данных, копирование атрибутов объекта, анализ строк шаблона и обработка событий.
Ниже приводится конкретное введение и примеры:
- Определить тип данных. Этот модуль предоставляет такие методы ,
util.is[type]
какisDate
, и т. д. для определения типа данных входящих параметров, например:isRegExp
isError
1
2
3var util = require('util');
console.log(util.isDate(new Date()));
console.log(util.isRegExp(/some regexp/));
- Копирование свойств объекта.
util.inherits()
Этот метод может опционально наследовать один конструктор от другого, реализуя тем самым прототипное наследование.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16var util = require('util');
function Animal() {
this.name = 'Animal';
this.sleep = function() {
console.log(this.name + '正在睡觉!');
}
}
Animal.prototype.eat = function(food) {
console.log(this.name + '正在吃:' + food);
};
function Cat() {
this.name = 'cat';
}
util.inherits(Cat, Animal);
Используйте Cat
этот конструктор, чтобы наследовать Animal
свойства экземпляра и свойства прототипа и распечатать Cat
свойства и методы экземпляра.
1
2
3
4var cat = new Cat();
console.log(cat.name);
console.log(cat.eat('fish'));
console.log(cat.sleep());
- util.format() Форматированный шаблон вывода
1
2
3
4
5const util = require('util');
const str1 = util.format('%s:%s', 'foo');
const str2 = util.format('%s:%s', 'foo', 'bar', 'baz');
console.log(str1) // => 'foo:%s'
console.log(str2) // => 'foo:bar baz'
Выше приведены util
некоторые распространенные методы модулей, которые часто можно использовать для упрощения фактического процесса разработки.
объект
LruCache
Объект кэша LRU (наименее недавно использовавшийся), см.LruCacheобъект.
1LruCache util.LruCache;
TextDecoder
TextDecoderобъект декодирования, см.TextDecoderобъект.
1TextDecoder util.TextDecoder;
TextEncoder
TextEncoderКодирование объектов, см.TextEncoderобъект.
1TextEncoder util.TextEncoder;
types
typesМодуль предоставляет инструментальные функции для определения типов данных.
1types util.types;
статическая функция
format
Форматировать переменные в соответствии с указанным форматом
1
2static String util.format(String fmt,
...args);
Параметры звонка:
- fmt: строка, строка формата
- args: ..., список необязательных параметров
Результаты возврата:
- String, возвращает отформатированную строку
форматировать переменную формата
1static String util.format(...args);
Параметры звонка:
- args: ..., список необязательных параметров
Результаты возврата:
- String, возвращает отформатированную строку
inherits
Наследуйте функции прототипа от одного конструктора к другому. Прототипом конструктора будет установлен новый объект, созданный из суперкласса (суперконструктор).
1
2static util.inherits(Value constructor,
Value superConstructor);
Параметры звонка:
- constructor: Значение, начальный конструктор
- superConstructor: Value, унаследованный суперкласс.
inspect
Функция возвращает строковое представление объекта obj, в основном используемое для отладки. Дополнительные параметры можно использовать для изменения определенных аспектов форматированной строки.
1
2static String util.inspect(Value obj,
Object options = {});
Параметры звонка:
- obj: Значение, указывает объект, который будет обработан.
- options: Объект, укажите параметры управления форматом.
Результаты возврата:
- String, возвращает отформатированную строку
Поддерживаются следующие параметры:
1
2
3
4
5
6
7
8
9{
"colors": false, // specify if output should be colorized, defaults to false
"depth": 2, // specify the max depth of the output, defaults to 2
"table": false, // specify if output should be a table, defaults to false
"encode_string": true, // specify if string should be encoded, defaults to true
"maxArrayLength": 100, // specify max number of array elements to show, set to 0 or negative to show no elements, defaults to 100
"maxStringLength": 10000, // specify max string length to output, set to 0 or negative to show no strings, defaults to 10000
"fields": [], // specify the fields to be displayed, defaults to all
}
deprecate
Инкапсулирует данную функцию.Эта функция только совместима и не выводит предупреждений.
1
2
3static Function util.deprecate(Function fn,
String msg,
String code = "");
Параметры звонка:
- fn: Функция, учитывая функцию, которую необходимо инкапсулировать.
- msg: Строка с предупреждающим сообщением.
- code: Строка с номером предупреждения.
Результаты возврата:
- Function, если результат инкапсуляции
isEmpty
Проверяет, содержит ли данная переменная значение (нет перечисляемых свойств)
1static Boolean util.isEmpty(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если пусто
isArray
Проверяет, является ли данная переменная массивом
1static Boolean util.isArray(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это массив
isBoolean
Проверяет, является ли данная переменная логической величиной
1static Boolean util.isBoolean(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это логическое значение, оно возвращает True
isNull
Проверяет, является ли данная переменная нулевой
1static Boolean util.isNull(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это значение Null, оно возвращает True
isNullOrUndefined
Проверяет, является ли данная переменная нулевой или неопределенной.
1static Boolean util.isNullOrUndefined(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если оно равно Null или Undefined, оно возвращает True
isNumber
Проверяет, является ли данная переменная числом
1static Boolean util.isNumber(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это число
isBigInt
Проверяет, является ли данная переменная BigInt
1static Boolean util.isBigInt(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это число
isString
Проверяет, является ли данная переменная строкой
1static Boolean util.isString(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это строка
isUndefined
Проверяет, является ли данная переменная неопределенной
1static Boolean util.isUndefined(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если оно не определено, верните True
isRegExp
Проверяет, является ли данная переменная обычным объектом
1static Boolean util.isRegExp(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это обычный объект
isObject
Проверяет, является ли данная переменная объектом
1static Boolean util.isObject(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это объект
isDate
Проверяет, является ли данная переменная объектом даты.
1static Boolean util.isDate(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это объект даты
isNativeError
Проверяет, является ли данная переменная объектом ошибки.
1static Boolean util.isNativeError(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это объект ошибки
isPrimitive
Проверяет, имеет ли данная переменная примитивный тип.
1static Boolean util.isPrimitive(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это примитивный тип
isSymbol
Проверьте, имеет ли данная переменная тип символа.
1static Boolean util.isSymbol(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это тип символа, он возвращает True
isDataView
Проверяет, имеет ли данная переменная тип DataView.
1static Boolean util.isDataView(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это тип DataView, он возвращает True
isExternal
Проверяет, имеет ли данная переменная тип Внешний.
1static Boolean util.isExternal(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это внешний тип, он возвращает True
isMap
Проверьте, имеет ли данная переменная тип Map
1static Boolean util.isMap(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это тип карты, он возвращает True
isMapIterator
Проверяет, имеет ли данная переменная тип MapIterator.
1static Boolean util.isMapIterator(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это тип MapIterator
isPromise
Проверяет, имеет ли данная переменная тип Promise.
1static Boolean util.isPromise(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это тип Promise, он возвращает True
isAsyncFunction
Проверяет, имеет ли данная переменная тип AsyncFunction.
1static Boolean util.isAsyncFunction(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это тип AsyncFunction, он возвращает True
isSet
Проверяет, имеет ли данная переменная тип Set
1static Boolean util.isSet(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это тип Set, он возвращает True
isSetIterator
Проверяет, имеет ли данная переменная тип SetIterator.
1static Boolean util.isSetIterator(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это тип SetIterator, он возвращает True
isTypedArray
Проверяет, имеет ли данная переменная тип TypedArray.
1static Boolean util.isTypedArray(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это тип TypedArray, он возвращает True
isUint8Array
Проверяет, имеет ли данная переменная тип Uint8Array.
1static Boolean util.isUint8Array(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это тип Uint8Array
isFunction
Проверяет, является ли данная переменная объектом функции.
1static Boolean util.isFunction(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, возвращает True, если это объект функции
isBuffer
Проверяет, является ли данная переменная функциейBufferобъект
1static Boolean util.isBuffer(Value v);
Параметры звонка:
- v: Значение, учитывая переменную, которую необходимо обнаружить.
Результаты возврата:
- Boolean, если это функцияBufferОбъект возвращает истину
isDeepEqual
Глубина тестового значения равна ожидаемому значению
1
2static Boolean util.isDeepEqual(Value actual,
Value expected);
Параметры звонка:
- actual: Значение, значение для проверки.
- expected: Значение, ожидаемое значение
Результаты возврата:
- Boolean, возвращает True, если глубины равны
has
Запросить, содержит ли указанный объект данный ключ
1
2static Boolean util.has(Value v,
String key);
Параметры звонка:
- v: Значение, соответствующее запрашиваемому объекту.
- key: Строка, укажите ключ для запроса
Результаты возврата:
- Boolean, возвращает массив всех ключей объекта
keys
Запросить все массивы ключей указанного объекта
1static Array util.keys(Value v);
Параметры звонка:
- v: Значение, соответствующее запрашиваемому объекту.
Результаты возврата:
- Array, возвращает массив всех ключей объекта
values
Запросить все массивы значений указанного объекта
1static Array util.values(Value v);
Параметры звонка:
- v: Значение, соответствующее запрашиваемому объекту.
Результаты возврата:
- Array, возвращает массив всех значений объекта
clone
Клонировать данную переменную, если это объект или массив, скопировать содержимое в новый объект.
1static Value util.clone(Value v);
Параметры звонка:
- v: Значение, заданное для клонируемой переменной.
Результаты возврата:
- Value, возвращает результат клонирования
deepFreeze
Глубокая заморозка объекта. Замороженный объект и объекты, которые он содержит, нельзя будет изменить.
1static util.deepFreeze(Value v);
Параметры звонка:
- v: Значение, указывает объект, который нужно заморозить.
extend
Расширить ключевые значения одного или нескольких объектов до указанного объекта
1
2static Value util.extend(Value v,
...objs);
Параметры звонка:
- v: Значение, указывает объект, который будет расширен.
- objs: ..., указывает один или несколько объектов для расширения
Результаты возврата:
- Value, возвращает развернутый результат
_extend
Расширить ключевые значения одного или нескольких объектов до указанного объекта, который является псевдонимом расширения.
1
2static Value util._extend(Value v,
...objs);
Параметры звонка:
- v: Значение, указывает объект, который будет расширен.
- objs: ..., указывает один или несколько объектов для расширения
Результаты возврата:
- Value, возвращает развернутый результат
pick
ВернутьobjectСкопировать, отфильтровать только значения атрибутов указанного ключа
1
2static Object util.pick(Value v,
...objs);
Параметры звонка:
- v: Значение, указывает объект для фильтрации.
- objs: ..., укажите одну или несколько клавиш для выбора
Результаты возврата:
- Object, возвращает отфильтрованные результаты
omit
ВернутьobjectКопировать, исключая только значение атрибута указанного ключа
1
2static Object util.omit(Value v,
...keys);
Параметры звонка:
- v: Значение, указывает объект для фильтрации.
- keys: ..., укажите один или несколько ключей для исключения
Результаты возврата:
- Object, возвращает исключенные результаты
first
Получить первый элемент массива
1static Value util.first(Value v);
Параметры звонка:
- v: Значение, заданное массивом, который необходимо получить.
Результаты возврата:
- Value, возвращает полученный элемент
Получить первые несколько элементов массива
1
2static Value util.first(Value v,
Integer n);
Параметры звонка:
- v: Значение, заданное массивом, который необходимо получить.
- n: целое число, указывает количество элементов, которые необходимо получить.
Результаты возврата:
- Value, возвращает полученный массив элементов
last
Получить последний элемент массива
1static Value util.last(Value v);
Параметры звонка:
- v: Значение, заданное массивом, который необходимо получить.
Результаты возврата:
- Value, возвращает полученный элемент
Получить несколько элементов в конце массива
1
2static Value util.last(Value v,
Integer n);
Параметры звонка:
- v: Значение, заданное массивом, который необходимо получить.
- n: целое число, указывает количество элементов, которые необходимо получить.
Результаты возврата:
- Value, возвращает полученный массив элементов
unique
Получить дедуплицированную копию элементов массива
1
2static Array util.unique(Value v,
Boolean sorted = false);
Параметры звонка:
- v: Значение, учитывая массив, который нужно дублировать.
- sorted: логическое значение, указывает, отсортирован ли массив. Если массив отсортирован, будет использоваться быстрый алгоритм.
Результаты возврата:
- Array, возвращает массив после удаления повторяющихся элементов
union
Объедините значения одного или нескольких массивов в массив с уникальными значениями.
1static Array util.union(...arrs);
Параметры звонка:
- arrs: ..., укажите один или несколько массивов для объединения
Результаты возврата:
- Array, возвращает объединенный результат
intersection
Возвращает пересечение массива, содержащего arr, исключая один или несколько элементов массива.
1static Array util.intersection(...arrs);
Параметры звонка:
- arrs: ..., укажите один или несколько массивов, используемых для расчета пересечения
Результаты возврата:
- Array, возвращает результат вычисления пересечения
flatten
Преобразуйте массив с несколькими уровнями вложенности (вложенность может быть любым количеством уровней) в массив только с одним уровнем. Если вы передадите параметр неглубокий, массив будет уменьшен до одного измерения вложенности.
1
2static Array util.flatten(Value arr,
Boolean shallow = false);
Параметры звонка:
- arr: Значение, указывает массив, который нужно преобразовать.
- shallow: логическое значение, указывает, следует ли уменьшать только одно измерение вложенности, значение по умолчанию — false
Результаты возврата:
- Array, возвращает результат преобразования
without
Возвращает массив, содержащий один или несколько элементов массива arr, исключая один или несколько элементов.
1
2static Array util.without(Value arr,
...els);
Параметры звонка:
- arr: Значение, указывает массив, который необходимо исключить.
- els: ..., указывает один или несколько элементов, которые нужно исключить
Результаты возврата:
- Array, возвращает исключенные результаты
difference
Возвращает массив, содержащий элементы массива arr, за исключением элементов массива без.
1
2static Array util.difference(Array list,
...arrs);
Параметры звонка:
- list: Массив, указывает массив, который необходимо исключить.
- arrs: ..., указывает один или несколько массивов для исключения
Результаты возврата:
- Array, возвращает исключенные результаты
each
Пройдите все элементы в списке и выведите каждый элемент по порядку. Если передается параметр контекста, итератор привязывается к объекту контекста. При каждом вызове итератора передаются три параметра: (элемент, индекс, список).
1
2
3static Value util.each(Value list,
Function iterator,
Value context = undefined);
Параметры звонка:
- list: Значение, указывает список или объект, который необходимо пройти.
- iterator: Функция, определяет функцию обратного вызова, используемую для обхода.
- context: Значение, указывает объект контекста, привязанный при вызове итератора.
Результаты возврата:
- Value, возвращает сам список
map
Каждое значение в списке сопоставляется с новым массивом с помощью функции преобразования (итератор). Если передается параметр контекста, итератор привязывается к объекту контекста. При каждом вызове итератора передаются три параметра: (элемент, индекс, список).
1
2
3static Array util.map(Value list,
Function iterator,
Value context = undefined);
Параметры звонка:
- list: Значение, указывает список или объект, который необходимо преобразовать.
- iterator: Функция, указывает функцию обратного вызова, используемую для преобразования.
- context: Значение, указывает объект контекста, привязанный при вызове итератора.
Результаты возврата:
- Array, возвращает результат преобразования
reduce
Сократите элементы в списке до одного значения. Если передается параметр контекста, итератор привязывается к объекту контекста. При каждом вызове итератора передаются три параметра: (памятка, элемент, индекс, список).
1
2
3
4static Value util.reduce(Value list,
Function iterator,
Value memo,
Value context = undefined);
Параметры звонка:
- list: Значение, указывает список или объект для суммирования.
- iterator: Функция, определяет функцию обратного вызова, используемую для разрешения.
- memo: Значение, указывает начальное значение уменьшения.
- context: Значение, указывает объект контекста, привязанный при вызове итератора.
Результаты возврата:
- Value, возвращает суммарный результат
parseArgs
Разберите строку командной строки и верните список параметров.
1static NArray util.parseArgs(String command);
Параметры звонка:
- command: String, указывает строку командной строки для анализа.
Результаты возврата:
- NArray, возвращает проанализированный список параметров
compile
Скомпилировать скрипт в двоичный код
1
2
3static Buffer util.compile(String srcname,
String script,
Integer mode = 0);
Параметры звонка:
- srcname: Строка, укажите имя добавляемого скрипта
- script: строка, указывает код сценария, который необходимо скомпилировать.
- mode: целое число, режим компиляции, 0: модуль, 1: скрипт, 2: рабочий, по умолчанию — 0
Результаты возврата:
- Buffer, возвращает скомпилированный двоичный код
util.compileСценарии можно скомпилировать во внутренние блоки рабочих данных версии 8 (немашинный исполняемый код). Скомпилированный код можно напрямую загрузить и выполнить путем запуска и запроса после сохранения в формате *.jsc.
Поскольку после компиляции целевой код не сможет обратно получить исходный код, программы, использующие Function.toString, не будут работать должным образом.
sync
Оберните функции обратного вызова или асинхронные функции для их синхронного вызова.
1
2static Function util.sync(Function func,
Boolean async_func = false);
Параметры звонка:
- func: Функция, учитывая функцию, которую необходимо обернуть.
- async_func: логическое значение, указывает, что func обрабатывается как асинхронная функция. Если значение false, оно будет оцениваться автоматически.
Результаты возврата:
- Function, возвращает функцию, которая выполняется синхронно
util.syncОбработайте функцию обратного вызова или асинхронную функцию в функцию синхронизации, чтобы облегчить вызов.
Пример обратного вызова выглядит следующим образом:
1
2
3
4
5
6
7
8
9
10
11// callback
var util = require('util');
function cb_test(a, b, cb) {
setTimeout(() => {
cb(null, a + b);
}, 100);
}
var fn_sync = util.sync(cb_test);
console.log(fn_sync(100, 200));
Пример асинхронности выглядит следующим образом:
1
2
3
4
5
6
7
8
9// async/await
var util = require('util');
async function async_test(a, b) {
return a + b;
}
var fn_sync = util.sync(async_test);
console.log(fn_sync(100, 200));
Для функций, возвращающих обещания, которые не помечены как асинхронные, режим синхронизации можно указать вручную:
1
2
3
4
5
6
7
8
9
10
11// async/await
var util = require('util');
function async_test(a, b) {
return new Promise(function(resolve, reject) {
resolve(a + b);
});
}
var fn_sync = util.sync(async_test, true);
console.log(fn_sync(100, 200));
promisify
Обернуть функцию обратного вызова для асинхронного вызова
1static Function util.promisify(Function func);
Параметры звонка:
- func: Функция, учитывая функцию, которую необходимо обернуть.
Результаты возврата:
- Function, возвращает асинхронную функцию
util.promisifyОбработайте функцию обратного вызова как асинхронную функцию, чтобы облегчить вызов.
Пример обратного вызова выглядит следующим образом:
1
2
3
4
5
6
7
8
9
10
11// callback
var util = require('util');
function cb_test(a, b, cb) {
setTimeout(() => {
cb(null, a + b);
}, 100);
}
var fn_sync = util.promisify(cb_test);
console.log(async fn_sync(100, 200));
callbackify
Обернуть асинхронную функцию для обратного вызова
1static Function util.callbackify(Function func);
Параметры звонка:
- func: Функция, учитывая функцию, которую необходимо обернуть.
Результаты возврата:
- Function, вернуть функцию обратного вызова
util.callbackifyОбработайте асинхронную функцию в функцию обратного вызова, чтобы облегчить вызов.
Пример асинхронности выглядит следующим образом:
1
2
3
4
5
6
7
8
9
10
11
12// async
var util = require('util');
async function async_test(a, b) {
return a + b;
}
var fn_callback = util.callbackify(async_test);
fn_callback(100, 200, (err, result) => {
console.log(result);
});
buildInfo
Запросить текущую информацию о версии ядра и компонентов.
1static Object util.buildInfo();
Результаты возврата:
- Object, возвращает объект версии компонента
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24{
"fibjs": "0.25.0",
"clang": "9.1",
"date": "Jun 12 2018 07:22:40",
"vender": {
"ev": "4.24",
"expat": "2.2.5",
"gd": "2.2.4",
"jpeg": "8.3",
"leveldb": "1.17",
"mongo": "0.7",
"pcre": "8.21",
"png": "1.5.4",
"mbedtls": "2.6.1",
"snappy": "1.1.2",
"sqlite": "3.23.0",
"tiff": "3.9.5",
"uuid": "1.6.2",
"v8": "6.7.288.20",
"v8-snapshot": true,
"zlib": "1.2.7",
"zmq": "3.1"
}
}