-
Notifications
You must be signed in to change notification settings - Fork 194
Expand file tree
/
Copy pathserver.js
More file actions
81 lines (61 loc) · 3.2 KB
/
server.js
File metadata and controls
81 lines (61 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// Importeer het npm package Express (uit de door npm aangemaakte node_modules map)
// Deze package is geïnstalleerd via `npm install`, en staat als 'dependency' in package.json
import express from 'express'
// Importeer de Liquid package (ook als dependency via npm geïnstalleerd)
import { Liquid } from 'liquidjs';
// Maak een nieuwe Express applicatie aan, waarin we de server configureren
const app = express()
// Maak werken met data uit formulieren iets prettiger
app.use(express.urlencoded({extended: true}))
// Gebruik de map 'public' voor statische bestanden (resources zoals CSS, JavaScript, afbeeldingen en fonts)
// Bestanden in deze map kunnen dus door de browser gebruikt worden
app.use(express.static('public'))
// Stel Liquid in als 'view engine'
const engine = new Liquid()
app.engine('liquid', engine.express())
// Stel de map met Liquid templates in
// Let op: de browser kan deze bestanden niet rechtstreeks laden (zoals voorheen met HTML bestanden)
app.set('views', './views')
console.log('Let op: Er zijn nog geen routes. Voeg hier dus eerst jouw GET en POST routes toe.')
/*
// Zie https://expressjs.com/en/5x/api.html#app.get.method over app.get()
app.get(…, async function (request, response) {
// Zie https://expressjs.com/en/5x/api.html#res.render over response.render()
response.render(…)
})
*/
/*
// Zie https://expressjs.com/en/5x/api.html#app.post.method over app.post()
app.post(…, async function (request, response) {
// In request.body zitten alle formuliervelden die een `name` attribuut hebben in je HTML
console.log(request.body)
// Via een fetch() naar Directus vullen we nieuwe gegevens in
// Zie https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch over fetch()
// Zie https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify over JSON.stringify()
// Zie https://docs.directus.io/reference/items.html#create-an-item over het toevoegen van gegevens in Directus
// Zie https://docs.directus.io/reference/items.html#update-an-item over het veranderen van gegevens in Directus
const fetchResponse = await fetch(…, {
method: …,
body: JSON.stringify(…),
headers: {
'Content-Type': 'application/json;charset=UTF-8'
}
})
// Als de POST niet gelukt is, kun je de response loggen. Sowieso een goede debugging strategie.
// console.log(fetchResponse)
// Eventueel kun je de JSON van die response nog debuggen
// const fetchResponseJSON = await fetchResponse.json()
// console.log(fetchResponseJSON)
// Redirect de gebruiker daarna naar een logische volgende stap
// Zie https://expressjs.com/en/5x/api.html#res.redirect over response.redirect()
response.redirect(303, …)
})
*/
// Stel het poortnummer in waar Express op moet gaan luisteren
// Lokaal is dit poort 8000; als deze applicatie ergens gehost wordt, waarschijnlijk poort 80
app.set('port', process.env.PORT || 8000)
// Start Express op, gebruik daarbij het zojuist ingestelde poortnummer op
app.listen(app.get('port'), function () {
// Toon een bericht in de console
console.log(`Daarna kun je via http://localhost:${app.get('port')}/ jouw interactieve website bekijken.\n\nThe Web is for Everyone. Maak mooie dingen 🙂`)
})