ក្បួន​កណ្តាល


នៅ​ក្នុង​កម្មវិធី Express ដែល​ហៅ​ថា​ «ក្បួន​កណ្តាល» (middleware) គឺ​ជា​បណ្តា​ក្បួន​ខ្នាត​ទាំងឡាយ​ណា​ដែល​ត្រូវ​យក​មក​ប្រើ​ ក្នុង​គោលបំណង​សំរេច​បាន​លទ្ធផល​មួយ​ចំនួន​ ដើម្បី​យក​ទៅ​​កែច្នៃ​បង្កើត​ជា​លទ្ធផល​សំរេច​ផ្សេង​ៗ​ ដែល​ជា​ការឆ្លើយ​តប​ទៅ​នឹង​សំណើររបស់​អ្នក​ចូល​មើល​គេហទំព័រ​​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖
var http = require('http');
var express = require('express');
var app = express();
var path = require('path');
var port = process.env.PORT || 3000;

var indexRouter = require('./routes/index');

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

//ការយក​ក្បួន​កណ្តាល​មួយ​មក​ប្រើ​នៅ​ក្នុង​កម្មវិធី
app.use(function (req, res, next) {
  console.log('Time:', Date.now())
  next()
})

app.use('/', indexRouter);  

app.listen(port, function() {
  console.log('The server is running at port '+port);
});




នៅលើបន្ទាត់លេខ 13 ការសរសេរ​ថា app.use(function (req, res, next) { គឺ​ជាការយក​ក្បួន​កណ្តាល​មួយ​មក​ ក្នុង​គោលបំណង​បង្ហាញ​ពេល​ម៉ោង​ នៅ​ពេល​ដែល​​កម្មវិធី​ខាង​លើ​នេះ​មានដំណើរការ​​។

ដូចនេះ​យើងឃើញថា នៅ​ពេលយកមក​ប្រើ ក្បួន​កណ្តាលទទួលបាននូវ​ដំណឹង​មួយ​ដែលជា​ក្បួន​ឈ្មោះ next() ដែល​ត្រូវ​យក​ទៅ​នៅ​ទី​បញ្ចប់​នៃ​ក្បួន​កណ្តាល​ ដើម្បី​អោយ​កម្មវិធី​គេហទំព័រ​អាច​មាន​ដំណើរការ​បន្ត​ទៅ​ទៀត​។ ផ្ទុយ​ទៅវិញ បើ​គ្មាន​ការយកក្បួន​​ឈ្មោះ next() នេះ​មក​ប្រើប្រាស់​នៅ​ទី​បញ្ចប់​នៃ​ក្បួន​កណ្តាល​ទេ កម្មវិធី​គេហទំព័រ​នឹង​ជាប់​គាំង​នៅ​ត្រង់​នោះ ដោយ​មិន​អាច​ធ្វើការឆ្លើយតប​អ្វីទៅ​នឹង​សំណើរ​របស់​អ្នកចូលមើលគេហទំព័រ​​បាន​ឡើយ​។

មួយវិញទៀត នៅ​ក្នុង​កម្មវិធី​ខាង​លើ​នេះ ក្បួន​កណ្តាល​ត្រូវ​បាន​ទៅ​ប្រើរាល់លើក​ដែល​កម្មវិធីខាង​លើ​មានដំណើរការ ក៏ប៉ុន្តែ​បើ​យើង​ចង់​អោយ​ក្បួន​កណ្តាល​នេះ​ត្រូវ​យក​ទៅ​ប្រើប្រាស់​តែ​នៅ​ពេល​ណា​ដែល​មាន​ការ​ចុច​ចូលមើល​គេហទំព័រ​តាម​អាស័យដ្ឋានណាមួយ​ដ៏​ជាក់លាក់​នោះ យើង​ត្រូវ​ធ្វើ​ដូច​ខាង​ក្រោម​នេះ​៖
var http = require('http');
var express = require('express');
var app = express();
var path = require('path');
var port = process.env.PORT || 3000;

var indexRouter = require('./routes/index');

app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');

//ការយក​ក្បួន​កណ្តាល​មួយ​មក​ប្រើ​នៅ​ក្នុង​កម្មវិធី
app.use('/about', function (req, res, next) {
  console.log('Time:', Date.now());
  next()
});

app.use('/', indexRouter);  

app.listen(port, function() {
  console.log('The server is running at port '+port);
});


នៅ​លើ​បន្ទាត់​លេខ 13 ការសរសេរ​ថា app.use('/about', function (req, res, next) { គឺ​ជាការយក​ក្បួន​កណ្តាល​មក​ប្រើ​ តែ​ក្នុង​ករណី​ដែល​មាន​ចុច​ចូល​មើល​គេហទំព័រ​តាម​អាស័យដ្ឋាន «/aout» តែ​ប៉ុណ្ណោះ​។

លើស​ពី​នេះ​ទៀត ក្រៅ​ពីការប្រើប្រាស់ក្បួន​កណ្តាល​នៅក្នុង​កម្មវិធី​មេ យើង​ក៏​អាច​ប្រើប្រាស់​ក្បួន​នេះ នៅ​ក្នុង​ឯកសារ​ដែល​ជា​សាស្ត្រា​ដាច់​ដោយ​ឡែកផ្សេង​ៗ​ទៀត​បានដែរ​។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖
/* ./routes/index.js */
var express = require('express');
var router = express.Router();

//ការយក​ក្បួន​កណ្តាល​មួយ​មក​ប្រើ​នៅ​ក្នុង​កម្មវិធី
router.use(function (req, res, next) {
  console.log('Time:', Date.now());
  next();
});

router.get('/', function(req, res, next) {
  res.render('index');
});

module.exports = router;


នៅលើបន្ទាត់​លេខ 6 ការសរសេរ​ថា​ router.use(function (req, res, next) { គឺ​ជាការយក​ក្បួន​កណ្តាល​មក​ប្រើ​រាល់​លើក​ដែល​ក្បួន​ឈ្មោះ router() នៅ​ក្នុង​សាស្ត្រា index ត្រូវ​យក​ទៅ​ប្រើ​៕