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ějires
objekt odpovědi, více o tom pozdějinext
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
ares
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