var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
ខាងលើនេះ គឺកម្មវិធីគោលនៅក្នុងកម្មវិធីគេហទំព័ររប់សយើង ដែលត្រូវបានបង្កើតឡើងជាស្វ័យប្រវត្តិ ដោយកញ្ចប់ express-application ដែលយើងទើបនឹងដំឡើងនៅពេលថ្មីៗនេះ។
នៅលើបន្ទាត់លេខ 13 ការសរសេរថា app.set('views', path.join(__dirname, 'views')); គឺជាការកំណត់ផ្លូវទៅកាន់ថតឈ្មោះ views ដែលនៅក្នុងនោះមានឯកសារផ្សេងៗសំរាប់ផ្គំគ្នាបង្កើតជាគេហទំព័រទាំងមូល។ បន្ទាប់ពីការកំណត់ផ្លូវនេះរួច រាល់ការយកយកឯកសារនៅក្នុងថតនោះមកប្រើ មិនទាមទារអោយយើងសរសេរអាស័យដ្ឋានទៅកាន់ថតនោះទៀតឡើយ គឺយើងគ្រាន់តែសរសេរឈ្មោះរប់សឯកសារនៅក្នុងថតនោះ គឺជាការស្រេច។
នៅលើបន្ទាត់លេខ 14 ការសរសេរថា app.set('view engine', 'ejs'); គឺជាការយកកំណត់យកភាសា EJS សំរាប់បញ្ជូលទិន្នន័យទៅក្នុងទំព័រផ្សេងៗ។
នៅលើបន្ទាត់លេខ 20 ការសរសេរថា app.use(express.static(path.join(__dirname, 'public'))); គឺជាការកំណត់ផ្លូវទៅកាន់ថតឈ្មោះ public ដែលនៅក្នុងនោះ ឯកសារទាំងឡាយនឹងត្រូវយកទៅប្រើផ្ទាល់តែម្តង ដោយមិនចាំបាច់សរសេរអាស័យដ្ឋានទៅកាន់ថតនោះឡើយ។ លើសពីនេះទៀត បណ្តាឯកសារនៅក្នុងថតនេះ នឹងត្រូវអាចបើកមើលបានដោយផ្ទាល់ ពីសំណាក់អ្ននចូលមើលគេហទំព័រ។
ក្រោយពីមានផ្នែកទន់ចាំបាច់បានសព្វគ្រប់អស់ហើយ យើងត្រូវបង្កើតឯកសារដែលជាតម្រា KNB ផ្ទាល់តែម្តង ដោយបង្កើតឯកសារមួយមានឈ្មោះថា knb.js ទុកនៅក្នុងថតឈ្មោះ routes ជាមួយនឹងឯកសារឈ្មោះ index និង users ។
ជាកិច្ចចាប់ផ្តើម យើងអាចបង្កើតទិន្នន័យមួយចំនួនទុកនៅក្នុងតម្រា KNB របស់យើង សំរាប់យកទៅប្រើប្រាស់នៅក្នុងឯកសារផ្សេងៗទៀតនៅក្នុងកម្មវិធីគេហទំព័ររប់សយើង មានដូចជាឯកសារឈ្មោះ index.js ជាដើម៖
//បង្កើតទិន្នន័យសំរាប់សរសេរនៅលើគេហទំព័រ
var data = {};
data.title = 'កម្មវិធីគេហទំព័រ KNB';
module.exports = {
options:data,
}
បន្ទាប់មកទៀត ដើម្បីយកទិន្នន័យនៅក្នុងតម្រា KNB របស់យើងទៅប្រើប្រាស់នៅក្នុងឯកសារ index.js យើងត្រូវធ្វើការកែតម្រូវនៅក្នុងនោះដូចខាងក្រោមនេះ៖
var express = require('express');
var router = express.Router();
var knb = require('./knb');
//បង្កើតទំព័រមុខ
router.get('/', function(req, res, next) {
res.render('index', knb.options);
});
module.exports = router;
នៅលើបន្ទាត់លេខ 4 ការសរសេរថា var knb = require('./knb'); គឺជាការប្រើបញ្ជា require ដើម្បីយកតម្រា KNB នៅក្នុងថតជាមួយគ្នាមកប្រើដោយដាក់ឈ្មោះអោយវាថា «knb» ។
នៅលើបន្ទាត់លេខ 8 ការសរសេរថា res.render('index', knb.options); គឺជាការយកក្បួនឈ្មោះ render មកប្រើដើម្បីបង្កើតទំព័រមុខ ដែលជាឯកសារឈ្មោះ index.ejs នៅក្នងថតឈ្មោះ views ដោយយកទិន្នន័យនៅក្នុងតម្រា KNB ទៅបញ្ចូលនៅក្នុងឯកសារនោះ។
ជាលទ្ធផល បើយើងដំណើរការកម្មវិធីគេហទំព័ររប់សយើង ហើយចូលមើលគេហទំព័រដែលមានអាស័យដ្ឋានជា http://localhost:3000/ យើងនឹងឃើញមានលទ្ធផលដូចខាងក្រោមនេះ៖













