Когда вы переходите на веб-страницу, сервер, на котором хранятся файлы для этой страницы, получает запрос и отправляет соответствующие файлы клиенту (вашему компьютеру). Во многих случаях это будет HTML-файл, который, вероятно, будет ссылаться на файл CSS, а также может ссылаться на файл JavaScript на том же сервере. Как правило, на статическом веб-сайте HTML-файл будет содержать все элементы содержимого для веб-сайта, CSS будет применять некоторые свойства стиля к элементам в HTML, а JavaScript может выполнять некоторые вычисления, которые могут быть получены при взаимодействии с пользователем. Это стандартные строительные блоки многих веб-сайтов, и они являются основными элементами того, что мы называем интерфейсной или клиентской веб-разработкой. Однако по мере развития технологий, по мере того, как наша зависимость от технологий возрастает и по мере того, как все больше людей развивают (без каламбура) веб-навыки, ценность серверных знаний возрастает.

Я только недавно начал изучать серверную веб-разработку, поэтому мои знания все еще очень ограничены, но в этом посте я надеюсь поделиться ценностью, которую я нахожу в нем, и дать некоторое представление о его полезности. Я не буду включать никаких примеров кода или значимых технических идей, но в конце сообщения я включу несколько ресурсов, которые были мне полезны, когда я начал изучать эту сферу веб-разработки.

Что такое Node.js?

Node.js - это фреймворк, который позволяет нам создавать серверные программы с помощью JavaScript. Понимание фундаментальных концепций JavaScript (общая структура синтаксиса, переменные, циклы, функции и объектная модель документа) в некоторой степени необходимо, прежде чем переходить к Node.js, но с хотя бы базовым пониманием этих вещей довольно легко начать работу с Node.js. JavaScript традиционно использовался для интерфейсных вычислений, таких как программирование ответов на взаимодействия с пользователем. PHP является и будет стандартом для программирования на стороне сервера, но Node.js позволяет тем, кто знаком с JavaScript как инструментом для интерфейсной разработки, быстро перейти к работе на стороне сервера.

Что такое ExpressJS?

ExpressJS - это библиотека для Node.js, которая упрощает методы HTTP. HTTP (протокол передачи гипертекста) - это метод, используемый для передачи файлов между серверами и клиентами. Основные методы HTTP: Get, Post, Put и Delete. Когда вы переходите на веб-страницу в веб-браузере, сервер получает запрос Get. Когда сервер получает этот запрос, он отвечает, обслуживая клиента с запрошенным файлом (часто это файл HTML), и браузер отображает его. Если сервер получает запрос на публикацию, его просят добавить что-то новое. Запрос Put предлагает серверу обновить существующий объект. Запрос на удаление просит сервер удалить объект. По сути, ExpressJS позволяет легко задействовать эти методы и манипулировать ими с помощью JavaScript в Node.js.

Что такое Socket.io?

Socket.io - еще одна библиотека Node.js. Он использует API веб-сокетов для создания соединений между клиентами. С Socket.io сервер может интерпретировать запросы и отправлять ответы всем (или любым) клиентам, подключенным к серверу.

Зачем нам это использовать?

Имея базовое понимание JavaScript, мы можем комбинировать Node.js с библиотеками Express и Socket.io для создания RTA (приложений реального времени). Это означает, что когда клиент подключается к серверу (а не просто обслуживает статические файлы), мы можем постоянно обновлять контент, который видят пользователи, в режиме реального времени, без необходимости обновлять свой браузер. Socket.io, в частности, позволяет нам обновлять контент в браузере одного пользователя в ответ на действия другого пользователя, подключенного к серверу. Таким образом, мы можем разрабатывать веб-приложения, такие как программы обмена мгновенными сообщениями, многопользовательские игры, инструменты для совместной работы и множество других вещей, о которых мы, возможно, даже не задумывались.

Почему нам должно быть до этого дело?

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

«С чего начать?»

Самыми первыми шагами будет понимание того, как работает Интернет в целом. Если вы хорошо понимаете роли файлов, клиентов и серверов, следующим шагом будет изучение основ HTML, CSS и JavaScript (в указанном порядке). Если это новость для вас, w3schools.com - отличный ресурс для изучения веб-технологий. Как только вы поймете, как работает JavaScript, будет полезно узнать, что такое Терминал / Командная строка и как в целом работать с ней. Обладая некоторыми знаниями об этом, вы будете готовы использовать Node.js для связи с сервером через JavaScript.

Когда я начал изучать эти концепции, я нашел эти руководства с tutorialspoint.com очень подробными и полезными:

Для node.js:



для ExpresJS:



для Socket.io: