Что такое NodeJS и npm?
Наверняка вы уже слышали про NodeJS и возможно использовали его в каких-то тестовых или реальных проектах.
NodeJS — это платформа для разработки на языке программирования Javascript, как бэкенд, так и фронтенд части. NodeJS использует движок V8.
Но зачем использовать Javascript еще где-то, кроме как в браузере?
Дело в том, что язык Javascript служит не только для того, чтобы сделать выпадающие меню и мигание кнопочек, как это было задумано изначально, в далеком 1995 году. Прошло уже больше 20 лет и развитие Javascript не стояло на месте. У языка Javascript появилось очень много возможностей и писать различные скрипты достаточно удобно на современном Javascript, а благодаря менеджеру пакетов npm жизнь frontend и backend разработчиков стала лучше.
Смотрите видео Что такое NodeJS и NPM
Что такое npm?
NPM — это менеджер пакетов, которые вы можете подключить в ваш проект. Например, если вы хотите, чтобы ваш проект использовал Bootstrap, вам необязательно вручную копировать все необходимые файлы с сайта Bootstrap и хранить эту библиотеку в репозитории GIT, достаточно указать в конфигурационном файле вашего проекта одной строчкой, что вам нужен Bootstrap и пакетный менеджер npm установит Bootstrap в копию вашего проекта, при этом нет нужны хранить все подобные библиотеки в репозитории GIT вашего проекта.
И если вы разрабатываете проект группой разработчиков, для разворачивания вашего проекта у себя на компьютере, достаточно будет запустить одну команду и все необходимые зависимости, такие как фреймворк Bootstrap, различные библиотеки скачаются в проект автоматически.
С помощью менеджера npm можно добавить в ваш проект огромное количество всевозможных библиотек и инструментов и в следующих уроках я покажу как установить NodeJS и пользоваться менеджером пакетов npm, а также покажу как создаются современные frontend приложения.
Также легко, как подключение Bootstrap к вашему проекту через NPM, вы можете подключить и BabelJS, для того, чтобы у вас была возможность писать код вашего приложения на современном Javascript.
Смотрите все уроки по NodeJS и NPM в курсе Modern Javascript
Успехов в обучении!
С уважением, Сергей Никонов
Поделитесь в социальных сетях
О Node.js®
Как асинхронное событийное JavaScript-окружение, Node.js спроектирован для построения масштабируемых сетевых приложений. Ниже приведен пример «hello world», который может одновременно обрабатывать много соединений. Для каждого соединения вызывается функция обратного вызова, однако, когда соединений нет Node.js засыпает.
const http = require('http'); const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello World\n'); >); server.listen(port, hostname, () => console.log(`Server running at http://$hostname>:$port>/`); >);
Этот подход контрастирует с более распространенной на сегодняшний день моделью параллелизма, в которой используются параллельные OS потоки. Такой подход является относительно неэффективным и очень сложным в использовании. Кроме того, пользователи Node.js могут не беспокоиться о блокировках процессов, поскольку их не существует. Почти ни одна из функций в Node.js не работает напрямую с I/O, поэтому поток никогда не блокируется. В следствии этого на Node.js легко разрабатывать масштабируемые системы.
Для более детального знакомства с этим подходом, можно ознакомится с полной статьей Blocking vs Non-Blocking.
Node.js создан под влиянием таких систем как Event Machine в Ruby или Twisted в Python. Но при этом событийная модель, в нем, используется значительно шире, принимая event loop за основу окружения, а не в качестве отдельной библиотеки. В других системах всегда происходят блокировки вызова, чтобы запустить цикл событий.
Обычно, поведение определяется через функции обратного вызова (callback) в начале скрипта и дальнейшим его вызовом через блокирующий вызов, вроде EventMachine::run() . В Node.js нет ничего похожего на вызов начала цикла событий, он автоматически входит в него после запуска скрипта. Node.js выходит из событийного цикла тогда, когда не остается зарегистрированных функций обратного вызова. Такое поведение похоже на поведение браузерного JavaScript, где событийный цикл скрыт от пользователя.
HTTP является объектом первого рода в Node.js, разработанным с поточностью и малой задержкой, что делает Node.js хорошей основой для веб-библиотеки или фреймворка.
То что Node.js спроектирован без многопоточности, не означает, что в нем нет возможности использовать нескольких ядер. Для работы с ними можно создавать и управлять дочерними процессами, с помощью API Child_process.fork() . Модуль cluster построен на этом интерфейсе и позволяет делиться сокетами между процессами и распределять нагрузку между ядрами.
Copyright OpenJS Foundation and Node.js contributors. All rights reserved. The OpenJS Foundation has registered trademarks and uses trademarks. For a list of trademarks of the OpenJS Foundation, please see our Trademark Policy and Trademark List. Trademarks and logos not indicated on the list of OpenJS Foundation trademarks are trademarks™ or registered® trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
Что такое Node.js и где он пригодится
Рассказываем, зачем нужен Node.js и почему его стоит выучить прямо сейчас.
Что такое Node.js?
Node.js (или просто Node) — это серверная платформа для работы с JavaScript через движок V8. JavaScript выполняет действие на стороне клиента, а Node — на сервере. С помощью Node можно писать полноценные приложения. Node умеет работать с внешними библиотеками, вызывать команды из кода на JavaScript и выполнять роль веб-сервера.
Редакция Нетологии
В чём преимущество Node?
C Node проще масштабироваться. При одновременном подключении к серверу тысяч пользователей Node работает асинхронно, то есть ставит приоритеты и распределяет ресурсы грамотнее. Java же, например, выделяет на каждое подключение отдельный поток.
Откуда Node вообще взялся?
Node появился в 2009 году благодаря Райану Далу. До этого в серверах царил подход «один поток на каждое соединение», а Дал придумал использовать систему, которая ориентирована на события. То есть реагирует на действие или бездействие и выделяет под это ресурс. Главная цель Node — построение масштабируемых сетевых серверов.
Кто-то из крупных компаний использует Node?
Конечно, вот неполный список:
eBay постепенно переходит на Node, как и веб-версия PayPal. В LinkedIn ещё в 2012 году переехали с Ruby On Rails на Node и сразу ощутили преимущества этой платформы: 27 серверов показали 20-кратное увеличение скорости работы.
Что я могу написать на Node?
Полноценную программу для веба, Linux, OS X и Windows.
А если подробнее?
Не вопрос. Node удобен для создания API — уже существуют удобные библиотеки вроде Loopback.
На этом языке можно писать кроссплатформенные приложения — в связке мобильный + десктоп Node помогает достигать синхронности. Например, когда вы пишете сообщение с телефона, оно сразу же появляется и на ноутбуке, и в вебе.
А что-нибудь модное Node умеет?
Конечно. Node — это родной дом всего «интернета вещей» (Internet of Things, IoT). Термостаты, фитнес-трекеры — всё это можно запрограммировать через Node.
Node случайно не теряет популярность?
Совсем наоборот. Вот график интереса к Node с 2009 года в поиске Google:
Интерес к Node стремительно растёт и уже обходит по этому показателю Ruby и Objective-C.
Убедили, хочу выучить Node. Что для этого нужно знать?
Перед тем, как осваивать Node, нужно знать JavaScript и в общих чертах понимать, как устроен клиент и сервер. Node — платформа для full-stack программистов, то есть для тех, кто может сделать приложение сам, а не специализируется на какой-то его части.
Альтернатива курса — программа «Веб-разработчик с нуля».
Курс
курс
курс
Веб-разработчик
Узнать больше
- Научим программировать на JavaScript и PHP
- 11 готовых проектов в портфолио по итогам обучения
- Научим пользоваться реляционными базами данных и SQL
- Изучите работу PHP на веб-сервере
- освоите MySQL
Что проходят во время обучения Node
- Back-end разработка на JavaScript с помощью Node.js.
- NoSQL база данных MongoDB.
- Angular — front-end фреймворк для построение динамических интерфейсов.
- Библиотека Express.js для организации REST API.
- Библиотека Socket.io для организации real-time коммуникации между back-end и front-end частями веб-приложения.
- Автоматизированное тестирование веб-приложений и TDD (Test Driven Development, разработка через тестирование).
- После прохождения программы вы сможете создать собственное SPA (single page application) и получите звание junior full-stack разработчика.
Хотите написать колонку для Нетологии? Читайте наши условия публикации. Чтобы быть в курсе всех новостей и читать новые статьи, присоединяйтесь к Телеграм-каналу Нетологии.
При подготовке материала использовались источники:
https://fructcode.com/ru/blog/what-nodejs-and-npm/
https://nodejs.org/ru/about