Cheatsheet ExpressJS 2022

Tento článek předpokládá základní znalosti ExpressJS, pokud jste s Expressem noví, doporučuji začít s následujícím seznamem videí:

  • Seznam videí ExpressJS

Vytvoření nového projektu

Za předpokladu, že máte nainstalovaný NodeJS, otevřete své IDE do prázdné složky a v terminálu proveďte následující:

  • Vytvořte nový projekt uzlu npm init -y

  • instalační závislosti npm install express morgan dotenv

  • pokud nemáte nainstalovaný nodemon globálně, udělejte to npm install -g nodemon

  • vytvořte svůj počáteční soubor serveru, gitignore a env soubor touch server.js .env .gitignore

  • vložte následující do souboru .gitignore

.env
/node_modules
  • do souboru .env vložte následující, tento soubor slouží k definování proměnných, které nechcete mít ve svém kódu a které nejsou veřejně přístupné (klíče API, přihlašovací údaje k databázi, citlivé věci) nebo proměnných, které by se měly měnit v závislosti na kontextu .
PORT=5000

package.json

V package.json můžeme dělat užitečné věci:

  • Můžeme přidat skripty, můžete jich přidat, kolik chcete, ale zde jsou základy, které doporučuji.
"scripts: {
    "start": "node server.js",
    "dev": "nodemon server.js"
}

skripty lze spouštět pomocí příkazů npm run <command name> například můžeme spustit dev skript s npm run dev .

  • Můžeme si také vybrat, zda budeme používat commonjs nebo syntaxi modulu, commonjs bude výchozí, pokud nic neuděláme, ale pokud přidáme "type":"module" do package.json pak můžeme použít syntaxi modulu. To má vliv na to, jak věci dovážíme a vyvážíme.
Úkol CommonJS Modul ES
Import závislosti/souboru const something = require("something") import something from "something"
Export ze souboru module.exports = something export default something

Čemu dáváte přednost, je vaše vlastní preference, jen si uvědomte, že možná nebudete moci importovat soubory JSON pomocí modulů ES ve starších verzích (nebo vůbec používat moduly ES ve skutečně starých verzích) uzlu a použít k tomu experimentální příznak v novějších verzích. verze.

Základní nastavení serveru

Verze CommonJS

// bring in environment variables from a .env file
require("dotenv").config()

// import express and morgan
const express = require("express")
const morgan = require("morgan")

// create an application object
const app = express()

// define a PORT variable from the environment with a default value
const PORT = process.env.PORT || 4000

/////////////////////////////////////
// ALL YOUR MIDDLEWARE AND ROUTES GO HERE
app.use(morgan("tiny")) // middleware for logging
app.use(express.urlencoded({extended: true})) //middleware for parsing urlencoded data
app.use(express.json()) // middleware for parsing incoming json
app.use("/static", express.static("static")) // to set a folder for static file serving
/////////////////////////////////////

// Server Listener
app.listen(PORT, () => console.log(`Listening on port ${PORT}`))

Verze modulu ES

// Bring in environmental variables
import dotenv from "dotenv"
dotenv.config()

// import express and morgan
import express from "express"
import morgan from "morgan"

// create an application object
const app = express()

// define a PORT variable from the environment with a default value
const PORT = process.env.PORT || 4000

/////////////////////////////////////
// ALL YOUR MIDDLEWARE AND ROUTES GO HERE
app.use(morgan("tiny")) // middleware for logging
app.use(express.urlencoded({extended: true})) //middleware for parsing urlencoded data
app.use(express.json()) // middleware for parsing incoming json
app.use("/static", express.static("static")) // to set a folder for static file serving
/////////////////////////////////////

// Server Listener
app.listen(PORT, () => console.log(`Listening on port ${PORT}`))

Middleware

Middleware jsou pouze funkce, které dostávají tři argumenty:

  • req objekt požadavku, více o tom později
  • res objekt odpovědi, více o tom později
  • next funkce, která předá objekty req/res dalšímu middlewaru nebo trase.

Zde je příklad nejjednoduššího middlewaru

const middlewareFunction = (req, res, next) => {
 console.log("This is middleware")
}

Funkce middlewaru lze zaregistrovat pomocí .use metoda objektu aplikace nebo směrovačů.

// using the middleware on all requests
app.use(middlewareFunction)
// using the middleware on certain urls
app.use("/endpoint", middlewareFunction)

Mezi další populární middleware, které nejsou v předchozích úryvcích kódu, patří:

  • CORS Pro nastavení cors pro rozhraní API
  • Přepsání metody Přepsání metody požadavku při odesílání formuláře
  • express-session Pro nastavení cookies relace

A mnoho dalších...

Trasy

Trasy určují, na co servery odpoví na příchozí požadavek. Trasa je vytvořena pomocí jedné z následujících metod na aplikačním objektu nebo směrovači:

  • .all pro požadavky jakékoli metody
  • .get pro požadavky GET
  • .post pro požadavky POST
  • .put pro požadavky PUT
  • .delete pro požadavky DELETE

Všechny tyto funkce mají dva argumenty:

  • koncový bod
  • funkce „akce“, „Ovladač“ nebo „Route Handler“, která trvá req a res jako argumenty

Zde je příklad:

// writing pass an anonymous function
app.get("/endpoint", (req, res) =>  {
  res.send("The Response")
})

// using a named function
function routeHandler(req, res){
  res.send("the response")
}
app.get("/endpoint", routeHandler)

Objekt požadavku (res)

Objekt požadavku představuje data z příchozího požadavku a je předán všem middlewarovým a směrovacím rutinám.

-req.headers objekt s hlavičkami příchozího požadavku
-req.params objekt s libovolnými parametry trasy
-req.query objekt s libovolným klíčem/hodnotou z řetězce dotazu url
-req.body klíč/hodnoty objektu těla požadavku (analyzované middlewarem express.urlencoded nebo express.json)
-req.method metoda požadavku jako řetězec

a mnohem více

Objekt odpovědi (res)

Objekt odpovědi je objekt, který se používá k vytvoření odpovědi na požadavek. Primárně se skládá z pomocných funkcí pro různé typy odpovědí.

-res.send odešle textový, html nebo json požadavek v závislosti na tom, co je mu předáno
-res.json odeslat objekt nebo pole javascriptu jako odpověď json
-res.render vykreslí html odpověď ze šablony

Šablony vykreslování

Šablony vám umožňují dynamicky generovat html odpovědi, existuje několik šablon, které lze použít, zde je několik článků, kde se dozvíte, jak je používat.

  • Úvod do expresních šablon
  • Expresní šablona šablon

K vykreslení šablony používáme res.render funkce, která má dva argumenty:

  • název souboru, který se má najít ve složce zobrazení
  • javascriptový objekt s daty, která lze použít při vykreslování šablony (každý šablonovací jazyk by měl mít svůj vlastní způsob využití dat z objektu v šabloně)

Objekty směrovače

Cesty můžete seskupit pomocí směrovačů, které lze použít pro organizaci a aplikaci middlewaru na konkrétní skupinu cest.

Vytvoření routeru

// create the router object
const router = express.Router()
// register it with the application for routes with a certain prefix
app.use("/prefex", router)

Stejně jako aplikační objekt můžete do routeru registrovat middlewarové cesty

// router specific middleware
router.use(middlewareFunction)

// registering routes
router.get("/endpoint", routerHandler) // url is /prefix/endpoint

Připojování k databázím

Následující knihovny vám mohou pomoci připojit se k různým databázím.

  • mongoose pro připojení k mongoose blogu mongoose
  • vyrovnat ORM pro databáze SQL (postgres, mysql atd.)
  • objektivní ORM pro SQL databáze (postgres, mysql atd.)
  • waterline ORM pro SQL databáze (postgres, mysql atd.)

Provádění volání API

Mějte na paměti, že v uzlu nemůžete nativně používat načítání a jQuery je pouze frontendová knihovna. Ale máte několik možností.

  • node-fetch Knihovna, která replikuje funkci načítání prohlížeče
  • Axios Knihovna pro volání API
  • ZÍSKAL jsem knihovnu pro volání API
  • jehlu další knihovnu klienta http