require()/module.exportsimport/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 дает доступ к общим ресурсам процесса. Грамотное сочетание обоих подходов позволяет создавать хорошо структурированные, безопасные и гибкие приложения.