Установка JavaScript — JS: Настройка окружения
Начнем с установки Node.js и знакомства с REPL.
Если на вашем компьютере пока не стоит Node.js, то выполните установку по нашей инструкции. После установки перезагрузите компьютер.
Теперь убедимся в том, что Node.js установился и работает. Для этого наберите в терминале node —version . Вывод должен быть примерно такой:
Интерактивный запуск кода
Самое время запустить код на JavaScript с помощью такой команды:
Запуск программы node запустит REPL — это программа, которая работает как командная оболочка. Она:
- Ожидает ввод от пользователя (Read)
- Выполняет введенный код (Eval)
- Печатает на экран результат (Print)
- Затем снова входит в режим ожидания (Loop)
REPL — это среда, похожая на обычный терминал, только вместо Bash-команд мы вводим в нее код на JavaScript. С помощью REPL можно набрать строчку кода и тут же выполнить ее, нажав Enter :
Такой способ помогает быстро проверять гипотезы, отлаживать код и делать простые вычисления.
REPL позволяет использовать переменные и запоминает предыдущий ввод:
Чтобы выйти из REPL, воспользуйтесь одним из этих вариантов:
- Наберите команду .exit и нажмите Enter
- Два раза нажмите CTRL + C
- Нажмите CTRL + D
После этого мы окажемся внутри обычной командной оболочки:
Обратите внимание на разницу между понятиями REPL Node.js и командная оболочка. Когда мы набираем node, то запускается программа. Она не имеет никакого отношения к оболочке, в которой она запустилась.
Если мы попробуем ввести в этот REPL команду для командной оболочки, это приведет к разным синтаксическим ошибкам:
Пример установки и запуска Node.js на Ubuntu
Запуск кода из файлов
Для полноценной разработки REPL уже не подходит — в нем становится неудобно. Поэтому на практике разработчики записывают код в обычные текстовые файлы на своем компьютере.
Какой редактор для этого использовать? Сейчас самым распространенным и удобным редактором для кода считается VS Code. Скачайте его, установите и поизучайте интерфейс. У него много встроенных возможностей, которые расширяются плагинами.
Чтобы запустить VS Code из терминала, используйте команду code и дополнительно укажите директорию с проектом. Например, такой командой можно открыть редактор в текущей директории:
Откройте редактор, создайте в нем файл с именем index.js и следующим содержимым:
VS Code имеет встроенные механизмы, которые запускают код автоматически. Но пока вы только учитесь, поэтому стоит научиться запускать код вручную.
Для этого откройте терминал в той директории, где вы создали файл в редакторе. В терминале выполните такую команду:
Javascript запуск в windows
Хотя Node известен как серверная платформа, интерес к его использованию для создания настольных приложений OS Windows быстро растет. Привязки существуют для наборов инструментов GUI, таких, как GTK +, QT и Cocoa. Однако одним из преимуществ Node для веб-разработки является возможность применения одного и того же языка, как на сервере, так и на клиенте. Он хорошо функционирует вместе с оболочкой веб-браузера для разработки кроссплатформенных настольных приложений и игр JS Windows, использующих WebGL с HTML, CSS и JS.
Краткая история кода
JavaScript всегда был языком программирования или, скорее, сценарием в интернете. Он был впервые представлен в 1995 году и тогда не назывался JS Windows. Во время своей ранней разработки он носил имя Mocha, который представлял собой игру слов на Java, популярнейшем языке программирования для веб-серверов того времени. Затем он был изменен на JavaScript в веб-браузере Netscape Navigator. Наконец, позже он был переименован в JavaScript с очень ограниченной областью применения.
Благодаря улучшениям, внесенным в спецификации ECMAScript, JS стал современным языком программирования браузеров. Благодаря вседоступности и повсеместности, он стал одним из трех столпов интернета наряду с HTML и CSS. Тем не менее, современный уровень использования ИТ-технологий требует запуска за пределами браузера.
Так, в 2009 году по инициативе Райана Даля родился Node — бесплатная среда исполнения JavaScript с открытым исходным кодом, которая позволяет запускать JS за пределами браузера в виде JS Windows. Написанный JS-код работает в любой ОС, в которой установлен Node, что делает кроссплатформенный аспект интернета доступным для всех.
Принцип функционирования
Node.js предоставляет API, которые недоступны в среде браузера. Они имеют меньше ограничений. Например, используется API файловой системы для доступа и управления ОС. Он предоставляет разработчику основные операции CRUD: создание, чтение, обновление и удаление. По соображениям безопасности это невозможно выполнить в браузерах. По сути, JavaScript становится более мощным и опасным приложением.
Есть моменты, когда пользователю нужно включить внешний код в собственную программу. Например, если при использовании jQuery вставляют тег removed, который импортирует функциональные возможности приложения. То же самое касается обычных сценариев, которые пользователи пишут самостоятельно. Можно просто импортировать любой файл JS с removed тегом. Однако это может стать громоздким и придется вручную управлять сотнями зависимостей.
В этом случае Node.js приходит на помощь. Каким образом? Перед тем как установить Node JS на Windows или другую ОС, от пользователя не потребуется никакой модернизации устройств, поскольку ПО предоставляет простой способ управления зависимостями. Он поставляется с менеджером пакетов (NPM). Через него внешние данные можно импортировать в пользовательские проекты как зависимости.
Области применения пакетов:
- Серверы.
- Управление базой данных.
- Веб-приложения.
- Настольные и мобильные приложения.
- Робототехника.
- Быстрое выполнение кода.
- Высокая масштабируемость.
- Многофункциональность и асинхронность.
- Отсутствие буферизации.
Сравнение: Node.js и JavaScript
Браузеры имеют встроенный интерпретатор для JS. Node — это одновременно и среда для него, включает в себя набор библиотек для использования JS в качестве языка программирования общего назначения с акцентом на асинхронность и неблокирующие операции. На самом деле, код запускает тот же интерпретатор, что и Google Chrome (V8), но предоставляет другой набор библиотек и другую среду выполнения. Он также включает в себя систему управления пакетами (NPM) и несколько языковых расширений, которых нет в браузерах, например, модули.
Таким образом, интерпретатор JS в Google Chrome и аналогичная программа JS приложений для Windows в Node по сути одинаковы. Разница в том, что в браузере конечной целью является изменение содержимого веб-страницы — текста, графики, таблиц стилей и других, а в Js — запуск кода общего назначения, который может выполнять любые действия (от активации веб-сервера до манипулирования файлами).
Настольные утилиты
Любое существующее веб-приложение подходит для того, чтобы стать таковым. Можно создать его на основе кода, который выиграет от интеграции в систему пользователя, начиная с уведомлений при запуске и заканчивая взаимодействием с файлами и другими нужными программами. Некоторые просто предпочитают иметь определенные приложения постоянно на своей машине, доступные независимо от того, есть у них соединение или нет.
Легко создавать мощные настольные утилиты с использованием веб-технологий, например, с NW.js.Такие программы существуют уже давно. В Шанхае в 2011 году Роджер Ванг из Центра технологий открытого исходного кода Intel написал node-webkit — модуль для проверки концепции, который позволяет пользователю создавать окно браузера и Node.
После некоторого прогресса и перехода от WebKit и Chromium, ПО с открытым исходным кодом, на котором основан Google Chrome, к проекту присоединился Чен Чжао. Вместе они создали среду выполнения приложений на Node и Chromium. Проект node-webkit стал довольно популярным и позже был переименован в NW.js.
Загружая его, пользователь на самом деле запускает Chromium плюс Node.js, а также сам код приложения. Это не только означает, что ПО для настольного компьютера может быть создано с использованием HTML, CSS и JavaScript, но оно также будет иметь доступ ко всем API-интерфейсам Node, например, для чтения и записи на диск.
Оба проекта построены на основе Chromium и Node, так что можно писать настольные приложения, используя его на системном уровне и веб-технологии для уровня GUI.
У Electron есть некоторые преимущества:
- Более популярен среди разработчиков.
- Имеет лучшую корпоративную поддержку. Github и Microsoft отстают от Electron, а NW.js спонсируется Intel.
- Предлагает механизм автоматического обновления из коробки.
- Процесс его сборки немного проще, потому что не нужно объединять весь Chromium.
- Поддержка устаревших систем: Windows XP и более старые версии Mac OS. Несмотря на то, что Microsoft отказалась от поддержки XP, но многие пользователи все еще используют ее, поэтому такой сервис им крайне необходим.
- Главная запись приложения может быть как HTML-страницей, так и файлом Node.js.
- Он более ориентирован на браузер.
- Подход к нему намного проще и понятнее. Это дает пользователям много вариантов.
- Отдельный и смешанный контексты.
- Он имеет простой, но мощный механизм в отношении контекста JavaScript, а «Электрон» имеет два отдельных контекста основной и рендеринг, которые полностью разделены.
- Расширения Chrome и поддержка API Chrome. Более того, можно запускать приложения и расширения «Хром» с помощью NW.js. «Электрон» не может и не будет делать это.
- Поддерживает файлы PDF «из коробки», используя собственный плагин Chrome PDF.
- Имеет инструмент защиты источника. Это позволяет скомпилировать JavaScript в байт-код V8.
- Использует последнюю версию Chromium
- Можно использовать ПО без Dev Tools.
- Поддерживает ключи командной строки Chromium. Для получения дополнительной информации необходимо обратится к NW.js документации. Эти переключатели могут быть использованы для настройки производительности.
- Лучшая модель безопасности для настольных приложений. Таковая в Chrome (и веб-браузерах в целом) немного ограничена из-за характера пользовательского отношения к веб-сайтам. NW.js предоставляет другую модель, которая позволяет обойти все ограничения безопасности, такие как, например, песочница.
Начало работы с программой
Можно скачать две версии Node.js. На начальном этапе не имеет значения, какую из них выбрать. Версия долгосрочной поддержки считается самой стабильной. Она обновляется только при необходимости исправления ошибок и базовым обслуживанием. Эта версия предпочтительна в производственных условиях и значительно стабильнее. Она часто снабжается новыми функциями.
Благодаря более быстрому циклу обновления, у ПО есть самые современные API и технологии для разработчиков. После прохождения процесса установки его можно проверить, открыв командную строку.
Когда программа будет активирована, можно запустить интерпретатор JavaScript. На данный момент Node позволяет писать JS в консоли в DevTools, в командной строке. Для того чтобы выйти из интерпретатора, дважды нажимают «Ctrl + C» вводят exit.
Можно ввести весь JavaScript, который нужен в интерпретаторе. Сначала удостоверяются, что пользователь находится в каталоге с файлом, прописывают: cd /path/to/the/file и ожидают, пока не откроется нужный каталог. Далее набирают «node» для запуска файла. Например, прописывают «node filename.js» для активации «filename.js». Можно опустить .js расширение файла, набрав «node filename». Node подразумевает, что «filename» — это JS файл.
Основы применения NPM
Node.js позволяет запускать JavaScript за пределами браузера. Для того чтобы помочь управлять внешними зависимостями, установка поставляется с NPM. Помимо хранения метаданных проекта, package.json файл также отслеживает эти зависимости. Официальная документация по Node является основным справочным материалом для всего, что касается ПО.
Код можно разделить на импортируемые и экспортируемые модули. NPM предоставляет более простой способ управления зависимостями. Допустим, нужно использовать Lodash в коде. Сначала инициализируют новый проект, запустив npm init в каталоге проекта. По запросу заполняют необходимую информацию о package.json. Здесь хранятся все метаданные.
Загрузка Lodash
Предполагая, что пользователь находится в правильном каталоге, выполняют это, запустив npm install lodash. Зависимость загружается в папку с именем node_modules. Она имеет тенденцию накапливать много файлов, как только вводятся больше зависимостей в проект. После установки Lodash создают JS файл в текущем каталоге, который использует Lo Dash. В нем импортируют Lodash, вызвав require функцию.
Как упоминалось ранее, Node.js предоставляет API. Это встроенный модуль, который поставляется с каждой установкой. Можно импортировать этот код, также вызывая require функцию. Запуск JS файла приведет к записи Hello World в текст с именем dev to.txt.
Этот fs.writeFile метод является лишь одной из многих функций fs, предлагаемых модулем. Все доступные методы и свойства API описаны в документации.
Экспорт модулей
Если потребуется импортировать собственный код из разных файлов, JS сначала экспортируют код файла JavaScript. Затем, используя require функцию, загрузит его в другой. На самом деле, это не так запутано, как кажется.
Скажем, существует четыре JS файла в одном каталоге с именем index.js, add.js, username.js и dog.js. Задача add.js состоит в том, чтобы предоставить функцию, которая возвращает сумму двух входных данных. Можно экспортировать ее, назначив add параметр module.exports свойству.
Работа username.js состоит в том, чтобы экспортировать строку Some Dood. Или все, что угодно. Имеется в виду, что можно присвоить значение любого типа module.exports. Это означает, что экспортируют строки, числа, логические значения, символы, функции, классы, массивы и объекты.
Можно вызвать эти три файла index.js, используя require функцию. Нужно предоставить абсолютные или относительные пути к ним, чтобы явно указать Node.js, что импортируют они из файлов, а не из встроенных модулей или из node_modules папки проекта, при этом можно опустить .js расширение. Функция «required» возвращает фактическое значение, которое было назначено на соответствующий module.exports файл.
Установка и запуск приложения
Очень простой первый шаг в мир JS выполняют, используя командную строку и прописывая первый бит кода Node.
Алгоритм запуска JS скрипта Windows:
- Загрузить последнюю версию программы, например, V6.2.2.
- Устанавливают Node npm install, следуя инструкциям.
- После завершения активации находят значок в параметре поиска Windows и открывают программу.
- Теперь можно продолжить, сделать некоторые вычисления и попытаться напечатать сообщения на консоли.
- Действия покажут, что узел успешно установлен в системе и работает должным образом.
- Нажимают Ctrl + C дважды, чтобы выйти из узла и снова получить путь к каталогу.
- Настраивают среду командной строки Windows для приложения.
- Загружают и запускают установкой с сайта разработчика JS Windows open.
- Запускают cmd.exe.
- Нажимают Windows + R на клавиатуре.
- Набирают cmd и нажимают ввод.
- Проверяют, успешно ли установлен узел, набрав node -v, он должен ответить «v #. #. #», где «#» означает число
- Перезагружают компьютер, если узел -v не отвечает правильно.
- Пробуют автоматически установить все зависимости с помощью команды npm install.
- Запускают сервер, выполнив «приложение узла» в корневой папке сервера.
Если предыдущий шаг не удался, устанавливают зависимость вручную, выполнив следующие команды:
- «npm install»;
- «npm install express -g»;
- «npm install url -g»;
- «npm install fresh -g»;
- «npm install cookie -g»;
- «npm install crc -g»;
- «npm install send -g»;
- «npm install connect -g»;
- «npm install commander -g».
Настройка Node JS Windows 10
Разработка с использованием js для Windows раньше была довольно громоздкой, но сейчас она стала намного проще. В сети имеются новейшие инструменты и приложения с возможностью использовать 64-битной версии.
- Устанавливают Git, используя настройки по умолчанию.
- Местом установки выбирают папку Projects в домашнем каталоге, если ее нет, то предварительно создают для проекта.
- Нажимают правой кнопкой мыши на папку, выбирают Git bash here и проверяют версию git, прописывая: git-version.
- Создают .bash_profile, который будет выполняться при открытии окна bash. Это не окно cmd.exe, поэтому проверяют параметры. Нажимают на значок в верхнем левом углу. Можно вставить текст с помощью средней кнопки мыши, как на популярных терминалах Linux.
- Устанавливают Node.js в Windows 10, используя версию LTS. Не рекомендуется активировать несколько версий одновременно, поскольку менеджер узлов (NVM) официально не поддерживает Windows, но, тем не менее, есть альтернативы, такие, как nvm-windows или nodist.
- Node поставляется с npm, менеджером пакетов, который доступен после установки.
- Открывают оболочку bash и проверяются версии с помощью: npm —version. Если npm равен 2.x, следует обновить его до версии 3, что решает многие проблемы, например, обрабатывает зависимости от пиров.
- Находят Powershell в меню «Пуск», запускают его от имени администратора и выполняют установку npm — менеджера пакетов в Windows 10.
- Активируют Visual Studio и Python. Пакеты узлов обычно зависят от пакетов с собственным кодом, поэтому необходимо установить Visual Studio.Node-gyp — это оболочка для Python GYP. Он генерирует файлы проектов для Gcc, XCode и Visual Studio.
- Устанавливают Python, скачав ветку для x64. Можно перейти с настройками по умолчанию, а также выбрать опцию «Добавить в путь». Это добавит двоичный файл Python в глобальный путь, что означает, что в конечном итоге придется выйти и снова войти в систему.
- Устанавливают Visual Studio.
Обычно проекты Node.js сильно зависят от переменных сред. В разделе сценариев package.json можно использовать локально установленные модули узлов. Рекомендуют не активировать пакеты глобально с npm –g.
Можно подвести итог: с Node создание настольных приложений с применением HTML, CSS и JavaScript выглядит многообещающе. А такие утилиты, как Spotify, Light Table и Brackets используют средства визуализации браузера с открытым исходным кодом. С помощью node-webkit и atom-shell разработчики могут легко импортировать веб-приложения на рабочий стол и применять модули Node и npm в интерфейсе с учетом location JS Windows.
Run JavaScript in Windows
I thought for some simple tests that just run a few commands i would try using some JavaScript and run it from the command line in Windows XP.
So for a quick test I created a script
Then tried to run it
Google has not helped and I am sure I am missing something silly, can any of you guys shed any light on why this simple script doesn’t run?
5 Answers 5
You are calling a function called alert , but this is not part of JavaScript (it is part of DOM 0 and is provided by browsers)
Since you haven’t defined it, you are trying to treat undefined as a function, which it isn’t.
Qnan suggests using the Echo method instead.
Try a named function replace since WSH does not support the window.alert method.
A good approach is to redirect all of the usual output like in a following examples. It will allow you to test JavaScript designed for web without needing to rewrite.
test.js
You can call the script like this:
which will give you:
alert is a method of the browswer’s window object. The Window’s scripting host does not supply such an object.
Microsoft’s JScript runtime compiler does not provide the native JavaScript popups as found in the DOM (Document Object Model) which is supported by all major browsers today. However, this can be done by wrapping a function (in your case alert ) around the native MessageBox found in WSH (Windows Scripting Host) as with any other scripting language supported with WSH.
But, just to give you an easier option. try DeskJS. It’s a new console-style app for Windows that’s designed to run pure JavaScript (ECMAScript 5.1 as of currently) away from the browser and supports all the basic JavaScript popup boxes together with other nifty additions to the language. You may just love it more than the browser’s console.
-
The Overflow Blog
Linked
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
Site design / logo © 2023 Stack Exchange Inc; user contributions licensed under CC BY-SA . rev 2023.6.8.43486
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Как написать и запустить свою первую программу на Node.js
Node.js – это популярная открытая среда выполнения, которая может запускать JavaScript вне браузера при помощи механизма V8. Механизм V8 используется для обработки JavaScript в браузере Google Chrome. Среда Node обычно используется для разработки инструментов командной строки и веб-серверов.
Умея работать в Node.js, вы сможете писать код для фронтенда и бэкенда на одном языке. Так будет проще переключаться между контекстами. Кроме того, вы сможете использовать одни и те же библиотеки на фронтенде и бэкенде.
Благодаря поддержке асинхронного выполнения Node.js отлично справляется с задачами с высокой нагрузкой I/O, потому он отлично подходит для веб-разработки. Приложения реального времени (например, видео-стримы или приложения, которые непрерывно отправляют и получают данные) могут работать более эффективно, если написать их в Node.js.
В этом мануале вы узнаете, как написать свою первую программу в среде выполнения Node.js. Вы познакомитесь с некоторыми концепциями, специфичными для Node. Мы создадим программу, которая поможет пользователям проверять переменные среды в своей системе. Для этого мы научимся выводить строки на консоль, собирать пользовательский ввод и получать доступ к переменным среды.
Требования
- Установка Node.js (в данном мануале мы используем версию 10.16.0). Чтобы установить эту среду выполнения на macOS, обратитесь к мануалу Установка Node.js и настройка локальной среды разработки в macOS. Для Ubuntu выполните мануал Установка Node.js в Ubuntu 18.04 (рекомендуем устанавливать через PPA).
- Базовые навыки работы с JavaScript. Полезные руководства есть в нашем Информатории.
1: Вывод на консоль
Чтобы создать простейшую программу “Hello, World!”, откройте текстовый редактор (например, nano) и создайте новый файл:
В файл введите следующий код:
Объект console в Node.js предоставляет простые методы для записи в stdout, stderr или в любой другой поток Node.js (что в большинстве случаев является командной строкой). Метод log выводит в поток stdout, так что вы можете увидеть его в своей консоли.
В контексте Node.js потоки – это объекты, которые могут принимать (например поток stdout) или выводить данные (например сетевой сокет или файл). В случае потоков stdout и stderr любые отправленные им данные будут показаны в консоли. Одна из замечательных особенностей потоков заключается в том, что они легко перенаправляются, и вы можете, например, просто перенаправить вывод своей программы в файл.
Сохраните и закройте nano, нажав сочетание клавиш CTRL + X, при появлении запроса на сохранение файла нажмите Y. Теперь ваша программа готова к запуску.
2: Запуск программы
Чтобы запустить свою новую программу, используйте такую команду:
Программа hello.js запустится и выведет такой результат:
Интерпретатор Node.js прочитал файл и выполнил строку:
вызвав метод log глобального объекта console. Строка “Hello World” была передана в качестве аргумента функции log.
Кавычки необходимы в коде, чтобы определить границы строки, но в результате они не выводятся на экран.
Убедившись, что программа работает, мы можем сделать ее более интерактивной.
3: Получение пользовательского ввода с помощью аргументов командной строки
Каждый раз, когда вы запускаете программу Node.js «Hello, World!», она выдает один и тот же результат. Чтобы сделать программу более динамичной, давайте научим ее собирать информацию от пользователя и отображать ее на экране.
Инструменты командной строки обычно принимают различные аргументы, которые изменяют их поведение. Например, команда node с аргументом –version печатает установленную версию, а не запускает интерпретатор. На этом этапе мы научим код принимать пользовательский ввод с помощью аргументов командной строки.
Создайте новый файл arguments.js в nano:
Введите следующую строку:
Объект process – это глобальный объект Node.js, который содержит функции и данные, связанные с текущим запущенным процессом Node.js. Свойство argv – это массив строк, содержащий все аргументы командной строки, заданные программе.
Сохраните и закройте файл.
Теперь при запуске программы можно использовать аргументы:
node arguments.js hello world
Вы получите такой вывод:
[ ‘/usr/bin/node’,
‘/home/8host/first-program/arguments.js’,
‘hello’,
‘world’ ]
Первым аргументом в массиве process.argv всегда является местоположение двоичного файла Node.js, с помощью которого выполняется программа. Второй аргумент – это всегда местоположение запускаемого файла. Остальные аргументы – это то, что ввел пользователь, в данном случае hello и world.
Нас больше всего интересуют не те аргументы, которые по умолчанию предоставляет Node.js, а аргументы, введенные пользователем. Откройте файл arguments.js в редакторе:
Измените console.log (process.arg); таким образом:
Поскольку argv является массивом, вы можете использовать встроенный в JavaScript метод slice, который возвращает набор элементов. Используя функцию slice с аргументом 2, вы получаете все элементы argv, которые идут в массиве после второго элемента, то есть аргументы, введенные пользователем.
Перезапустите программу с помощью команды node и тех же аргументов, что и в прошлый раз:
node arguments.js hello world
Теперь вывод выглядит так:
Итак, программа может собирать пользовательские данные, давайте теперь научимся собирать данные из среды программы.
4: Доступ к переменным среды
Переменные среды – это данные типа «ключ-значение», хранящиеся вне программы и предоставляемые операционной системой. Как правило, они устанавливаются системой или пользователем и доступны всем запущенным процессам для конфигурации или определения состояния. Вы можете использовать объект process, чтобы получить доступ к переменным среды.
Используйте nano для создания нового файла environment.js:
Добавьте следующий код:
Объект env хранит все переменные среды, которые доступны, когда Node.js запускает программу.
Сохраните и закройте файл, а затем запустите файл environment.js с помощью команды node.
После запуска программы вы должны увидеть подобный вывод:
…
COLORTERM: ‘truecolor’,
SSH_AUTH_SOCK: ‘/run/user/1000/keyring/ssh’,
XMODIFIERS: ‘@im=ibus’,
DESKTOP_SESSION: ‘ubuntu’,
SSH_AGENT_PID: ‘1150’,
PWD: ‘/home/8host/first-program’,
LOGNAME: ‘8host’,
GPG_AGENT_INFO: ‘/run/user/1000/gnupg/S.gpg-agent:0:1’,
GJS_DEBUG_TOPICS: ‘JS ERROR;JS LOG’,
WINDOWPATH: ‘2’,
HOME: ‘/home/8host’,
USERNAME: ‘8host’,
IM_CONFIG_PHASE: ‘2’,
LANG: ‘en_US.UTF-8’,
VTE_VERSION: ‘5601’,
CLUTTER_IM_MODULE: ‘xim’,
GJS_DEBUG_OUTPUT: ‘stderr’,
LESSCLOSE: ‘/usr/bin/lesspipe %s %s’,
TERM: ‘xterm-256color’,
LESSOPEN: ‘| /usr/bin/lesspipe %s’,
USER: ‘8host’,
DISPLAY: ‘:0’,
SHLVL: ‘1’,
PATH:
‘/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin’,
DBUS_SESSION_BUS_ADDRESS: ‘unix:path=/run/user/1000/bus’,
_: ‘/usr/bin/node’,
OLDPWD: ‘/home/8host’ >
Имейте в виду, что многие переменные среды зависят от конфигурации и настроек вашей системы, и ваши выходные данные могут существенно отличаться от того, что вы видите здесь.
Вместо длинного списка переменных среды вам может потребоваться получить конкретную переменную. Давайте попробуем это сделать.
5: Доступ к конкретной переменной среды
На этом этапе мы научимся просматривать переменные среды с помощью глобального объекта process.env и выводить их значения на консоль.
Объект process.env выполняет простое сопоставление имен переменных среды и их значений, хранящихся в виде строк. Как и с другими объектами в JavaScript, вы получите доступ к отдельному свойству, ссылаясь на его имя в квадратных скобках.
Откройте файл environment.js для редактирования:
Измените console.log (process.env) так:
Сохраните файл и закройте файл. Теперь запустите программу environment.js:
Вывод теперь выглядит так:
Вместо того чтобы отображать весь объект, вы теперь выводите только свойство HOME для process.env, в котором хранится значение переменной $HOME.
Опять же, ваш вывод, вероятно, будет отличаться от того, что вы видите здесь, потому что он специфичен для вашей системы.
Теперь, когда вы можете извлекать конкретные переменные среды, вы можете улучшить свою программу: она может запрашивать у пользователя переменную, которую он хочет получить.
6: Извлечение аргумента в ответ на ввод пользователя
Давайте используем возможность чтения аргументов командной строки и переменных среды для создания утилиты, которая выводит значение переменной среды на экран.
С помощью nano создайте новый файл echo.js:
Добавьте следующий код:
const args = process.argv.slice(2);
console.log(process.env[args[0]]);
В первой строке echo.js в переменной args сохраняются все аргументы командной строки, предоставленные пользователем. Вторая строка отображает переменную среды, хранящуюся в первом элементе args, то есть первый аргумент командной строки, предоставленный пользователем.
Сохраните и закройте файл. Запустите программу:
node echo.js HOME
Аргумент HOME был сохранен в массиве args, который затем использовался для поиска значения в среде через объект process.env.
Теперь вы можете получить доступ к значению любой переменной среды в вашей системе. Чтобы убедиться в этом, попробуйте просмотреть следующие переменные: PWD, USER, PATH.
Получение отдельных переменных – это хорошо, но лучше бы позволить пользователям указывать количество переменных.
7: Просмотр нескольких переменных среды
В настоящее время приложение может выдавать только одну переменную среды за один раз. Было бы полезно научить программу принимать несколько аргументов командной строки и выводить соответствующие значения. Используйте nano, чтобы отредактировать echo.js:
Отредактируйте файл так:
const args = process.argv.slice(2);
args.forEach(arg => <
console.log(process.env[arg]);
>);
Метод forEach – это стандартный метод JavaScript для всех объектов массива. Он принимает функцию обратного вызова, которая используется при выполнении итерации по каждому элементу массива. Мы используем forEach для массива args, предоставляя ему функцию обратного вызова, которая выводит значение текущего аргумента в среде.
Сохраните и закройте файл. Теперь перезапустите программу с двумя аргументами:
node echo.js HOME PWD
Вы должны увидеть следующий вывод:
Функция forEach обеспечивает вывод каждого аргумента командной строки в массиве args.
Теперь программа может извлекать переменные, которые запрашивает пользователь. Осталось только разобраться с неверным пользовательским вводом.
8: Обработка неправильного пользовательского ввода
Попробуйте передать программе неправильный аргумент:
node echo.js HOME PWD NOT_DEFINED
Вывод будет выглядеть примерно так:
/home/8host
/home/8host/first-program
undefined
Первые две строки правильные, а последняя строка имеет значение undefined. В JavaScript неопределенное значение undefined означает, что переменной или свойству не было присвоено значение. Поскольку NOT_DEFINED не является допустимой переменной среды, ее значение отображается как undefined.
Лучше вместо этого показать пользователю сообщение об ошибке, если аргумент командной строки не найден в среде.
Отредактируйте код echo.js таким образом:
const args = process.argv.slice(2);
args.forEach(arg => <
let envVar = process.env[arg];
if (envVar === undefined) <
console.error(`Could not find «$
> else <
console.log(envVar);
>
>);
Мы изменили функцию обратного вызова для forEach, и теперь она делает следующие вещи:
- Получает значение аргумента командной строки в среде и сохраняет его в переменной envVar.
- Проверяет, не является ли значение envVar undefined.
- Если envVar undefined, функция выводит полезное сообщение о том, что значение не удалось найти.
- Если переменная среды была найдена, она выведет ее значение.
Примечание: Функция console.error выводит сообщение на экран через поток stderr, а console.log – через поток stdout. Когда вы запускаете эту программу через командную строку, вы не видите разницы между потоками stdout и stderr. Однако ошибки рекомендуется выводить через поток stderr, чтобы их было легче идентифицировать и обрабатывать другими программами, которые чувствуют эту разницу.
Теперь выполните следующую команду еще раз:
node echo.js HOME PWD NOT_DEFINED
На этот раз получится:
/home/8host
/home/8host/first-program
Could not find «NOT_DEFINED» in environment
Теперь, когда программа получает аргумент командной строки, который не соответствует ни одной переменной, она выводит четкое сообщение об ошибке.
Заключение
Начав с простой программы «Hello World», вы написали утилиту командной строки Node.js, которая считывает пользовательские аргументы и выводит переменные среды.
Если вы хотите продолжить работу, вы можете еще больше изменить поведение этой программы. Например, можно проверить аргументы командной строки перед выводом результатов. Если один из аргументов не определяется, вы можете вернуть ошибку, и пользователь получит вывод, только если все аргументы будут соответствовать переменным среды.