require()
/module.exports
import
/export
// moduleA.js
const secret = 'moduleA secret';
module.exports = { public: 'data' };
// moduleB.js
const a = require('./moduleA');
console.log(a.public); // 'data'
console.log(a.secret); // undefined
global
объект в Node.jsSharedArrayBuffer
// file1.js
global.sharedData = { key: 'value' };
// file2.js
require('./file1');
console.log(global.sharedData); // { key: 'value' }
process.env.DB_PASSWORD = 'secret'; // Доступно во всем приложении
node app.js --port=3000
console.log(process.argv); // Доступно везде
Критерий | Нативный Test Runner | Jest | Mocha |
---|---|---|---|
Скорость | Средняя | Быстрый | Медленный |
Функциональность | Базовая | Полная | Средняя |
Интеграция | Ограниченная | Отличная | Хорошая |
Память | Проблемы | Оптимизирована | Зависит от конфигурации |
// config.js (module-based экспорт)
module.exports = {
dbUrl: process.env.DB_URL || 'localhost',
port: parseInt(process.env.PORT || '3000')
};
// app.js
const config = require('./config');
// Используем config.port и config.dbUrl
// Плохо: загрязнение global
global.someService = new Service();
// Лучше: явный экспорт через модуль
module.exports = new Service();
Module-Based и Process-Based модели прав доступа в Node.js служат разным целям. Module-Based обеспечивает четкую изоляцию и безопасность, в то время как Process-Based дает доступ к общим ресурсам процесса. Грамотное сочетание обоих подходов позволяет создавать хорошо структурированные, безопасные и гибкие приложения.