Нод состоит из модулей.
Три вида модулей:
*.js Server-side javascript
*.node Скомпилированный модуль на C
*.json Данные в формате json, которые можно подключить и использовать
Чтобы подключить модуль в скрипт нужно воспользоваться функцией require:
var fs = require("fs");
Когда мы указываем, что нам что-то нужно, в первую очередь нод смотрит а нет ли такого кор-модуля, модуля который живет в папке модулей установленой инстанции нода.
Кроме кор-модуля таким образом можно также подключить файл со скриптом, тогда передается на имя, а путь к скрипту.
Также мы можем указать имя модуля, который живет не в ноде, а в дериктории node_modules, которую нод будет искать начиная с поточной и до рута файловой системы.
Если же мы не хотим создавать такую директорию, но хочем пользоваться указанием просто имени, а не всего пути, нашего скрипта который часто используется в нашем проекте, мы можем перед выполнением приложению установить NODE_PATH в поточную директорию.
require - все вызовы в приложении будут возвращать один и тот же обьект, который был создан при первом же вызове. Другой может быть возвращен, если в поточной директории, есть папка node_modules и в ней находится этот модуль.
Теперь поговорим немного о том, что же передается при подключении скприта. Все переменные остаются локальными. Но в любом выполняемом скрипте доступна переменная module, которая представляет поточный файл, в ней можем найти путь к файлу, какие модули подключены, а также переменную через которую мы можем передать что-то во внешний мир - когда подключают нас: module.exports
Эта переменная представлена двумя другими ссылками на нее:
exports - недостаток в том, что мы не можем передать во вне не пакет, а только представление модуля в виде одной функции-класса, мы так просто переопределим эту ссылку на нашу локальную
Есть также global.User = User - этим мы делаем юзера доступным во всех сприптах, которые будет выполнены за жизненный цикл приложения, но особого смысла это не имеет и этим практически никто не пользуется.
Модули могут быть представлены либо просто файлом mymodule.js либо каталогом mymodule, в котором обязательно должен быть файл index.js, который и подгружается при обращении к модулю, другие же файлы каталога обычно используются этим индексом.
Три вида модулей:
*.js Server-side javascript
*.node Скомпилированный модуль на C
*.json Данные в формате json, которые можно подключить и использовать
Чтобы подключить модуль в скрипт нужно воспользоваться функцией require:
var fs = require("fs");
Когда мы указываем, что нам что-то нужно, в первую очередь нод смотрит а нет ли такого кор-модуля, модуля который живет в папке модулей установленой инстанции нода.
Кроме кор-модуля таким образом можно также подключить файл со скриптом, тогда передается на имя, а путь к скрипту.
Также мы можем указать имя модуля, который живет не в ноде, а в дериктории node_modules, которую нод будет искать начиная с поточной и до рута файловой системы.
Если же мы не хотим создавать такую директорию, но хочем пользоваться указанием просто имени, а не всего пути, нашего скрипта который часто используется в нашем проекте, мы можем перед выполнением приложению установить NODE_PATH в поточную директорию.
export NODE_PATH=. ; node app.jsКеширование
require - все вызовы в приложении будут возвращать один и тот же обьект, который был создан при первом же вызове. Другой может быть возвращен, если в поточной директории, есть папка node_modules и в ней находится этот модуль.
Теперь поговорим немного о том, что же передается при подключении скприта. Все переменные остаются локальными. Но в любом выполняемом скрипте доступна переменная module, которая представляет поточный файл, в ней можем найти путь к файлу, какие модули подключены, а также переменную через которую мы можем передать что-то во внешний мир - когда подключают нас: module.exports
Эта переменная представлена двумя другими ссылками на нее:
exports - недостаток в том, что мы не можем передать во вне не пакет, а только представление модуля в виде одной функции-класса, мы так просто переопределим эту ссылку на нашу локальную
exports = User; // была ссылка на module.exports, а стала на User //Чтобы передать User нужно сделать вот так явно module.exports = User;this - недостаток в том, что это сильно не явно, мы можем ее пользоваться только в верхнем уровне вложенности, во всех функциях сприптах зис будет означать контекст функции, а не експорт модуля.
Есть также global.User = User - этим мы делаем юзера доступным во всех сприптах, которые будет выполнены за жизненный цикл приложения, но особого смысла это не имеет и этим практически никто не пользуется.
Модули могут быть представлены либо просто файлом mymodule.js либо каталогом mymodule, в котором обязательно должен быть файл index.js, который и подгружается при обращении к модулю, другие же файлы каталога обычно используются этим индексом.
Комментариев нет:
Отправить комментарий