Show Menu
Cheatography

Node.JS Cheat Sheet (DRAFT) by

Базовый синтаксис Node.JS + фреймворк Express

This is a draft cheat sheet. It is a work in progress and is not finished yet.

Синтаксис

Запуск консоли (REPL)
node
Запустить сервер
node файл.js
остановить сервер
ctrl+c
Подключить пакет
var something = requir­e('­пак­ет');
Выполнить функцию подклю­ченного пакета
someth­ing();

npm

Установка пакета
npm install пакет
Установка с сохран­ением в depend­encies (packa­ge.j­son)
npm install пакет --save

ejs

Установка ejs
npm install ejs --save
Синтаксис
Весь код пишется как html, куски js-кода вставляют в конструкции:
<%= код %>
- когда получаемое значение выводится в html (например вывод переменных)
<% код %>
- когда код в констр­укции не выводится (условия, циклы и т.п.)
Условие
<% if(условие) { %>
  <p>Выведется, только если выполн­яется условие</p>
<% } %>
Цикл
<% for(var i=0;i<­pos­ts.l­en­ght­;i++) { %>
  <div><%= posts[­i].c­ontent %></div>
<% } %>
Передать переменные в ejs-файл
res.re­nde­r("ф­айл.ej­s",{перем­енная: "­зна­чен­ие"});
- второй параметр - объект
Шаблоны (partials)
Хранятся в папке "views/partials"
Пример шаблона header.ejs:
<!D­OCTYPE html>...<­bod­y>
Включить шаблон
<% include partia­ls/­header %>

packag­e.json

packag­e.json хранит метаданные проекта
В разделе 'depen­den­cies' хранятся исполь­зуемые модули и версии
Сгенер­ировать packag­e.json:
npm init

entry point - начальный файл (обычно app.js)
пропустить пункт - нажать enter
 

Express

Подклю­чение express
var express = require('express');
var app = express();
- сохр. в переменную app
Routes
обраба­тывают http-запросы
Пример:
app.get("/",function(req,res){
  res.send("text");
});

req,res
- передаем объекты запроса и ответа в функцию
Ожидать запросы
app.li­ste­n(п­орт­,pr­oce­ss.e­nv.IP,callback);

Порт обычно
3000
или
proces­s.e­nv.PORT
Остальные запросы (404)
ссылка
"­*"

Так как выполн­яется первый подходящий route, то route для 404 должен идти последним
Редирект
res.re­dir­ect­("/п­уть­");
Параметры (перем­енные)
app.ge­t("r/:post/id/:title", function);

:post
и
:title
- параметры
Доступ к параметру
var параметр = res.pa­ram­s.п­ара­метр;

Параметры лучше обраба­тывать через
toLowe­rCase()
Параметр в число
Number­(re­q.p­ara­ms.п­ар­аметр);
Ответ
.send()
- ответ, выполн­яется один раз
.rened­er(­"­фай­л")
- ответ файлом (ejs/html)
Расширение файлов для render
app.se­t("view engine­"­,"ej­s");
- в функции render можно будет указывать только имя файла, без расширения (ejs)
Стили и скрипты
css и js файлы хранить в папке public (можно в подпапках)
Папку нужно подключить в app.js:
app.us­e(e­xpr­ess.st­ati­c("p­ubl­ic"));
- в адресах файлов не нужно будет указывать public ("/j­s/m­ain.js­", "­css­/ap­p.c­ss")
POST
app.po­st(­"­/ur­l",f­unc­tion);
Получить атрибут name тега input (POST)
req.bo­dy.i­np­ut_­name;
- для доступа к body нужен пакет body-p­arser
Подклю­чение body-p­arser
var bodyParser = require("body-parser");
app.use(bodyParser.urlencoded({extended: trued}));