Вы знаете, как, когда вы запускаете JavaScript в браузере, у вас есть доступ к переменным, таким как "window" или Math? Вам не нужно объявлять эти переменные, они написаны для использования в любое время.
Хорошо, когда вы запускаете файл в среде Node.js, есть переменная, которую вы можете использовать. Это называется "модуль". Это объект. У него есть свойство, которое называется «экспорт». И это работает так:
В файле, который мы назовем example.js, вы напишите:
example.js
module.exports = "some code";
Теперь вы хотите эту строку "некоторый код" в другом файле.
Мы назовем другой файл otherFile.js
В этом файле вы пишете:
otherFile.js
let str = require('example.js')
Эта инструкция require () отправляется в файл, который вы в нее помещаете, находит все данные, хранящиеся в свойстве module.exports. Часть вашего кода let str = ... означает, что все, что возвращает оператор require, сохраняется в переменной str.
Итак, в этом примере конечный результат состоит в том, что в otherFile.js у вас теперь есть это:
let string = "некоторый код";
let str = ('./example.js').module.exports
Примечание:
имя файла, которое записывается внутри оператора require: если это локальный файл, это должен быть путь к файлу example.js. Кроме того, расширение .js добавлено по умолчанию, поэтому мне не пришлось его писать.
Вы делаете нечто подобное, когда требуются библиотеки node.js, такие как Express. В файле express.js есть объект с именем 'module' со свойством с именем 'exports'.
Итак, это выглядит примерно так: под капотом (я новичок, поэтому некоторые из этих деталей могут быть не точными, но это должно показать концепцию:
express.js
module.exports = function() {
//It returns an object with all of the server methods
return {
listen: function(port){},
get: function(route, function(req, res){}){}
}
}
Если вам требуется модуль, он выглядит следующим образом:
const moduleName = require ("module-name");
Если вам требуется локальный файл, он выглядит следующим образом:
const localFile = require ("./ local-file");
(обратите внимание на ./ в начале имени файла)