Основные модули Node.js. Модуль util.

👁 0 просмотров

Модуль Util, в первую очередь, предназначен для удовлетворения потребностей внутренних API Node.js. Методы данного модуля очень полезны, если мы хотим обработать код, обработать данные, искать ошибки на основе стандартных методов Node.js. Модуль util является встроенным модулем Node.js и предлагает, на данный момент, следующие стабильные методы для обработки данных:

1.Метод util.debuglog(section)

util.debuglog(section) — выводит пользовательский дебаг.



2.Метод util.format(format[, …])

util.format(format[, …]) — обрабатывает строки.



3.Метод util.log(string)

util.log(string) — вывод объекта в в виде строки для дебагинга с меткой.



4.Метод util.inspect(object[, options])

util.inspect(object[, options]) — вывод объекта в в виде строки для дебагинга с дополнительными опциями.



5.Метод util.isArray(object)

util.isArray(object) — проверка объекта на тип массива.



6.Метод util.isRegExp(object)

util.isRegExp(object) — проверка объекта на тип регулярного выражения.



7.Метод util.isDate(object)

util.isDate(object) — проверка объекта на тип даты.



8.Метод util.isError(object)

util.isError(object) — проверка объекта на возврат ошибки.



9.Метод util.inherits(constructor, superConstructor)

util.inherits(constructor, superConstructor) — наследует методы прототипа из одного конструктора в другой. Прототип конструктора constructor будет установлен новый объект, созданный из superConstructor.



10.Метод util.deprecate(function, string)

util.deprecate(function, string) — отмечает, что метод не следует использовать больше.



Создание пользовательских модулей в Node.js

👁 99 просмотров

Масштабируемость проекта на Node.js отличается легкостью реализации и подразумевает создание пользовательских модулей. Все модули Node.js можно разделить на встроенные, которые скомпилированы вместе с сервером, так и сторонние, пользовательские. Встроенными можно считать часто используемые модули, которые работают с сетью (http), с файловой системой (fs) , с событиями (events) и т.д. Пользовательские модули можно загрузить из менеджера пакетов npm или создавать собственные, которые будут решать те задачи проекта, которые легче отделить от остальной части. Виды модулей, которые можно реализовать можно подразделить на 3 вида:

  • модули js — обычные модули, в которых можно написать серверный код Node.js;
  • модули json — хорошо подходят для хранения часто изменяемых переменных проекта или для его конфигурации. По сути это обычный файл с данными типа json;
  • модули node — это скомпилированный тип модулей, которые отличаются высокой производительностью для высоконагруженных частей проекта.

Любой готовый модуль можно разместить в пользовательской директории, но первую очередь сервер ищет модуль с таким названием в стандартной директории node_modules и если там не находит, то ищет уже в пользовательских директориях, при этом, если по молчанию названия модуля не указано, то ищет модуль с названием index.js, дальше index.json и index.node. Для подключения модуля в серверной части используется функция include(), который возвращает переменную из модуля. Для того, чтобы эта переменная была доступна при подключении используется конструкция exports.varName1 = varName2, где varName1 — это пользовательская переменная, которая доступна при подключении модуля, а varName2 — это данные, которые передаются в переменную модуля varName1 после обработки в модуле. Далее покажем на примере как создать и использовать модули js и json.

1. Структура примера

Давайте, чтобы детально описать пример создадим проект со следующей структурой:node-modules-exmpl-structure

где www — корневая папка проекта, server.js — главный файл проекта для организации точки входа в проект и подключения модулей, configs — директория для модулей json и наш модуль в ней conf.js, modules — директория для модулей js и наш модуль в ней module.js. Давайте напишем код работы для каждого файла в структуре.

2. Организация модуля conf.json

Данный модуль является файл для хранения одной переменной в формате json и давайте запишем в ней вот такой код с переменными:

{
"name":"Mark",
"age":25
}

3. Организация модуля module.js

Данный модуль, пусть, будет содержать код для возврата объекта, который мы в ней создадим:

//Создадим объект пользователей
function Users(name){
    this.name = name;
}
//Добавим еще один метод для вывода имени
Users.prototype.view = function(){
    console.log(this.name);
};
exports.Users =  Users;//Возвращаем переменную из модуля

4. Файл запуска server.js

Ниже представлен код файла server.js, в котором подключаются модули и запускается пример работы проекта:

var user = require('./modules/module.js');//Подключаем наш модуль js
var conf = require('./configs/conf.json');//Подключаем наш модуль json
var name = new user.Users(conf.name);//Создаем объект из переменной модуля
name.view();//Выводим имя юзера на консоль

При указании файла модуля можно опустить расширения *.js и *.json

5. Возврат чистого объекта из модуля

Если мы посмотрим на код выше, то станет понятно, что объект Users — это объект переменной user, который возвращается модулем через конструкцию exports. А как сделать так, чтобы модуль возвращал чистый объект, т.е. можно было бы сразу написать вот так:

var Users = require('./modules/module.js');//Подключаем наш модуль js
var conf = require('./configs/conf.json');//Подключаем наш модуль json
var name = new Users(conf.name);//Создаем объект
name.view();//Выводим имя юзера на консоль

Для того, чтобы данный код сработал необходимо в модуле указать export через его глобальный объект module:

//Создадим объект пользователей
function Users(name){
    this.name = name;
}
//Добавим еще один метод для вывода имени
Users.prototype.view = function(){
    console.log(this.name);
};
module.exports.Users =  Users;//Возвращаем переменную из модуля

6. Запуск примера

Через консоль переходим в директорию нашего проекта www и выполняем команду(в Windows):

node server.js

и мы увидим результат, как на скриншоте:
node-modules-post-resultСкачать рабочий пример можно скачать по ссылке.

 

Решаем ошибку «Most middleware (like favicon) is no longer bundled with Express»

👁 40 просмотров

Решили обновить модуль Express для Node.js, с 3.x до 4.x, но вышла такая ошибка «Most middleware (like favicon) is no longer bundled with Express and must be installed separately. Please see https://github.com/senchalabs/connect#middleware», которая гласит, что ныне подключение иконки favicon.ico, производиться через отдельный модуль, доступный по адресу https://github.com/senchalabs/connect#middleware.

Решение проблемы

Для Express 4. Устанавливаем новый модуль serve-favicon:

$> npm install serve-favicon

Затем в server .js или перезаписываем строки :

var favicon = require('serve-favicon');//Подключаем новый модуль
//...
app.use(favicon(options.favicon));//Загружаем нашу иконку

Для Express 3 . Ниже старый код, который вы сипользовали, вероятно, до этого и который вызывал ошибку в 4.x версии Express

app.use(express.favicon(options.favicon));