Basics
Install MacOS: https://nodejs.org/en/download --> macOs Installer
NodeJS — интерпретатор JavaScript, основанный на движке V8. Тот же движок работает в браузерах на базе Chromium — он транслирует JavaScript в машинный код. Однако NodeJS исполняет код вне браузера, например на сервере. Так JavaScript из специализированного языка для сайтов превращается в универсальный язык программирования. NodeJS добавляет возможность работать с устройствами ввода-вывода через свой API (написанный на C++) и подключать библиотеки, написанные на разных языках, обеспечивая вызовы к ним из JavaScript-кода.
npm
npm — это пакетный менеджер JavaScript. Аналоги в других ЯП / системах — pip, apt. Этот менеджер по умолчанию устанавливается вместе с NodeJS. Как и с любым другим пакетным менеджером — можно устанавливать пакеты из гл обального хранилища.
Инициализация проекта.
npm init -y
Update npm version
npm install -g npm@latest
Пакетный менеджер может быть не только глобальным, но и локальным внутри компании. По умолчанию пакеты скачиваются из --registry=https://registry.npmjs.org/.
Если npm в компании локальный, в корне проекта можно найти файл .npmrc, где описаны разные параметры, в том числе и registry:
registry=https://npm.yandex.net/
nvm
- Install script:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
- Check versions:
nvm ls - Check current version:
node -v
- Intall version:
nvm install 20nvm install stable (last stable version)nvm install/uninstall 10.15.0 (install exact version)
- Use version:
nvm use 20 - Create .nvmrc file:
node -v > .nvmrc - Use node-version from .nvmrc file:
node use - Use installed version:
nvm use 10.15.0 - Use alisas:
nvm alias default 10.15.0
Импорты в nodejs
require
Как видно из примеров выше — можно импортировать хоть классы (сервис, контроллер), хоть функции (express).
Для экспорта достаточно использовать ключ exports в глобальном объекте module.
Для импорта — применить функцию require и передать путь к файлу (можно даже относительный).
Реализуем модуль и подключим его к index.js, чтобы можно было использовать функции и другую логику внутри него.
service.js— реализует логику определённой сущности;controller.js— будет использовать логику из файлаservice.js, чтобы реализовать бизнес логику;index.js— файл с запуском сервера, с использованием библиотеки Express.
Сервис
Сервис должен уметь обращаться, например, к GitHub API для получения списка публичных репозиториев.
class GithubService {
requestRepos(filters) {
// Принимаем какие-то фильтры
// Логика запроса. В данном случае она нас не интересует.
}
}
module.exports = GithubService;
Контроллер
Контроллер должен обрабатывать запрос от пользователя к серверу, приводить пришедшие данные к формату для сервиса по работе с GitHub API и возвращать полученные репозитории.
const GithubService = require('./service');
class GithubController {
getRepositories(req, res, next) {
const { body } = req;
const serviceFilters = something(body); // Приводим фильтры к нужному виду
// Какая-то бизнес логика
GithubService.requestRepos(serviceFilters)
.then(data => {
res.send(data);
})
.catch(error => {
next(error);
});
}
}
// Для экспорта достаточно использовать ключ exports в глобальном объекте module.
module.exports = {
controller: GithubController,
};
const express = require('express');
const { controller } = require('./controller');
const app = express();
app.get('/', controller.getRepositories);
app.listen(3000, function () {
console.log('Мы запустили приложение и можем ходить в гитхаб');
});
npm cli
Npm install with node automaticly.
Install
npm i -g package-name
npm i -g package-name@1.1.1 - версия 1.1.1
npm i -g package-name@latest - последняя опубликованная версия
npm i --save-dev package-name
Remove
npm remove -g package-name
npm remove --save-dev package-name
Update
npm update -g <package_name>
npm update --save-dev <package_name>
Update all packages
npm update -g
npm update --save-dev
Rebuild
Helpful command when need to reinstall package after change node version.
npm rebuild <package_name>
See installed: Localy npm list -g --depth 0
Globaly: npm list --save-dev --depth 0
Yarn
Install
npm install --global yarn || npm i -g yarn
yarn -v
-
Обновление пакетов:
yarn upgrade-interactive --latest -
Обновление пакетов:
npm update -
Обновление конкретных пакетов:
npm update express -
Обновление списка браузеров:
npx update-browserslist-db@latest -
Просмотреть просроченные пакеты:
npm outdated -
Проверка совместимости версий:
yarn audit --fix -
Очистка кэша:
yarn cache clean --force
Add package
yarn add <package--name>
Remove
yarn remove <package-name>
See all global packages
npm ls -g
Fix access to npm error
sudo chown -R 501:20 "/Users/evgenyleukhin/.npm"