Прежде чем остановиться на отдельных характеристиках методов, дадим каждому из них определение.
В контексте Node.js require()
— это встроенная функция для включения внешних модулей, которые существуют в отдельных файлах. Оператор require() читает файл JavaScript, выполняет его, а затем возвращает экспортированный объект. Он позволяет добавлять встроенные модули NodeJS, те, что разработаны сообществом, а также локальные модули.
const myVar = require('http'); //to use built-in modules
const myVar2 = require('./myLocaModule'); //to use local modules
Операторы import()
и export()
используются для ссылки на модуль ES. Другие модули с такими типами файлов, как .json, нельзя импортировать с помощью этих операторов. Их можно использовать только в модулях ES, а спецификатором этого оператора может быть либо относительный путь типа URL, либо имя пакета. Оператор import также нельзя использовать во встроенных скриптах, если только такой скрипт не относится к типу module. Динамический импорт можно применять для скриптов, тип которых не является module.
const myVac = import("module-name");
Обычно операторы import()
и require()
вызываются в начале файла. Но вы можете вызвать require()
из любого места кода, в то время как операторы import()
могут быть определены только в начале. Определение оператора import()
в другом месте приведет к ошибке или автоматическому сдвигу в начало файла.
Оператор require()
можно вызывать условно в отличие от import()
. Взгляните на приведенный ниже код:
//require
if(user.id == 1){
const getBlogTitle = require(./blogDetails.js’);
}
//import
if(...) {
import ...; // Ошибка, не разрешается!
}
{
import ...; // Ошибка, мы не можем поместить импорт ни в один блок.
}
Существует способ динамического вызова импорта, который отличается от условного, но может помочь в решении проблем асинхронной загрузки.
//Динамический импорт
let {hi, bye} = await import('./say.js');
hi(); // Hello!
bye(); // Bye!
//или
let say = await import('./say.js');
say.hi(); // Hello!
say.bye(); // Bye!
Операторы require() вызываются синхронно один за другим, в то время, как import()
вызываются асинхронно, и, как известно, работают лучше, чем require()
в крупномасштабных приложениях.
Материал был взят с сайта: nuancesprog.ru
Переменные в Javascript позволяют хранить только одни данные за раз. Однако, учитывая, что часто бывает полезно манипулировать большим количеством данных, концепции переменной иногда недостаточно, потому что становится трудно управлять большим количеством различных переменных.
В очередной раз открыв код коллег и ужаснувшись, я решил написать эту статью. Надеюсь для кого-нибудь это будет полезным, заодно и мне будет проще новичкам объяснять что у них в коде не так, просто кинув ссылку на эту статью.
Написание хорошо переиспользуемого кода иногда может быть сложным. Мы можем программировать на разных языках и придерживаться определенных ограничений или шаблонов, которые несут смысл от конкретного контекста.