Для доступа к аргументам командной строки, переданным программе, можно читать массив строк >process.argv
. В него также включены имя команды >node
и имя вашего скрипта, поэтому список аргументов начинается с индекса 2. Если файл >showargv.js
содержит только инструкцию >console.log(process.argv)
, его можно запустить так:
>$ node showargv.js one --and two
>["node", "/home/marijn/showargv.js", "one", "--and", "two"]
Все стандартные глобальные переменные JavaScript — >Array
, >Math
, >JSON
, также есть в окружении Node. Но там отсутствует функционал, связанный с работой браузера, например >document
или >alert
.
Объект глобальной области видимости, который в браузере называется >window
, в Node имеет более осмысленное название >global
.
Кроме нескольких упомянутых переменных, вроде >console
и >process
, Node держит мало функционала в глобальной области видимости. Для доступа к остальным встроенным возможностям вам надо обращаться к системе модулей.
Система CommonJS, основанная на функции >require
, была описана в главе 10. Такая система встроена в Node и используется для загрузки всего, от встроенных модулей и скачанных библиотек до файлов, являющихся частями вашей программы.
При вызове >require
Node нужно преобразовать заданную строку в имя файла. Пути, начинающиеся с >"/"
, >"./"
или >"../"
, преобразуются относительно пути к текущему модулю, где >"./"
означает текущую директорию, >"../"
– директорию выше, а >"/"
– корневую директорию файловой системы. Если вы запросите >"./world/world"
из файла >/home/marijn/elife/run.js
, Node попробует загрузить файл >/home/marijn/elife/world/world.js
. Расширение >.js
можно опускать.
Когда передаётся строка, которая не выглядит как относительный или абсолютный путь, то предполагается, что это либо встроенный модуль, или модуль, установленный в директории >node_modules
. К примеру, >require("fs")
выдаст вам встроенный модуль для работы с файловой системой, а >require("elife")
попробует загрузить библиотеку из >node_modules/elife/
. Типичный метод установки библиотек – при помощи NPM, к которому я вернусь позже.
Для демонстрации давайте сделаем простой проект из двух файлов. Первый назовём >main.js
, и в нём будет определён скрипт, вызываемый из командной строки, предназначенный для искажения строк.
>var garble = require("./garble");
>// По индексу 2 содержится первый аргумент программы из командной строки
>var argument = process.argv[2];
>console.log(garble(argument));
Файл >garble.js
определяет библиотеку искажения строк, которая может использоваться как заданной ранее программой для командной строки, так и другими скриптами, которым нужен прямой доступ к функции