gadget59.ru лекции
БД + JavaScript · Лекция 1 · 30 слайдов

Введение в JavaScript и Node.js для работы с базами данных

Введение в JavaScript и Node.js

Мы уже умеем работать с базой данных из Java. Теперь сделаем то же самое, но на JavaScript — одном из самых популярных языков в мире. Это позволит нам потом написать настоящее веб-приложение, которое работает с базой данных.

🟨 JavaScript 🟢 Node.js 📦 npm ⚡ async/await 📄 package.json
Это первая лекция из блока «Базы данных + JavaScript». Мы разберём: чем JavaScript отличается от Java, как установить Node.js, как работает npm (менеджер пакетов), что такое асинхронность и почему без неё невозможно работать с базой данных.
Формат: лекция + практика в конце. Следующие лекции — подключение к MS SQL Server из Node.js и построение REST API.

План лекции

Сегодня мы заложим фундамент. Вот что вы узнаете.

  • 1 Что такое JavaScript и чем он отличается от Java
  • 2 Где работает JavaScript: браузер и Node.js
  • 3 Установка Node.js
  • 4 Первый скрипт на JavaScript
  • 5 Переменные: let и const
  • 6 Функции: обычные и стрелочные
  • 7 Массивы и объекты
  • 8 npm и package.json — менеджер пакетов
  • 9 Асинхронность: зачем она нужна
  • 10 Promise и async/await
  • 11 Типичные ошибки
  • 12 Практика и домашнее задание
Если вы никогда не писали на JavaScript — не переживайте. Мы начнём с самых основ. Если писали — повторите и закрепите.

Что такое JavaScript?

JavaScript (сокращённо JS) — это язык программирования, который изначально создавался для «оживления» веб-страниц. Когда вы нажимаете кнопку на сайте и что-то происходит без перезагрузки страницы — это JavaScript.

Сегодня JavaScript вышел далеко за пределы браузера. На нём пишут:

🌐
Веб-сайты
кнопки, анимации, формы
🖥️
Серверы
через Node.js
📱
Мобильные приложения
React Native
🎮
Игры
браузерные и серверные
🤖
Боты
для Telegram, Discord
🗄️
API
связь с базами данных
JavaScript — один из трёх «китов» веб-разработки вместе с HTML (разметка) и CSS (стили). Но сегодня он используется и на сервере.

JavaScript ≠ Java

Несмотря на похожие названия, это совершенно разные языки. Их часто путают, но общего у них только слово «Java» в названии.

КритерийJavaJavaScript Год создания19951995 СоздательSun MicrosystemsBrendan Eich (Netscape) Типизациястрогая, статическаяслабая, динамическая Компиляциякомпилируется в байт-кодинтерпретируется Где работаетJVMбраузер и Node.js Синтаксисклассы, строгие типыфункции, объекты
Не путайте! Java и JavaScript — это как «кар» и «картошка»: звучит похоже, но общего мало.

Где работает JavaScript: браузер

Изначально JavaScript работает в браузере. Каждый браузер (Chrome, Firefox, Edge, Safari) содержит движок JavaScript — программу, которая выполняет код.

БраузерДвижок JavaScript Google ChromeV8 Mozilla FirefoxSpiderMonkey Microsoft EdgeV8 SafariJavaScriptCore

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

Движок — это «сердце» JavaScript. Он читает код и превращает его в машинные команды, понятные процессору.

Где работает JavaScript: Node.js

Node.js — это среда выполнения JavaScript вне браузера. Она позволяет запускать JavaScript-файлы прямо на компьютере или сервере, как мы запускали Java-классы через команду java.

Node.js построен на том же движке V8, что и Google Chrome. То есть под капотом Node.js работает тот же самый быстрый движок JavaScript.

JavaScript-код
→
Node.js (V8)
→
Файл, сервер, база данных
Благодаря Node.js мы можем писать серверный код на JavaScript — тот, который общается с базой данных, обрабатывает запросы и отдаёт ответы.
Node.js — это не язык. Это среда выполнения. JavaScript — язык, Node.js — «двигатель», который его запускает.

Установка Node.js

Node.js нужно установить на компьютер. Скачивается с официального сайта nodejs.org.

Шаг 1. Скачать установщик

На главной странице сайта есть две версии:

  • LTS (Long Term Support, долгосрочная поддержка) — рекомендуем. Стабильная, проверенная.
  • Current — новая, но может содержать ошибки.

Выберите LTS и скачайте установщик для Windows.

Шаг 2. Установить

Запустите установщик и следуйте инструкциям. Все настройки по умолчанию подходят.

Шаг 3. Проверить установку

Откройте командную строку (терминал) и введите:

node --version npm --version
Если обе команды выводят номера версий (например, v20.10.0 и 10.2.3) — всё установлено.

Первый скрипт на JavaScript

Создадим простой файл и запустим его через Node.js.

Шаг 1. Создать файл

Откройте любой текстовый редактор (лучше VS Code — Visual Studio Code, редактор кода от Microsoft) и создайте файл hello.js.

// hello.js console.log("Привет, JavaScript!");

Шаг 2. Запустить

В терминале (в той же папке, где лежит файл) выполните:

node hello.js
В консоли появится: «Привет, JavaScript!». Это ваш первый запущенный скрипт на Node.js.
console.log — это аналог System.out.println в Java. Он выводит текст в консоль.

Переменные: let и const

В современном JavaScript используют два ключевых слова для создания переменных.

Ключевое словоЧто значитМожно ли менять letобъявить переменнуюда constобъявить константунет
let age = 25; // обычная переменная age = 26; // можно менять const name = "Иван"; // константа // name = "Пётр"; // ошибка! const менять нельзя

В старом коде вы можете встретить var. Сегодня его не используют — у него проблемы с областью видимости.

Никогда не используйте var. Всегда let или const. Правило: const по умолчанию, let только если значение реально меняется.

Типы данных в JavaScript

В JavaScript типы данных делятся на две группы: простые (примитивы) и сложные (объекты).

🔢
number
число: 42, 3.14, -7
📝
string
строка: "Привет", 'Hello'
✅
boolean
true или false
🤷
null
пустое значение, заданное явно
🚫
undefined
значение не задано
📦
object
объект, массив, функция
В отличие от Java, в JavaScript не нужно указывать тип. let x = 5 — сам определит, что это число.
Проверить тип можно оператором typeof: typeof 42 → "number".

Функции: обычные

Функция — это блок кода, который можно вызывать по имени. Аналог метода в Java.

// Обычная функция function greet(name) { return "Привет, " + name + "!"; } console.log(greet("Иван")); // Привет, Иван!
  • function — ключевое слово.
  • greet — имя функции.
  • (name) — параметры.
  • return — что вернуть.
Функции — это «строительные блоки» программы. Мы выносим повторяющийся код в функцию и вызываем её, когда нужно.

Функции: стрелочные

В современном JavaScript чаще используют стрелочные функции — они короче и удобнее.

// Обычная функция function add(a, b) { return a + b; } // Стрелочная функция — то же самое, но короче const add = (a, b) => a + b; console.log(add(2, 3)); // 5
СинтаксисЧто значит (a, b) => a + bдва параметра, вернуть сумму x => x * 2один параметр, вернуть x*2 () => 42без параметров, вернуть 42 x => { console.log(x); }блок с несколькими строками
Стрелочные функции — это те же функции, но записанные короче. Если в функции одна строка с return, его можно не писать.

Массивы

Массив — это список значений. Аналог int[] в Java, но может хранить любые типы.

const names = ["Иван", "Мария", "Пётр"]; console.log(names[0]); // Иван console.log(names.length); // 3 names.push("Ольга"); // добавить в конец names.forEach(n => console.log(n));
МетодЧто делает push(x)добавить в конец pop()удалить последний lengthколичество элементов forEach(fn)пройти по всем элементам map(fn)преобразовать каждый элемент filter(fn)оставить только подходящие

Объекты

Объект — это набор пар «ключ: значение». Аналог класса в Java, но без описания.

const person = { name: "Иван", age: 25, city: "Москва" }; console.log(person.name); // Иван console.log(person["age"]); // 25 person.age = 26; // изменить person.email = "ivan@mail.ru"; // добавить новое поле
Объекты в JavaScript — это основа. База данных возвращает строки, и каждая строка — это объект. Именно с такими объектами мы будем работать.
Массив объектов — самая частая структура в JavaScript. Например, результат запроса «все книги» — это [{title, year}, {title, year}, ...].

Что такое npm?

npm (Node Package Manager, «менеджер пакетов Node.js») — это инструмент, который скачивает и подключает сторонние библиотеки. Аналог Maven в Java.

Ваш проект
→
npm
→
Библиотеки

С помощью npm мы установим:

  • mssql — драйвер для работы с MS SQL Server;
  • express — веб-фреймворк для создания API;
  • dotenv — для хранения настроек подключения в отдельном файле.
npm автоматически устанавливается вместе с Node.js. Ничего отдельно скачивать не нужно.

package.json — паспорт проекта

package.json — это файл, который описывает ваш проект: имя, версию, зависимости (библиотеки, которые он использует).

// Создать package.json npm init -y

Получится файл примерно такого содержания:

{ "name": "library-jdbc", "version": "1.0.0", "description": "Библиотека на Node.js", "main": "index.js", "scripts": { "start": "node index.js" }, "dependencies": {} }
ПолеЧто значит nameимя проекта versionверсия mainглавный файл scriptsкоманды запуска dependenciesсписок библиотек

Установка библиотеки через npm

Установить библиотеку просто: одна команда в терминале.

npm install mssql

Что произойдёт:

  1. npm найдёт библиотеку mssql в своём реестре (хранилище пакетов).
  2. Скачает её и все её зависимости в папку node_modules/.
  3. Добавит запись в package.json в раздел dependencies.
  4. Создаст файл package-lock.json — точный список версий всех зависимостей.
Папку node_modules/ никогда не отправляют в Git (систему контроля версий). Она огромная и легко восстанавливается командой npm install.
Если вы склонировали чужой проект, где нет node_modules/, просто выполните npm install — и все библиотеки установятся автоматически.

Что такое асинхронность?

Прежде чем работать с базой данных, нужно понять асинхронность — главное отличие JavaScript от Java.

⏳
Синхронный код
Выполняется по порядку. Каждая строка ждёт завершения предыдущей.
⚡
Асинхронный код
Не ждёт. Начинает долгую операцию и идёт дальше.

Представьте, что вы заказали пиццу. Синхронно — стоите у двери и ждёте. Асинхронно — занимаетесь своими делами, а когда привезут, вам позвонят.

Запрос к базе данных — это долгая операция. Если её ждать «в лоб», программа замрёт. JavaScript решает это через асинхронность.

Почему база данных — это долго

Запрос к базе данных — это:

  1. Отправить команду по сети на сервер базы.
  2. Сервер выполняет запрос (может занять секунды).
  3. Отправить результат обратно по сети.
  4. Получить результат в программе.

Всё это время (миллисекунды, а иногда секунды) программа ждёт.

Если ждать синхронно, сервер не сможет обработать другие запросы, пока выполняется один. Представьте, что сайт обслуживает одного пользователя за раз. Остальные ждут.
Асинхронность позволяет серверу принимать много запросов одновременно. Именно поэтому Node.js так популярен для веб-серверов.

Promise — обещание результата

Promise (по-английски «обещание») — это объект, который представляет результат асинхронной операции. Сейчас результата нет, но он будет.

Promise
→
Ожидание
→
Результат

У Promise три состояния:

⏳
pending
ожидание
✅
fulfilled
успешно выполнено
❌
rejected
ошибка
Аналогия: вы заказали книгу в интернет-магазине. Вам прислали номер заказа (Promise). Через несколько дней книга приедет (fulfilled) или придёт сообщение, что её нет в наличии (rejected).

async/await — простой способ работы с Promise

Работать с Promise через .then() неудобно. Придумали async/await — синтаксис, который делает асинхронный код похожим на синхронный.

// Было (через .then) getData().then(data => { console.log(data); }); // Стало (через async/await) async function showData() { const data = await getData(); console.log(data); }
Ключевое словоГде ставитсяЧто значит asyncперед функциейфункция асинхронная, вернёт Promise awaitвнутри async-функцииподождать результат Promise
Именно async/await мы будем использовать для всех запросов к базе данных. Это современный стандарт.

Пример: имитация запроса к базе

Пока у нас нет настоящей базы, сымитируем её функцию, которая «думает» 2 секунды.

// Имитация запроса к базе — ждёт 2 секунды function fetchBooks() { return new Promise((resolve) => { setTimeout(() => { resolve(["Евгений Онегин", "Война и мир"]); }, 2000); }); } async function main() { console.log("Запрашиваем книги..."); const books = await fetchBooks(); console.log("Получили:", books); } main();

Что произойдёт:

  1. Сразу выведется «Запрашиваем книги...».
  2. Программа «подождёт» 2 секунды на строке await.
  3. Затем выведется «Получили: [...]».
setTimeout — встроенная функция JavaScript, которая выполняет код через указанное количество миллисекунд. Мы используем её, чтобы сымитировать задержку.

Обработка ошибок: try/catch

Запрос к базе может упасть: сеть пропала, сервер не отвечает, синтаксис SQL неверный. Нужно обрабатывать ошибки.

async function main() { try { const books = await fetchBooks(); console.log(books); } catch (error) { console.error("Ошибка при запросе:", error.message); } }
  • try — блок, где может возникнуть ошибка.
  • catch — блок, где мы её ловим.
  • error.message — текст ошибки.
Это точно та же конструкция try-catch, что и в Java. Синтаксис похож, смысл тот же.

Типичные ошибки новичков

1. Забыл await
Получите не результат, а Promise. Всегда ставьте await перед асинхронной функцией.
2. Забыл async
Использовать await можно только внутри async function. Иначе — ошибка.
3. Использование var
Устаревший var имеет странную область видимости. Используйте let или const.
4. Сравнение через ==
В JavaScript == приводит типы. Всегда используйте === (строгое сравнение).
5. Забыли установить библиотеку
Ошибка «Cannot find module». Нужно выполнить npm install имя_пакета.
6. Ошибка в try/catch
Поймали ошибку, но ничего с ней не сделали. Всегда логируйте или выводите сообщение.

Шпаргалка

Сохраните этот слайд — здесь всё, что нужно для старта.

ЗадачаКод Объявить переменнуюlet x = 5; Объявить константуconst PI = 3.14; Вывести в консольconsole.log("Привет"); Функцияfunction add(a, b) { return a + b; } Стрелочная функцияconst add = (a, b) => a + b; Массивconst arr = [1, 2, 3]; Объектconst p = { name: "Иван" }; Асинхронная функцияasync function f() { ... } Дождаться Promiseconst x = await f(); Обработка ошибокtry { ... } catch (e) { ... }
Если помните эти команды — вы готовы к работе с базой данных из JavaScript.

Итоги лекции

Подведём итоги. Вот что вы теперь знаете.

  • ✅ JavaScript — язык для браузера и сервера.
  • ✅ Node.js — среда выполнения JavaScript вне браузера (на движке V8).
  • ✅ npm — менеджер пакетов, аналог Maven в Java.
  • ✅ package.json — описание проекта и его зависимостей.
  • ✅ let и const — современные способы объявить переменную.
  • ✅ Функции: обычные и стрелочные.
  • ✅ Массивы и объекты — основа структур данных в JavaScript.
  • ✅ Асинхронность — критически важна для работы с базой.
  • ✅ Promise и async/await — современный синтаксис.
  • ✅ try/catch — обработка ошибок.
В следующей лекции — подключение к MS SQL Server из Node.js через пакет mssql.

Домашнее задание

Задания для самостоятельной работы. Первые три обязательны, остальные — для оценки «отлично».

  1. Установите Node.js (LTS-версию) и проверьте через node --version.
  2. Создайте файл hello.js и запустите его через node hello.js.
  3. Создайте папку myproject, выполните в ней npm init -y и установите пакет mssql.
  4. Напишите функцию, которая принимает массив чисел и возвращает их сумму. Используйте стрелочную функцию.
  5. Создайте массив объектов books (title, year) и выведите только те книги, которые изданы после 1950 года (используйте filter).
  6. Напишите асинхронную функцию, которая «ждёт» 3 секунды и выводит «Готово». Используйте Promise и setTimeout.
Если задание кажется сложным — разбейте его на части. Одна функция = одна задача.

Что дальше?

Мы закончили введение. Дальше — самое интересное.

  • Лекция 2: подключение к MS SQL Server из Node.js (пакет mssql, пул соединений, SELECT, INSERT с параметрами).
  • Лекция 3: REST API с Express и MSSQL (GET, POST, PUT, DELETE, JSON-ответы).
  • Практика 1: создание API «Библиотека» на Node.js + Express + MSSQL.
  • Практика 2: финальный проект «Учёт выдач книг» — соединение таблиц, обработка ошибок, валидация, защита от SQL-инъекций.
JavaScript + база данных — это фундамент современного backend-разработчика. Освоив это, вы сможете делать настоящие веб-приложения.

Советы перед стартом

Несколько советов, которые сэкономят вам время.

💻
Используйте VS Code
Бесплатный редактор от Microsoft. Подсветка синтаксиса, автодополнение, отладка.
📖
Читайте сообщения об ошибках
JavaScript пишет, что именно не так и в какой строке.
🧪
Экспериментируйте
Меняйте код, запускайте снова. Это лучший способ учиться.
🚫
Не бойтесь ошибок
Каждая ошибка — это подсказка, что нужно исправить.
JavaScript — дружелюбный язык. Начать на нём проще, чем на Java. Главное — не сдаваться при первых ошибках.

Спасибо за внимание!

🟨

JavaScript — это язык, на котором говорит современный интернет

Теперь вы умеете запускать JavaScript через Node.js, устанавливать библиотеки через npm и работать с асинхронностью. На следующей лекции — подключение к базе данных.

🟨 JavaScript 🟢 Node.js 📦 npm ⚡ async/await 🚀 база данных