Рубрики
Без рубрики

Что именно есть node.js?

Node.js – это среда выполнения JavaScript. Звучит отлично, но что это значит? Как это работает? Время выполнения Node.js включает в себя все необходимое для выполнения программы, написанной в JavaScript. Если вы знаете Java, вот небольшая аналогия.

Автор оригинала: FreeCodeCamp Community Member.

Node.js – это среда выполнения JavaScript. Звучит отлично, но что это значит? Как это работает?

Время выполнения Node.js включает в себя все необходимое для выполнения программы, написанной в JavaScript.

Node.js возникли в наличии, когда оригинальные разработчики JavaScript продлили его от чего-то, что вы можете запустить только в браузере для чего-то, что вы могли бы работать на вашем компьютере в качестве автономной приложения.

Теперь вы можете сделать гораздо больше с JavaScript, чем просто создание сайтов интерактивных.

JavaScript теперь имеет возможность делать то, что могут сделать другие языки сценариев, как Python.

Как ваш браузер JavaScript и Node.js работают на двигателе времени выполнения V8 JavaScript. Этот двигатель имеет ваш код JavaScript и преобразует его в более быстрый машинный код. Машинный код – низкоуровневый код, который компьютер может работать без необходимости сначала интерпретировать его.

Почему node.js?

Вот официальное определение, указанное на официальном узел. Сайт :

Мы уже обсудили первую строку этого определения: «Node.js® – это JavaScript Runtime, построенный на двигателе javascript Chrome V8». Теперь давайте понять две другие линии, поэтому мы можем узнать, почему Node.js настолько популярен.

Ввод/вывод относится к вводу/выводу. Это может быть все, что начиная от чтения/записи локальных файлов, чтобы сделать HTTP-запрос на API.

Ввод/вывод требует времени и, следовательно, блокирует другие функции.

Рассмотрим сценарий, в котором мы запрашиваем базу данных Backend для деталей пользователя1 и user2, а затем распечатайте их на экране/консоли. Ответ на этот запрос требует времени, но оба запроса пользовательских данных могут быть выполнены независимо и одновременно.

Блокировка ввода/вывода

В методе блокировки запрос данных USER2 не начинается до тех пор, пока данные User1 не будут напечатаны на экран.

Если это был веб-сервер, нам придется начать новый поток для каждого нового пользователя. Но JavaScript – это однорепенное (не совсем, но имеет однопоточный контур событий, который мы будем обсуждать немного позже). Так что это сделает JavaScript не очень хорошо подходящим для многопоточных задач.

Вот где находится неблокирующая часть.

Не блокировка ввода/вывода

С другой стороны, используя запрос без блокировки, вы можете инициировать запрос данных для пользователя2, не дожидаясь ответа на запрос на пользователя1. Вы можете начать оба запроса параллельно.

Этот неблокирующий ввод/вывод устраняет необходимость в нескольких потоках, поскольку сервер может обрабатывать несколько запросов одновременно.

Петля событий JavaScript

Если у вас есть 26 минут, посмотрите это отличное видео объяснение контура события узла:

В противном случае вот быстрый пошаговый объяснение того, как работает петли для событий JavaScript.

  1. Толчок Главная () на стек вызова.
  2. Толчок console.log () на стек вызова. Это затем бежит сразу и воет.
  3. Толчок Setimeate (2000) на стек. Setimeate (2000) это узел API. Когда мы называть это, мы регистрируем пару событий-обратного вызова. Событие будет ждать 2000 миллисекунд, то обратный вызов – это функция.
  4. После регистрации в APIS Setimeate (2000) Получается из стека вызовов.
  5. Теперь второй Setimeate (0) зарегистрирован так же. Теперь у нас есть два API узла, ожидающие выполнения.
  6. После ожидания 0 секунд, Setimeate (0) Получает переход к очереди обратного вызова, и то же самое происходит с Setimeate (2000) Отказ
  7. В очереди обратного вызова функции ждут пустые стеки вызовов, потому что только одно утверждение может выполнить время. Это позаботится о контуре события.
  8. Последний console.log () пробегает, а Главная () Получается из стека вызовов.
  9. Контур событий видит, что стек вызова пуст, а очередь обратного вызова не пуста. Таким образом, он перемещает обратные вызовы (в порядке первоначального порядка) в стек вызова для выполнения.

NPM

Это библиотеки, построенные потрясающему сообществу, которое решит большинство ваших общих проблем. NPM (Unode Package Manager) имеет пакеты, которые вы можете использовать в ваших приложениях, чтобы сделать ваше развитие быстрее и эффективным.

Требовать

Требуют, делает три вещи:

  • Он загружает модули, которые приходят в комплекте с Node.js, как файловая система и http из Node.js API Отказ
  • Он загружает сторонние библиотеки, такие как Express и Mongoose, который вы устанавливаете из NPM.
  • Это позволяет вам потребовать собственных файлов и модуляризации проекта.

Требуется функция, и она принимает параметр «Путь» и возвращает Module.exports Отказ

Модули узлов

Модуль узла – это многоразовый блок код, существование которого не случайно влияет на другой код.

Вы можете написать свои собственные модули и использовать его в различных приложении. Node.js имеет набор встроенных модулей, которые вы можете использовать без какой-либо дополнительной установки.

V8 Turbo-заряды JavaScript, используя C ++

V8 – это время выполнения выполнения с открытым исходным кодом, написанным в C ++.

JavaScript -> V8 (C ++) -> Машинный код

V8 реализует скрипт, называемый ECMAScript, как указано в ECMA-262. Ecmascript был создан ECMA International для стандартизации JavaScript.

V8 может запустить автономный или может быть встроен в любое приложение C ++. У него есть крючки, которые позволяют вам написать свой собственный код C ++, который вы можете сделать доступным для JavaScript.

Это, по сути, позволяет добавлять функции на JavaScript, встроен V8 в код C ++, чтобы ваш код C ++ понимать больше, чем в противном случае стандарт ECMAScript.

Редактировать: Как доверил мое внимание Грег Бульмаш , существует множество различных двигателей времени выполнения JavaScript, помимо V8 Chrome, как Spidermonkey by Mozilla, Chakra от Microsoft и т. Д. Детали того же можно найти на Эта страница Отказ

События

Что-то, что произошло в нашем приложении, на которое мы можем ответить. Есть два типа событий в узле.

  • Системные события: C ++ Core из библиотеки под названием Libuv. (Например, закончил читать файл).
  • Пользовательские события: ядро JavaScript.

Написать Hello World в Node.js

Мы должны сделать это, не так ли?

Сделайте файл app.js и добавьте его к нему.

console.log("Hello World!");

Откройте терминал узла, измените каталог в папку, где файл сохранен и запущен Узел App.js Отказ

БАМ – вы только что написали Hello World в Node.js.

Существует тонна ресурсов, которые вы можете использовать узнать больше о Node.js, включая FreeCodeCamp.org.