Repository navigation
Front End | Closure
Closure is de combinatie van een functie die gebundeld is met een verwijzing naar een ander functie. Een closure geeft je vanuit een innerlijke functie toegang tot het bereik van een andere functie buiten de huidige functie.
module.exports = {
ensureAuthenticated: function(req, res, next) {
if (req.isAuthenticated()) {
return next();
}
req.flash('error_msg', 'Log in om dit bron te bekijken');
res.redirect('/users/login');
},
forwardAuthenticated: function(req, res, next) {
if (!req.isAuthenticated()) {
return next();
}
res.redirect('/dashboard');
}
};const { ensureAuthenticated, forwardAuthenticated } = require('../helpers/auth');
// Welkom pagina
router.get('/', forwardAuthenticated, (req, res) => res.render('index'));
// gebruiker dashboard inladen als de gebruiker ingelogd is.
router.get('/dashboard', ensureAuthenticated, (req, res) =>
res.render('dashboard', {
user: req.user
}),
);
// edit profile dashboard inladen als de gebruiker ingelogd is.
router.get('/edit-profile', ensureAuthenticated, (req, res) =>
res.render('edit-profile', {
user: req.user
}),
);In auth.js wordt er in een array twee diverse functies aangemaakt in combinatie met een npm package. Deze twee functies worden doormiddel van module.exports.
Module.exports is een ingebouwde NodeJS functie waarmee je een eigen module kunt aanmaken, die je kunt exporteren voor gebruik elders in je programma.
Als we naar het bestand auth.js kijken, dan zal je merken dat we in een array twee functies defineren. Deze functies zijn 'ensureAuthenticaded' en 'forwardAuthenticated'. Vervolgens gebruiken wij het sleutelwoord 'exports' om het beschikbaar te maken voor het importeren in een ander bestand. Deze functies importeren we vervolgens in index.js en voeren wij deze functies uit.
Om gebruik te kunnen maken van deze modules. Dienen wij deze eerst op te halen door middel van 'require' met een link naar het bestandsbron.
Elliott, E. (2019, 19 december). Master the JavaScript Interview: What is a Closure? Geraadpleegd op 14 april 2020, van https://medium.com/javascript-scene/master-the-javascript-interview-what-is-a-closure-b2f0d2152b36
Hibbard, J. (2019, 27 november). Understanding module.exports and exports in Node.js. Geraadpleegd op 14 april 2020, van https://www.sitepoint.com/understanding-module-exports-exports-node-js/
© Awana1. Alle rechten voorbehouden