В экосистеме Node.js традиционно используется модульная система
CommonJS. Библиотека validator.js устанавливается через npm
и подключается с помощью require.
После установки пакета:
npm install validator
Импорт в CommonJS-модуле выполняется следующим образом:
const validator = require('validator');
console.log(validator.isEmail('test@mail.com'));
Модуль экспортирует объект, содержащий набор функций для валидации строк. Такой способ импорта остаётся актуальным для проектов, использующих Node.js без включённого режима ES Modules.
Особенность CommonJS заключается в синхронной загрузке модулей. Это упрощает интеграцию в серверные приложения, где динамическая загрузка не является критичной.
Современный стандарт JavaScript предполагает использование ES
Modules. В этом случае импорт выполняется через ключевое слово
import.
Для Node.js необходимо включить поддержку ESM, указав в
package.json:
{
"type": "module"
}
Пример использования:
import validator from 'validator';
console.log(validator.isURL('https://example.com'));
В отличие от CommonJS, ES Modules поддерживают статический анализ зависимостей, что позволяет инструментам сборки выполнять tree-shaking и оптимизацию конечного кода.
Некоторые среды требуют явного расширения файлов:
import validator from 'validator';
или при локальных модулях:
import utils from './utils.js';
В браузерной среде библиотека может использоваться без сборщиков, через подключение CDN-версии.
<script src="https://cdn.jsdelivr.net/npm/validator@13.12.0/validator.min.js"></script>
<script>
console.log(validator.isEmail('test@mail.com'));
</script>
В данном случае библиотека становится глобальной переменной
validator, доступной в window.
Такой способ применяется в простых HTML-страницах, прототипах и учебных проектах, где отсутствует система сборки.
Следует учитывать, что глобальное пространство имён загрязняется, и управление зависимостями становится ограниченным.
В проектах с Webpack библиотека импортируется так же, как в ES Modules или CommonJS, в зависимости от конфигурации.
Пример:
import validator from 'validator';
export function checkEmail(email) {
return validator.isEmail(email);
}
Webpack выполняет бандлинг зависимостей, объединяя
validator.js с остальным кодом приложения.
Особенность использования в сборщике заключается в возможности оптимизации:
В средах вроде Vite используется нативная поддержка ES Modules. Импорт выглядит стандартно:
import validator from 'validator';
const result = validator.isMobilePhone('+77001234567');
Vite использует ESM в режиме разработки без полной сборки, что ускоряет запуск проекта.
При продакшн-сборке используется Rollup, который оптимизирует зависимости аналогично другим современным инструментам.
Библиотека validator.js имеет поддержку TypeScript через
отдельные типы.
Установка:
npm install validator
npm install --save-dev @types/validator
Импорт:
import validator from 'validator';
const isValid: boolean = validator.isEmail('test@mail.com');
Типизация обеспечивает:
Некоторые функции принимают дополнительные параметры, которые также описаны в типах:
validator.isLength('text', { min: 2, max: 10 });
В средах, поддерживающих динамическую загрузку модулей,
validator.js может подключаться по требованию.
async function validate(email) {
const validator = await import('validator');
return validator.default.isEmail(email);
}
Такой подход используется для:
Особенность динамического импорта заключается в том, что возвращается
объект модуля, где основной экспорт часто находится в
default.
В React-приложениях библиотека подключается как обычный модуль:
import validator from 'validator';
function Form() {
const handleSubmit = (value) => {
if (validator.isEmail(value)) {
console.log('valid');
}
};
return null;
}
Интеграция не требует специальных настроек, так как React-проекты обычно используют сборщики вроде Vite, Webpack или Next.js, поддерживающие ESM.
При смешанном использовании CommonJS и ES Modules возникают нюансы импорта:
(async () => {
const validator = await import('validator');
console.log(validator.default.isURL('https://example.com'));
})();
import { createRequire } from 'module';
const require = createRequire(import.meta.url);
const validator = require('validator');
Такие конструкции применяются при миграции проектов между системами модулей.
Пакет validator.js экспортирует набор функций как единый
объект. Это влияет на стиль импорта:
import validator from 'validator' — основной вариант
для ESMconst validator = require('validator') — стандарт для
CommonJSПри попытке импортировать отдельные функции напрямую:
import { isEmail } from 'validator';
поведение зависит от конфигурации сборщика и может требовать дополнительной настройки трансформации модулей.
При использовании bundler-подхода библиотека включается в финальный JavaScript-файл:
import validator from 'validator';
document.querySelector('form').addEventListener('submit', (e) => {
const email = e.target.email.value;
if (!validator.isEmail(email)) {
e.preventDefault();
}
});
В результате библиотека становится частью общего бандла и не требует отдельной загрузки через сеть.
Импорт validator.js зависит от окружения:
requireimportvalidatorЭти различия определяют архитектуру подключения и структуру конечного приложения.