Хостинг Node.js серверные скрипты приложений
Попробуйте Облачный VPS с установленным Node.js
Автоматическая установка Node.js на виртуальный сервер с Ubuntu 20.04.
Облачный сервер оплачивается по часам, а не месяцам — тарифы от 55 копеек.
Приложение с открытым исходным кодом — вы платите только за сервер.
Node.js — гибкая и активно развивающаяся платформа, предоставляющая среду выполнения JavaScript-кода. С Node.js вы можете использовать для серверной и клиентской части приложения один и тот же язык программирования, а также эффективно и быстро масштабировать проекты.
Примеры использования Node.js
- — Кроссплатформенные мобильные приложения
- — Интернет вещей (IoT)
- — Бэкенд веб-сайтов
- — Real Time Applications
Возможности Node.
js- — Небольшое потребление ресурсов
- — Встроенный менеджер пакетов
- — Эффективная обработка большого количества запросов
Сайт проекта
nodejs.org
Категория
Серверный Javascript
Версии
Последняя стабильная
Системные требования
Для серверов
с тарифом не ниже
Cloud-1.
Остались вопросы?
- Node.js — что это такое и для чего нужен?
Node.js на VDS/VPS-хостинге позволяет вам разрабатывать веб-серверы, приложения и другие инструменты на JavaScript. На наших серверах установлены быстрые SSD-диски, а также предусмотрена возможность гибко выбирать конфигурацию исходя из системных требований, что позволит вам создавать и настраивать на Node.js высокопроизводительные проекты.
- Как установить и настроить Node.js на Linux server? org/Answer»>
- Как переустановить и обновить версию Node.js?
1. Очистите кеш npm (пакетного менеджера Node.js), введя в консоль команду:
npm cache clean —f
2. Установите менеджер версий Node.js:
npm install —g n
3. Установите последнюю стабильную версию Node.js:
n stable
- Как подключить свой проект к Node. js на сервере?
Чтобы перенести на VPS свой репозиторий GitHub с проектом Node.js, рекомендуем установить приватный SSH-ключ на сервер и подключаться к GitHub без указания логина и пароля. Подробнее о генерации ключа — в документации GitHub.
- Как работать с файлами в Node.js?
Для доступа к файловой системе в Node.js используются модули fs и path. С их помощью можно читать/записывать данные в файлы, подключаться к директориям и многое другое.
Автоматическая установка Node.js доступна для нового сервера с Ubuntu 20.04 или Ubuntu 18.04 (auto-install). На другие ОС и на готовые серверы платформу нужно устанавливать самостоятельно.
Подробная настройка сервера для работы с Node.js описана в руководстве в нашей Базе знаний.
Другие приложения
Популярная панель управления сервером Популярная панель управления сервером Бесплатная панель управления Платформа для запуска приложений в контейнерах Фреймворк на Python для веб-приложений Бесплатный сервис видеоконференций Веб-сервер Apache, БД MySQL, PHP/Python Веб-сервер Nginx, БД MySQL, PHP/Python Версии: 18. 04 LTS, 20.04 LTS, 22.04 LTS Версии: 10.0, 11.0 Версии: 7.0, 8.0, 9.0 Rocky Linux 8.4 Версия 8Пожалуйста, включите JavaScript для корректной работы этой страницы. Как включить JavaScript
хостинг, REPL, работа с консолью, модули / Хабр
Перед вами третья часть перевода руководства по Node.js. Сегодня мы поговорим о выборе хостинга для Node.js-проектов, о том, как работать с Node.js в режиме REPL и как запускать скрипты с аргументами, о взаимодействии с консолью и о модулях.
[Советуем почитать] Другие части цикла
Часть 1: Общие сведения и начало работы
Часть 2: JavaScript, V8, некоторые приёмы разработки
Часть 3: Хостинг, REPL, работа с консолью, модули
Часть 4: npm, файлы package. json и package-lock.json
Часть 5: npm и npx
Часть 6: цикл событий, стек вызовов, таймеры
Часть 7: асинхронное программирование
Часть 9: Руководство по Node.js, часть 9: работа с файловой системой
Часть 10: Руководство по Node.js, часть 10: стандартные модули, потоки, базы данных, NODE_ENV
Полная PDF-версия руководства по Node.js
Хостинг для Node.js-приложений
Выбор хостинга для Node.js-приложений зависит от ваших потребностей. Вот небольшой список вариантов хостинга, который вы можете изучить, приняв решение развернуть своё приложение и сделать его общедоступным. Сначала рассмотрим простые варианты, возможности которых ограничены, а потом — более сложные, но и обладающие более серьёзными возможностями.
▍Самый простой вариант хостинга: локальный туннель
Даже если вашему компьютеру назначен динамический IP-адрес или вы находитесь за NAT, вы можете развернуть на нём своё приложение и обслуживать запросы пользователей к нему, используя локальный туннель.
Этот вариант подходит для быстрой организации тестирования, для того, чтобы устроить демонстрацию продукта, или для того, чтобы дать доступ к приложению очень маленькой группе людей.
Для организации локальных туннелей есть очень хороший сервис, ngrok, доступный для множества платформ.
Используя ngrok, достаточно выполнить команду вида ngrok PORT
и указанный вами порт будет доступен из интернета. У вас при этом, если вы пользуетесь бесплатной версией сервиса, будет адрес в домене ngrok.io
. Если же вы решите оформить платную подписку, вы сможете использовать собственные доменные имена, и, кроме того, сможете повысить безопасность решения (пользуясь ngrok, вы открываете доступ к своему компьютеру всему интернету).
Ещё один инструмент, который можно использовать для организации локальных туннелей, называется localtunnel.
▍Среды для развёртывания Node.js-проектов, не требующие настройки
Glitch
Glitch — это интерактивная среда и платформа для быстрой разработки приложений, которая позволяет разворачивать их в поддоменах glitch. com. Собственные домены пользователей эта платформа пока не поддерживает, при работе с ней существуют некоторые ограничения, но она отлично подходит для работы над прототипами приложений. Дизайн Glitch выглядит довольно забавно (пожалуй, это можно записать в плюсы данной платформы), но это не некая «игрушечная», ограниченная донельзя среда. Здесь к вашим услугам возможность работы с Node.js, CDN, защищённое хранилище для конфиденциальной информации, возможности обмена данными с GitHub и многое другое.
Проектом Glitch занимается та же компания, которая стоит за FogBugz и Trello (она же является одним из создателей StackOverflow). Я часто использую эту платформу для демонстрации приложений.
Codepen
Codepen — это замечательная платформа, вокруг которой сформировалось интересное сообщество. Здесь можно создавать проекты, включающие в себя множество файлов, и разворачивать их с использованием собственного домена.
▍Бессерверные среды
Бессерверные платформы позволяют публиковать приложения и при этом совершенно не думать о серверах, об их настройке или об управлении ими. Парадигма бессерверных вычислений заключается в том, что приложения публикуют в виде функций, которые реагируют на обращения к сетевой конечной точке. Подобный подход к развёртыванию приложений ещё называют FAAS (Functions As A Service, функция как услуга).Вот пара популярных решений в этой области:
- Фреймворк Serverless.
- Библиотека Standard.
Оба эти проекта предоставляют разработчику некий уровень абстракции, позволяющий публиковать приложения на различных FAAS-платформах, например, на Amazon AWS Lambda, на Microsoft Azure и на Google Cloud.
▍PAAS-решения
PAAS (Platform As A Service, платформа как услуга) — это платформы, которые берут на себя заботу обо многих вещах, о которых, в обычных условиях, должен заботиться разработчик, развёртывающий приложение.
Zeit Now
Zeit — это интересный вариант для развёртывания приложений. Развёртывание, при использовании этой платформы, сводится к вводу в терминале команды now
. Существует бесплатная версия Zeit, при работе с ней действуют некоторые ограничения. Есть и платная, более мощная версия этой платформы. Пользуясь Zeit, вы можете попросту не думать о том, что для работы вашего приложения нужен сервер. Вы просто разворачиваете приложение, а всё остальное находится в ведении этой платформы.
Nanobox
Создатели платформы Nanobox, в возможности которой входит развёртывание Node.js-приложений, называют её PAAS V2.
Heroku
Heroku — это ещё одна замечательная платформа для размещения Node.js-приложений. Вот хорошая статья о том, как с ней работать.
Microsoft Azure
Azure — это облачная платформа от Microsoft. В её документации есть раздел, посвящённый Node.js-приложениям.
Платформа Google Cloud
Google Cloud представляет собой замечательную среду для развёртывания Node. js-приложений. Вот соответствующий раздел её документации.
▍VPS-хостинг
Существует множество платформ, предоставляющих услуги VPS-хостинга. Общей чертой таких платформ является тот факт, что разработчик получает в своё распоряжение виртуальный сервер, самостоятельно устанавливает на него операционную систему (Linux или Windows), самостоятельно развёртывает приложения.
Среди платформ, предоставляющих VPS-услуги, которых существует великое множество, можно отметить следующие, которыми я пользовался и которые мог бы порекомендовать другим:
- Digital Ocean
- Linode
- Amazon Web Services (в частности, хотелось бы отметить сервис AWS Elastic Beanstalk, облегчающий развёртывание приложений и управление ресурсами AWS).
От себя добавим, что компания RUVDS тоже оказывает услуги VPS-хостинга. Мы лицензированы ФСТЭК, наши клиенты застрахованы AIG, у нас есть четыре дата-центра в разных странах. Есть собственный дата-центр RUCLOUD уровня TIER 3 в г. Королеве, Московская область, а также гермозоны в дата-центрах Deltalis (Швейцария), Лондоне Equinix LD8 (Великобритания), и ММТС-9 (Москва, Россия). Все гермозоны отвечают уровню надежности не ниже TIER 3.
Партнерами компании являются АО «ФИНАМ», финансовая группа «БКС», Национальный расчетный депозитарий (Московская биржа), АО «ВЦИОМ», компания «Гарс-Телеком», оператор такси Gett, оператор доставки Delivery Club и многие другие.
▍Обычный сервер
Ещё одно решение в области хостинга представляет собой покупку (или аренду, например, с помощью службы Vultr Bare Metal) обычного сервера, установку на него Linux и другого ПО, подключение его к интернету и размещение на нём Node.js-приложений.
Хостинг — тема огромная, но, надеемся, материалы этого раздела позволят вам выбрать именно то, что вам нужно. Теперь переходим к рассказу о работе с Node.js в режиме REPL.
Использование Node.
js в режиме REPLАббревиатура REPL расшифровывается как Read-Evaluate-Print-Loop (цикл «чтение — вычисление — вывод»). Использование REPL — это отличный способ быстрого исследования возможностей Node.js.
Как вы уже знаете, для запуска скриптов в Node.js используется команда node
, выглядит это так:
node script.js
Если ввести такую же команду, но не указывать имя файла, Node.js будет запущен в режиме REPL:
node
Если вы попробуете сейчас ввести такую команду в своём терминале, то в результате увидите примерно следующее:
> node >
Node.js теперь находится в режиме ожидания. Система ждёт, что мы введём в командной строке какой-нибудь JavaScript-код, который она будет выполнять.
Для начала попробуем что-нибудь очень простое:
> console.log('test') test undefined >
Тут мы предложили Node. js выполнить команду, используемую для вывода данных в консоль. Первое значение, test
, представляет собой то, что вывела команда console.log('test')
. Второе значение, undefined
, это то, что возвратила функция console.log()
.
После завершения выполнения команды появляется приглашение REPL, это означает, что мы можем ввести здесь новую команду.
▍Автозавершение команд с помощью клавиши Tab
REPL — это интерактивная среда. Если в процессе написания кода нажать клавишу Tab
на клавиатуре, REPL попытается автоматически завершить ввод, подобрав, например, подходящее имя уже объявленной вами переменной или имя некоего стандартного объекта.
▍Исследование объектов JavaScript
Введите в командную строку имя какого-нибудь стандартного объекта JavaScript, например — Number
, добавьте после него точку и нажмите клавишу Tab
.
REPL выведет список свойств и методов объекта, с которыми может взаимодействовать разработчик:
Исследование объекта Number
▍Исследование глобальных объектов
Для того чтобы узнать, с какими глобальными объектам Node.js вы можете работать, введите в терминале команду global.
и нажмите Tab
.
Исследование глобальных объектов
▍Специальная переменная _
Переменная _
(знак подчёркивания) хранит результат последней выполненной операции. Эту переменную можно использовать в составе команд, вводимых в консоль.
▍Команды, начинающиеся с точки
В режиме REPL можно пользоваться некоторыми специальными командами, которые начинаются с точки. Вот они:
- Команда
.help
выводит справочные сведения по командам, начинающимся с точки. - Команда
.editor
переводит систему в режим редактора, что упрощает ввод многострочного JavaScript-кода. После того, как находясь в этом режиме, вы введёте всё, что хотели, для запуска кода воспользуйтесь командойCtrl+D
. - Команда
.break
позволяет прервать ввод многострочного выражения. Её использование аналогично применению сочетания клавишCtrl+C
. - Команда
.clear
очищает контекст REPL, а так же прерывает ввод многострочного выражения. - Команда
.load
загружает в текущий сеанс код из JavaScript-файла. - Команда
.save
сохраняет в файл всё, что было введено во время REPL-сеанса. - Команда
.exit
позволяет выйти из сеанса REPL, она действует так же, как два последовательных нажатия сочетания клавишCtrl+C
.
Надо отметить, что REPL распознаёт ввод многострочных выражений и без использования команды . editor
.
Например, мы начали вводить код итератора:
[1, 2, 3].forEach(num => {
Если, после ввода фигурной скобки, нажать на клавишу Enter
, REPL перейдёт на новую строку, приглашение в которой будет выглядеть как три точки. Это указывает на то, что мы можем вводить код соответствующего блока. Выглядит это так:
... console.log(num) ... })
Нажатие на Enter
после ввода последней скобки приведёт к выполнению выражения. Если ввести в этом режиме .break
, ввод будет прерван и выражение выполнено не будет.
Режим REPL — полезная возможность Node.js, но область её применения ограничена небольшими экспериментами. Нас же интересует нечто большее, чем возможность выполнить пару команд. Поэтому переходим к работе с Node.js в обычном режиме. А именно, поговорим о том, как Node.js-скрипты могут принимать аргументы командной строки.
Работа с аргументами командной строки в Node.
js-скриптахПри запуске Node.js-скриптов им можно передавать аргументы. Вот обычный вызов скрипта:
node app.js
Передаваемые скрипту аргументы могут представлять собой как самостоятельные значения, так и конструкции вида ключ-значение. В первом случае запуск скрипта выглядит так:
node app.js flavio
Во втором — так:
node app.js name=flavio
От того, какой именно способ передачи аргументов используется, зависит то, как с ними можно будет работать в коде скрипта.
Так, для того, чтобы получить доступ к аргументам командной строки, используется стандартный объект Node.js process
. У него есть свойство argv
, которое представляет собой массив, содержащий, кроме прочего, аргументы, переданные скрипту при запуске.
Первый элемент массива argv
содержит полный путь к файлу, который выполняется при вводе команды node
в командной строке.
Второй элемент — это путь к выполняемому файлу скрипта.
Все остальные элементы массива, начиная с третьего, содержат то, что было передано скрипту при его запуске.
Перебор аргументов, имеющихся в argv
(сюда входят и путь к node
, и путь к выполняемому файлу скрипта), можно организовать с использованием цикла forEach
:
process.argv.forEach((val, index) => { console.log(`${index}: ${val}`) })
Если два первых аргумента вас не интересуют, на основе argv
можно сформировать новый массив, в который войдёт всё из argv
кроме первых двух элементов:
const args = process.argv.slice(2)
Предположим, при запуске скрипта, ему передали лишь один аргумент, в виде самостоятельного значения:
node app.js flavio
Обратиться к этому аргументу можно так:
const args = process. argv.slice(2) args[0]
Теперь попробуем воспользоваться конструкцией вида ключ-значение:
node app.js name=flavio
При таком подходе, после формирования массива args
, в args[0]
окажется строка name=flavio
. Прежде чем пользоваться аргументом, эту строку надо разобрать. Самый удобный способ это сделать заключается в использовании библиотеки minimist, которая предназначена для облегчения работы с аргументами командной строки:
const args = require('minimist')(process.argv.slice(2)) args['name'] //flavio
Теперь рассмотрим вывод данных в консоль.
Вывод данных в консоль с использованием модуля console
Стандартный модуль Node.js console даёт разработчику массу возможностей по взаимодействию с командной строкой во время выполнения программы. В целом, это — то же самое, что объект console
, используемый в браузерном JavaScript. Пожалуй, самый простой и самый широко используемый метод модуля console
— это console.log()
, который применяется для вывода передаваемых ему строковых данных в консоль. При этом, если передать ему объект, то он, перед выводом, будет преобразован к своему строковому представлению.
Методу console.log()
можно передавать несколько значений:
const x = 'x' const y = 'y' console.log(x, y)
После выполнения этой последовательности инструкций в консоль попадёт и значение x
, и значение y
.
Для формирования сложных строк команда console.log()
поддерживает использование подстановочных символов, которые, при выводе данных, заменяются на соответствующие им значения в порядке очерёдности.
Например, вот команда, которая выводит текст My cat has 2 years
:
console.log('My %s has %d years', 'cat', 2)
Рассмотрим особенности подстановочных символов:
%s
форматирует значение в виде строки.%d
или%i
форматируют значение в виде целого числа.%f
форматирует значение в виде числа с плавающей точкой.%O
используется для вывода строковых представлений объектов.
Вот ещё один пример использования подстановочных символов:
console.log('%O', Number)
▍Очистка консоли
Для очистки консоли используется команда console.clear()
(её поведение в разных терминалах может различаться).
▍Подсчёт элементов
Сейчас мы рассмотрим полезный метод console.count()
. Взгляните на этот код:
const x = 1 const y = 2 const z = 3 console.count( 'The value of x is ' + x + ' and has been checked .. how many times?' ) console.count( 'The value of x is ' + x + ' and has been checked .. how many times?' ) console. count( 'The value of y is ' + y + ' and has been checked .. how many times?' )
Метод count()
подсчитывает количество выводов строк и выводит результат рядом с ними.
Используя этот метод можно, в следующем примере, посчитать яблоки и апельсины:
const oranges = ['orange', 'orange'] const apples = ['just one apple'] oranges.forEach(fruit => { console.count(fruit) }) apples.forEach(fruit => { console.count(fruit) })
▍Вывод в консоль результатов трассировки стека
Иногда бывает полезно вывести в консоль трассировку стека функции. Например, для того, чтобы ответить на вопрос о том, как мы попали в некое место программы. Сделать это можно с помощью такой команды:
console.trace()
Вот пример её использования:
const function2 = () => console.trace() const function1 = () => function2() function1()
Вот что произошло, когда я запустил этот код в режиме REPL:
Trace at function2 (repl:1:33) at function1 (repl:1:25) at repl:1:1 at ContextifyScript. Script.runInThisContext (vm.js:44:33) at REPLServer.defaultEval (repl.js:239:29) at bound (domain.js:301:14) at REPLServer.runBound [as eval] (domain.js:314:12) at REPLServer.onLine (repl.js:440:10) at emitOne (events.js:120:20) at REPLServer.emit (events.js:210:7)
▍Измерение времени, затраченного на выполнение некоего действия
Измерить время, которое занимает, например, выполнение некоей функции, можно с использованием методов console.time()
и console.timeEnd()
. Выглядит это так:
const doSomething = () => console.log('test') const measureDoingSomething = () => { console.time('doSomething()') //вызываем функцию и замеряем время, необходимое на её выполнение doSomething() console.timeEnd('doSomething()') } measureDoingSomething()
▍Работа с stdout и stderr
Как мы уже видели, команда console.log()
отлично подходит для вывода сообщений в консоль. При её применении используется так называемый стандартный поток вывода, или stdout
.
Команда console.error()
выводит данные в стандартный поток ошибок, stderr
. Данные, отправляемые в stderr
, попадают в консоль, хотя то, что выводится в этот поток, можно, например, перенаправить в файл журнала ошибок.
▍Использование цвета при выводе данных в консоль
Для того чтобы раскрасить выводимые в консоль тексты, можно воспользоваться escape-последовательностями, идентифицирующими цвета:
console.log('\x1b[33m%s\x1b[0m', 'hi!')
Если выполнить эту команду, например, в режиме REPL, текст hi
будет выведен жёлтым цветом.
Такой подход, однако, не особенно удобен. Для вывода в консоль цветных надписей удобно будет воспользоваться специализированной библиотекой, например — chalk. Эта библиотека, помимо цветового форматирования текстов, поддерживает и другие способы их стилизации. Например, с её помощью можно оформить текст полужирным, курсивным или подчёркнутым шрифтом.
Для её установки из npm воспользуйтесь такой командой:
npm install chalk
Пользоваться ей можно так:
const chalk = require('chalk') console.log(chalk.yellow('hi!'))
Пользоваться командой chalk.yellow()
гораздо удобнее, чем escape-последовательностями, да и текст программы при таком подходе читать гораздо легче.
Для того чтобы узнать подробности о chalk, посмотрите страницу этой библиотеки на GitHub.
▍Создание индикатора выполнения операции
Индикатор выполнения операции (progress bar) может пригодиться в разных ситуациях. Для создания индикаторов выполнения, работающих в консоли, можно воспользоваться пакетом progress. Установить его можно так:
npm install progress
Ниже показан пример кода, в котором создаётся индикатор, который можно использоваться для вывода сведений о некоей задаче, состоящей из 10 шагов. В нашем случае на выполнение каждого шага уходит 100 мс. После того, как индикатор заполнится, вызывается команда clearItnerval()
и выполнение программы завершается.
const ProgressBar = require('progress') const bar = new ProgressBar(':bar', { total: 10 }) const timer = setInterval(() => { bar.tick() if (bar.complete) { clearInterval(timer) } }, 100)
▍Приём пользовательского ввода из командной строки
Как сделать приложения командной строки, написанные для платформы Node.js, интерактивными? Начиная с 7 версии Node.js содержит модуль readline, который позволяет принимать данные из потоков, которые можно читать, например, из process.stdin
. Этот поток, во время выполнения Node.js-программы, представляет собой то, что вводят в терминале. Данные вводятся по одной строке за раз.
Рассмотрим следующий фрагмент кода:
const readline = require('readline').createInterface({ input: process. stdin, output: process.stdout }) readline.question(`What's your name?`, (name) => { console.log(`Hi ${name}!`) readline.close() })
Здесь мы спрашиваем у пользователя его имя, а после ввода текста и нажатия на клавишу Enter
на клавиатуре, выводим приветствие.
Метод question()
выводит то, что передано ему в качестве первого параметра (то есть — вопрос, задаваемый пользователю) и ожидает завершения ввода. После нажатия на Enter
он вызывает коллбэк, переданный ему во втором параметре и обрабатывает то, что было введено. В этом же коллбэке мы закрываем интерфейс readline
.
Модуль readline
поддерживает и другие методы, подробности о них вы можете узнать в документации, ссылка на которую приведена выше.
Если вам, с использованием этого механизма, надо запросить у пользователя пароль, то лучше не выводить его, в ходе ввода, на экран, а показывать вместо введённых символов символ звёздочки — *
.
Для того чтобы это сделать, можно воспользоваться пакетом readline-sync, устройство которого похоже на то, как устроен модуль readline
, и который поддерживает подобные возможности сразу после установки.
Есть и ещё один пакет, предоставляющий более полное и абстрактное решение подобной проблемы. Это пакет inquirer. Установить его можно так:
npm install inquirer
С его использованием вышеприведённый пример можно переписать следующим образом:
const inquirer = require('inquirer') var questions = [{ type: 'input', name: 'name', message: "What's your name?", }] inquirer.prompt(questions).then(answers => { console.log(`Hi ${answers['name']}!`) })
Пакет inquirer обладает обширными возможностями. Например, он может помочь задать пользователю вопрос с несколькими вариантами ответа или сформировать в консоли интерфейс с радиокнопками.
Программисту стоит знать о наличии альтернативных возможностей по выполнению неких действий в Node. js. В нашем случае это стандартный модуль readline
, пакеты readline-sync и inquirer. Выбор конкретного решения зависит от целей проекта, от наличия времени на реализацию тех или иных возможностей и от сложности пользовательского интерфейса, который планируется сформировать средствами командной строки.
Система модулей Node.js, использование команды exports
Поговорим о том, как использовать API module.exports
для того, чтобы открывать доступ к возможностям модулей другим файлам приложения. В Node.js имеется встроенная система модулей, каждый файл при этом считается самостоятельным модулем. Общедоступный функционал модуля, с помощью команды require
, могут использовать другие модули:
const library = require('./library')
Здесь показан импорт модуля library.js
, файл которого расположен в той же папке, в которой находится файл, импортирующий его.
Модуль, прежде чем будет смысл его импортировать, должен что-то экспортировать, сделать общедоступным. Ко всему, что явным образом не экспортируется модулем, нет доступа извне. Собственно говоря, API module.exports
позволяет организовать экспорт того, что будет доступно внешним по отношению к модулю механизмам.
Экспорт можно организовать двумя способами.
Первый заключается в записи объекта в module.exports
, который является стандартным объектом, предоставляемым системой модулей. Это приводит к экспорту только соответствующего объекта:
const car = { brand: 'Ford', model: 'Fiesta' } module.exports = car //..в другом файле const car = require('./car')
Второй способ заключается в том, что экспортируемый объект записывают в свойство объекта exports
. Такой подход позволяет экспортировать из модуля несколько объектов, и, в том числе — функций:
const car = { brand: 'Ford', model: 'Fiesta' } exports. car = car
То же самое можно переписать и короче:
exports.car = { brand: 'Ford', model: 'Fiesta' }
В другом файле воспользоваться тем, что экспортировал модуль, можно так:
const items = require('./items') items.car
Или так:
const car = require('./items').car
В чём разница между записью объекта в module.exports
и заданием свойств объекта exports
?
В первом экспортируется объект, который записан в module.exports
. Во втором случае экспортируются свойства этого объекта.
Итоги
Сегодня мы поговорили о хостингах для Node.js-приложений, о REPL, о работе с командной строкой, о системе модулей Node.js. В следующий раз мы начнём обстоятельный разговор об npm, и, в частности, рассмотрим особенности файлов package. json
и package-lock.json
.
Уважаемые читатели! Какие хостинги вы используете для своих Node.js-приложений?
9 лучших хостинговых платформ Node.js на декабрь 2022 г. (бесплатно + платно)
Ищете лучший хостинг Node.js для своего следующего прикладного проекта? В этом посте я расскажу о различных премиальных и бесплатных услугах хостинга Node.js для пользователей всех уровней знаний.
Всего мы рассмотрим следующие варианты:
- Хостинг A2 #
- Героку #
- Веб-сервисы Amazon #
- DigitalOcean #
- Глюк #
- Облачная платформа Google #
- Microsoft Azure #
- Платформа.sh #
- NodeChef #
Продолжайте читать, чтобы узнать больше о каждой платформе!
Торопитесь? Вот краткое изложение наших выводов:
Хост | Цена от | Платить за использование? * | Облачная? |
---|---|---|---|
А2 Хостинг | 5,99 $ | ❌ | ❌ |
Героку | $0 | ✅ | ✅ |
АВС | $0 | ✅ | ✅ |
DigitalOcean | $4 | ❌ | ❌ |
Глюк | $0 | Н/Д — Бесплатно | Н/Д |
Облачная платформа Google | $0 | ✅ | ✅ |
Microsoft Azure | $0 | ✅ | ✅ |
Платформа. ш | $50 | ❌ | ✅ |
NodeChef | $9 | ❌ | ❌ |
Когда вы закончите читать о лучших хостинговых компаниях node.js, проверьте:
1. Хостинг A2 (www.A2Hosting.com)
Хостинг A2 — один из немногих предложить выделенный пакет хостинга Node.js. То есть вы обычно ищете облачные или выделенные варианты для Node.js, но хостинг A2 позволяет вам использовать их общие планы.
Это делает A2 Hosting довольно доступным вариантом, с планами, начинающимися с 5,99 долларов в месяц для:
- 1 веб-сайт
- 5 баз данных
- неограниченное хранение и передача
- бесплатный SSL-сертификат через Let’s Encrypt
- cPanel для управления сервером
Оттуда идут планы по увеличению количества веб-сайтов и повышению производительности.
Однако недостатком хостинга A2 является то, что масштабировать ваше приложение будет не так просто, как с одним из многих провайдеров облачного хостинга Node. js в этом списке.
2. Heroku (www.Heroku.com)
Heroku — это платформа облачных приложений, которая предлагает бесплатных хостингов Node.js , что само по себе является довольно большим преимуществом. Конечно, есть некоторые ограничения, и, как и в случае с бесплатным хостингом WordPress, вы, вероятно, захотите использовать платный хостинг для серьезного проекта. Но если вы согласны с этими ограничениями и просто ищете бесплатный хостинг Node.js, чтобы поиграть с ним, это хорошее место для начала!
Heroku также предлагает платные планы, которые также являются хорошим вариантом в зависимости от ваших потребностей.
Итак, каковы ограничения для бесплатного хостинга Node.js от Heroku? А именно:
- 512Мб памяти
- Засыпает после 30 минут бездействия
- Только один пользователь
- Поставляется с лимитом в 1000 «динамических часов» для всей вашей учетной записи (если вы подтверждаете с помощью кредитной карты — иначе только 550)
Если эти ограничения мешают вашим планам, платные планы Heroku по-прежнему могут быть доступными, начиная всего с 7 долларов.
Heroku хорошо документирован, предлагает простое масштабирование и в целом довольно удобен для разработчиков.
Вы, наверное, слышали об Amazon Web Services, потому что они работают так же, как… весь Интернет. Ладно, это немного преувеличение, но это очень, очень популярно.
Благодаря множеству интегрированных сервисов AWS является отличным вариантом для размещения приложений Node.js.
Несмотря на то, что существует множество различных сервисов, вы, скорее всего, захотите начать с Elastic Beanstalk, который «упрощает развертывание, управление и масштабирование веб-приложений Node.js с помощью Amazon Web Services».
Вам просто нужно загрузить свой код, а затем AWS выполнит развертывание и подготовку. Кроме того, за сервис Elastic Beanstalk не взимается дополнительная плата — вы по-прежнему платите только за фактически используемые сервисы AWS.
Еще одним интересным вариантом является Lambda, который предлагает бессерверный хостинг.
Если вы еще не очень хорошо знакомы с AWS, вы можете ознакомиться с руководством по проекту «Развертывание веб-приложения Node.js», чтобы изучить основы и запустить свое приложение.
4. DigitalOcean (www.DigitalOcean.com)
DigitalOcean, популярная служба облачной инфраструктуры, также является хорошим вариантом для хостинга Node.js и позволяет запустить новую каплю Node.js Ubuntu всего несколькими щелчками мыши. Или вы также можете создать свой собственный дроплет и настроить все самостоятельно.
Это не лучший вариант для неопытных пользователей, поскольку вам придется самостоятельно управлять инфраструктурой, но цены доступны, а DigitalOcean позволяет очень легко масштабировать ваше приложение по мере необходимости.
Вы можете начать работу с новой каплей всего за 4 доллара в месяц, и у вас будет выбор из восьми разных центров обработки данных на трех разных континентах.
DigitalOcean также недавно приобрела Nanobox, который упрощает развертывание веб-приложений — вы можете подписаться на бета-версию здесь.
Кроме того, вы также можете зарегистрироваться в Cloudways и выбрать настройку хостинга на базе DigitalOcean. Cloudways предоставляет простой в настройке интерфейс для начинающих, что компенсирует цену.
5. Glitch (Glitch.com)
Если вы ищете бесплатный хостинг Node.js для интересного проекта, Glitch может стать для вас подходящим инструментом. Это , а не , хороший вариант для серьезного бизнеса, но он отлично подходит для забавных приложений или прототипирования.
Вы даже можете создать анонимное приложение, хотя вам нужно будет войти в систему через GitHub или Facebook, если вы хотите, чтобы ваши проекты оставались активными ( срок действия анонимных приложений истекает через пять дней ).
Глюк не позволяет вам использовать свой собственный домен, и есть некоторые другие ограничения, такие как:
- Проекты переходят в спящий режим через 5 минут, если не используются, и автоматически останавливаются через 12 часов. Они просыпаются при получении другого HTTP-запроса.
- 200 МБ дискового пространства и 512 МБ места для хранения активов.
- 512 МБ ОЗУ, как и ограничения бесплатного хостинга Node.js Heroku.
- Ограничено 4000 запросов в час.
Чтобы получить простое руководство по размещению вашего приложения Node.js на Glitch, ознакомьтесь с Руководством для идиотов по размещению на Glitch.com.
Glitch принадлежит той же команде, что и Stack Overflow, Stack Exchange и Trello ( до того, как Trello была приобретена Atlassian ), так что за ним стоит некоторый вес.
Если вы хотите разместить свое приложение Node.js в той же инфраструктуре, что и Google Search и YouTube, Google Cloud Platform может стать для вас лучшим хостингом Node.js.
Как и Amazon Web Services, у вас будет выбор из множества различных продуктов и услуг. Один из них, который вы определенно захотите рассмотреть, — это Google App Engine, который позволяет вам «сосредоточиться только на написании кода, не беспокоясь об управлении базовой инфраструктурой».
И, как и в AWS, вы будете платить только за те ресурсы, которые фактически используете.
Руководство по началу работы с хостингом приложений Node.js на Google Cloud Platform см. в кратком руководстве Google Node.JS App Engine.
Еще одна известная платформа облачных вычислений, Microsoft Azure, также предлагает ряд услуг, упрощающих размещение и развертывание приложений Node.js.
В частности, служба приложений Azure предлагает полностью управляемое решение для размещения приложений Node.js.
Еще одна привлекательная черта Microsoft Azure заключается в том, что она предлагает 12 месяцев бесплатных основных служб, а также кредит в размере 200 долларов, который вы можете использовать для дополнительных служб в течение первых 30 дней. Так что, хотя это не бесплатно навсегда , вы можете получить много миль, прежде чем вам нужно будет платить.
Если вы ненавидите управлять инфраструктурой для своих приложений Node.js, Platform. sh может стать лучшим хостингом Node.js для вашего приложения.
Как следует из названия, это платформа как услуга (PaaS), которая управляет всей инфраструктурой вашего приложения.
Технически не является хостингом самого , потому что Platform.sh сотрудничает с AWS, Google Cloud Platform, Microsoft Azure и т. д. Но вам намного проще запускать приложения Node.js в этой облачной инфраструктуре.
Тарифные планы Platform.sh начинаются с 50 долларов в месяц и выше в зависимости от ваших потребностей. Вы также можете получить бесплатную пробную версию, чтобы проверить это — кредитная карта не требуется.
9. NodeChef (www.NodeChef.com)
С планами от 9 долларов СШАв месяц NodeChef предлагает недорогой хостинг Node.js для вашего приложения с использованием контейнеров Docker на физических серверах в одном из четырех центров обработки данных на четырех континентах по вашему выбору:
- США — Восток
- ЕС-Запад (Париж)
- Сингапур
- Сидней
Вы можете выбирать между базами данных SQL и NoSQL, а NodeChef также предлагает простое масштабирование и автоматическую подготовку сертификатов SSL.
План начального уровня NodeChef за 9 долларов в месяц дает вам:
- 1 ЦП
- 128 МБ памяти приложения
- 100 МБ памяти базы данных
- 1 ГБ для хранения базы данных
- Неизмеряемая пропускная способность
Затем вы можете масштабировать отдельные ресурсы по мере необходимости.
Наверх
Какой хостинг Node.js лучше всего подходит для ваших нужд?
Чтобы закрыть этот пост и помочь вам выбрать лучший хостинг Node.js для вашей конкретной ситуации, давайте рассмотрим несколько сценариев: и они обычно предоставляют вам услуги, которые помогают упростить управление вашим приложением и устранить множество более утомительных требований к инфраструктуре.
Конечно, у вас есть большая тройка:
- AWS, а также Elastic Beanstalk .
- Google Cloud Platform вместе с App Engine
- Microsoft Azure вместе со службой приложений
DigitalOcean и Heroku также предлагают хорошие варианты, а Platform. sh предлагает PaaS, чтобы помочь вам в комплексной разработке.
Если вы специально ищете бесплатный хостинг Node.js, Glitch — хороший вариант для некритичных вещей, а Heroku также предлагает ограниченный бесплатный план.
Наконец, если вы не хотите идти по облачному маршруту, A2 Hosting предлагает доступную точку входа за 5,99 долларов в месяц и является одним из немногих хостов, которые позволят вам запускать Node.js без приобретения собственного VPS или выделенного сервера. . Кроме того, NodeChef предлагает доступную цену благодаря контейнерному подходу Docker на серверах без операционной системы.
Вот еще раз сводная таблица:
Хост | Цена от | Платить за использование? * | Облачная? |
---|---|---|---|
Хостинг A2 | 5,99 $ | ❌ | ❌ |
Героку | $0 | ✅ | ✅ |
АВС | $0 | ✅ | ✅ |
DigitalOcean | $4 | ❌ | ❌ |
Глюк | $0 | Н/Д — Бесплатно | Н/Д |
Облачная платформа Google | $0 | ✅ | ✅ |
Microsoft Azure | $0 | ✅ | ✅ |
Платформа. ш | $50 | ❌ | ✅ |
NodeChef | $9 | ❌ | ❌ |
Под «оплатой за использование» мы подразумеваем, что вы платите на основе фактических ресурсов, которые вы используете, а не какой-то установленной суммы каждый месяц.
Есть вопросы по выбору лучшего хостинга для Node.js? Спрашивайте в комментариях!
…
Не забудьте присоединиться к нашему ускоренному курсу по ускорению вашего сайта WordPress. С помощью некоторых простых исправлений вы можете сократить время загрузки даже на 50-80%:
* Этот пост содержит партнерские ссылки, что означает, что если вы нажмете на одну из ссылок на продукт, а затем купите продукт, мы получим небольшую комиссию. Не беспокойтесь, вы по-прежнему будете платить стандартную сумму, поэтому с вашей стороны не будет никаких затрат.
The Best Node.js Hosting in 2023
Bluehost
Best Overall Web Hosting
- Multi-Server Management
- Unlimited file transfer protocol (FTP)
- Unlimited Bandwidth
Visit Bluehost
Bluehost is крупный хостинг веб-сайтов, хорошо известный в отрасли своим опытом работы с WordPress. Он также популярен благодаря разнообразию комплексных решений и услуг, а также выгодным ценам.
В настоящее время Bluehost обслуживает более 2 миллионов сайтов по всему миру, в основном из своего огромного центра обработки данных в Юте. Кроме того, компания предлагает почти все услуги хостинга веб-сайтов, которые могут вам понадобиться, такие как расширенный хостинг, такой как VPS, управляемый хостинг WordPress и выделенный сервер.
Помимо предоставления полного спектра услуг хостинга веб-сайтов, компания предоставляет услуги SEO, обучение маркетингу, маркетинг в социальных сетях, услуги графического дизайна и создание контента.
Bluehost также имеет продвинутую и надежную категорию хостинга WordPress под названием WP Pro. Обратите внимание, что WP Pro доступен на трех уровнях. Это отличное управляемое предложение WordPress, которое придает вашему веб-сайту желанный внешний вид, а также включает в себя потрясающие инструменты для социальных сетей, SEO и маркетинга по электронной почте. И все 3 плана WP Pro (Grow, Build и Scale) включают неограниченный хостинг веб-сайтов, домены, ежемесячную передачу данных и хранилище, и это здорово.
Плюсы и минусы
Bluehost — невероятно надежный хостинг-провайдер, который предлагает отличное обслуживание клиентов, предлагает время безотказной работы и отличное соотношение цены и качества. Итак, если вы хотите разместить свой веб-сайт WordPress, это один из лучших провайдеров для вас.
Плюсы
- Надежное время безотказной работы
- Просторное хранилище
- Включает несколько функций безопасности, таких как уникальные IP-адреса, SSL и защита SiteLock
Минусы
- Нет автоматического ежедневного резервного копирования
- Bluehost предлагает только серверы в Linux, хостинг Windows недоступен
Что говорят клиенты
Невероятное время безотказной работы Bluehost было главным, что мы заметили, читая как потребительские, так и профессиональные обзоры. Хотя Bluehost не предлагает какой-либо конкретной гарантии безотказной работы, мы не смогли найти ни текущих, ни бывших подписчиков, которые сообщали о значительных простоях на своем сайте Bluehost.
Читать полный обзор Bluehost
РЕЗЮМЕ
- Начальная цена
- Стандарт: $ 18,99/MO
- Улучшен: $ 29,99/MO
- ULTIMET: $ 29.99/MO
- ULTIMAT Дни
Функции
- Управление несколькими серверами
- Неограниченный протокол передачи файлов (FTP)
- Неограниченная пропускная способность
LiquidWeb
Лучший выделенный хостинг
- 24/7 (живой представитель), онлайн
- Управление подписями
- Архивирование/хранение
js. Как и SiteGround, Liquid Web предлагает надежные варианты, подкрепленные первоклассным обслуживанием клиентов. Однако обратите внимание, что большинство вариантов компании (как традиционных, так и облачных) управляются, поэтому, если вы менее технически склонны или хотите передать часть (или все) управление, связанное с вашим веб-хостингом, при покупке План VPS или выделенный сервер, Liquid Web может быть лучшим вариантом для вас.
На сайте упоминается только совместимость с PHP4 и PHP5, а ссылка «Подробнее» не работает, поэтому неясно, насколько актуальными являются обязательства Liquid Web.
Веб-хост специализируется на управляемых услугах и обеспечивает круглосуточное гарантированное время отклика службы поддержки, а также гарантирует 100% время безотказной работы .
Плюсы и минусы
Планы хостинга для Windows все еще находятся в разработке, поэтому, если вы пытаетесь сразу начать работу, хостинг A2 может не подойти. Но с их впечатляющим временем безотказной работы, круглосуточной поддержкой клиентов и щедрой политикой возврата денег они могут стоить ожидания. А пока вы можете изучить другие варианты хостинга, включая выделенные серверы и VPS-хостинг.
PROS
- Планы высокоэффективности
- 100% сеть/гарантия работы с мощностью
- Отличная команда поддержки
CONS
- Варианты Windows Скоро
Что говорят клиенты
. скрытая жемчужина, которая поддерживает веб-разработчиков, реселлеров и других специалистов. Провайдер имеет авторитетную торговую марку, надежный сервис, интерфейс управления выше среднего и высококвалифицированный персонал службы поддержки. Пользователи одобрительно отзываются о многих функциях и о том, как они постоянно развиваются и улучшаются.
Читать полное жидкое веб -хостинг Обзор
Сводная стоимость
- Начальная цена
- Linux: $ 99 — 199/месяц
- Windows: $ 129 — $ 234/месяц
- $.
30 дней
Функции
- 24/7 (живой представитель), онлайн
- Управление подписями
- Архивирование/хранение сайта 8
- 0485
Лучший хостинг WordPress
- Неограниченное количество баз данных
- Бесплатный SSL и CDN
- Неограниченное количество баз данных
Посетите SiteGround
Поддержка сайта предлагается только для хостинга No. свой выделенный сервер. Это ограничение означает, что SiteGround ничем не отличается от любого другого провайдера, предлагающего выделенные серверы. Тем не менее, нам все же пришлось отдать должное SiteGround из-за того, что их предложения веб-хостинга конкурентоспособны и подкреплены качественным обслуживанием клиентов.
SiteGround также преуспевает в обслуживании клиентов и технической поддержке. Они доступны, чтобы помочь с любыми проблемами, которые возникают с вашим сайтом 24/7. Их представители очень хорошо осведомлены о своих системах и быстро решают большинство проблем.
Услуги хостинга SiteGround предоставляются с различными бонусами, такими как бесплатный SSL-сертификат, учетные записи электронной почты и CDN. Их планы также предлагают бесплатную миграцию веб-сайтов для клиентов, у которых уже есть веб-сайты, размещенные у другого провайдера. Другие заслуживающие внимания функции хостинга SiteGround включают в себя:
- Интеграция с популярными приложениями, такими как Weebly, WordPress и Drupal
- Реселлерские инструменты и инструменты для совместной работы
Плюсы и минусы
Плюсы
- Невероятно быстрые серверы
- Быстрые и безопасные технологические стеки
- Предоставление промежуточных сред
Минусы
- Ограниченное пространство для хранения на начальных планах
- Требуется 3-летний контракт для самых низких тарифов
Что говорят клиенты
SiteGround не предлагает много места для хранения по сравнению с другими поставщиками общего веб-хостинга. Тем не менее, он получает почти всеобщую похвалу за обслуживание клиентов, поскольку клиенты сообщают о почти мгновенных ответах. Это время отклика обеспечивает значительный элемент спокойствия для пользователей, которым нужна дополнительная помощь в настройке платформы или решении любых непредвиденных проблем.
Read full SiteGround review
Summary
- Starting Price
- StartUp: $3.99 per month
- GrowBig: $6.69 per month
- GoGeek: $10.69 per month
- Гарантия возврата денег
30 дней
Функции
- Неограниченное количество баз данных
- Бесплатные SSL и CDN
- Неограниченное количество баз данных
A2 хостинг
Лучший веб-хостинг для скорости
- Автоматические резервные копии
- Бесплатная учетная запись. , A2 — один из немногих провайдеров, предлагающих поддержку Node.js (даже с планами общего хостинга). A2 делает упор на опыт разработчиков, поэтому вы, вероятно, обнаружите, что они поддерживают все, что вам нужно для использования в вашем приложении. Если нет, команда A2 рекомендует вам подать запрос на добавление функции в очередь разработки.
A2 Hosting предоставляет веб-хостинг на базе Windows и Linux. С планами от 2,99 долларов в месяц вы можете создать веб-сайт своей компании, не беспокоясь об эксплуатационных расходах. Веб-сайты, размещенные на хостинге A2, загружаются умеренно быстро, согласно HRANK, за 949 мс. Их серверы надежны с временем безотказной работы 99,9%.
Те, кто выбирает A2 Hosting для своих потребностей в хостинге, также могут воспользоваться некоторыми бесплатными инструментами и функциями, которые помогут создать свой веб-сайт. К ним относятся:
- Unlimited bandwidth and disk space
- Free domain name registration
- A free website builder
- An SSL certificate
- Free data backups
Pros & Cons
Pros
- Хорошая гарантия возврата денег
- Разработчики постарались сделать его более удобным и активно вкладывают средства в получение отзывов
- Бесплатная миграция веб-сайта
- Доступ к ускорителю сайта A2
Минусы
- Турбо-серверы доступны только для планов более высокого уровня
Что говорят клиенты
Клиенты высоко оценивают свои тарифные планы и поддержку клиентов.