ជាទូទៅ កម្មវិធី​គេហទំព័រដំណើរ​ការទៅ​ដោយ​មាន​​អ្នក​ចូល​មើល​គេហទំព័រ​ចុច​នេះ​ឬ​ចុច​នោះ ក្នុង​គោលបំណង​មើល​​ពត៌មាន​ណា​មួយ​នៅ​លើ​ទំព័រ​​ណា​មួយ​។ បាន​ន័យ​ថា កម្មវិធី​គេហទំព័រ​ក៏​ជា​កម្មវិធី​ឆ្លើយតប​ហេតុការណ៍​ (Event Driven Program) ដូច​ជា​កម្មវិធី​ផ្សេង​ៗ​ទៀត​ដែរ​ ពីព្រោះនៅ​ពេលដែល​អ្នក​​​ចូលមើល​គេហទំព័រ​ចុច​នេះ​ឬ​ចុច​នោះ ហេតុការណ៍​ខុស​ៗ​គ្នា​នឹង​កើត​មាន​​ឡើង ដែលទាម​ទារ​អោយ​មាន​ការឆ្លើយតប​ដ៏​សមស្រប​ណា​មួយ​ក្នុង​បរិបទ​ណា​មួយ​។

 

មួយវិញទៀត សំរាប់​អ្នក​អភិវឌ្ឍ​កម្មវិធី​គេហទំព័រ ទំព័រ​និមួយ​ៗ​​របស់​គេហទំព័រ​​​មាន​អាស័យដ្ឋានដោយឡែករៀង​ៗ​ខ្លួន (URL) ហើយ​ការ​ចុច​របស់​អ្នក​ចូល​មើល​គេហទំព័រ​ គឺ​ជា «សំណើរ» (request) ​ស្នើ​សុំ​អោយ​កម្មវិធី​គេហទំព័រ​ «ឆ្លើយតប»​ (response) មក​វិញ​ដោយ​បង្ហាញ​ព័ត៌មាន​របស់​ទំព័រ​ដែល​មាន​អាស័យដ្ឋានដូច​ដែល​​អ្នក​ចូល​មើល​​បាន​ចុច​។

 

សរុបមក «សំណើរ» និង «ការឆ្លើយតប» គឺ​ជា​ប្រធានបទ​​ស្នូល​នៃ​កម្មវិធី​គេហទំព័រ​​ទាំងឡាយ​។ ដូចនេះ ​គោលបំណងសំខាន់បំផុត​នៃ​កម្មវិធី​គេហទំព័រ គឺ​ការដោះស្រាយ​បញ្ហានៅ​​ជុំវិញ​ «សំណើរ & ការឆ្លើយតប» នេះ​។ ​ហើយ​ជាទូទៅ​ពាក្យ​ថា «សំណើរ» នៅ​ក្នុង​កម្មវិធី​គេហទំព័រ​ដែលភាសា​អង់គ្លេសហៅ​ថា request ត្រូវ​គេ​និយម​សរសេរ​អក្សរ​កាត់​ថា «req» និង​ពាក្យ​ថា «ការឆ្លើយតប» ដែល​ភាសា​អង់គ្លេស​ហៅ​ថា response ត្រូវ​គេ​និយម​សរសេរ​អក្សរ​កាត់​ថា «res» ។

 

ដូច​បាន​លើក​ឡើង​រួច​មក​ហើយ​ថា សំរាប់​កម្មវិធី​គេហទំព័រ នៅ​ពេល​ដែល​អ្នក​ចូលមើល​ចុច​ចង់​មើល​ទំព័រ​ណា​មួយ អាស័យដ្ឋាន​ (URL) របស់​ទំព័រ​នោះ​ត្រូវ​បាន​បញ្ជូន​ទៅ​កាន់​កម្មវិធី​គេហទំព័រ​ដើម្បី​ពិនិត្យ​និង​ធ្វើការឆ្លើយតប​ដ៏​សម​ស្រប​ណា​មួយ។ ហើយ​ជាទូទៅ ការឆ្លើយតប​​គឺ​ជាការបង្ហាញ​ព័ត៌មាន​​​​ដែល​ទាក់ទង​និង​អាស័យដ្ឋាននោះ​នៅ​លើ​ browser ។ យន្តការពិនិត្យ​​​​មើល​អាស័យដ្ឋាន​ដើំម្បី​​ធ្វើការឆ្លើយតប​​​ដ៏​សម​ស្រប​​ណា​មួយ​នោះ​ ត្រូវ​គេ​អោយ​ហៅ​​​​ជា​ភាសា​អង់គ្លេសថា «routing» ដែល​យើង​អាច​ប្រើ​ពាក្យ​ខ្មែរ​ថា «ការកំណត់ផ្លូវ» សំរាប់បកប្រែ​ពាក្យ​នេះ​​បាន​។

 

លើស​ពី​នេះ​ទៀត នៅ​ក្នុង​សាស្ត្រា Express រាល់ក្បួន​ខ្នាត​ទាំងឡាយ​ណា​ដែល​គេ​យកមក​ប្រើ​សំរាប់​​ធ្វើការ​ឆ្លើយ​តប​​ទៅ​នឹងសំណើរ​របស់​​អ្នក​ចូល​មើល​​គេហទំព័រ ត្រូវ​​បាន​គេ​បង្កើត​​​ឈ្មោះ​ថ្មី​មួយ​អោយ​វា​ថា​​ជា «middleware» ដែល​យើង​អាច​បង្កើត​ពាក្យ​ខ្មែរ​ថ្មី​មួយអោយ​វា​ដែរ​ថា «ក្បួន​កណ្តាល» ។

 

 

ជាទូទៅ​ ការឆ្លើយតប​ទៅ​នឹង​សំណើរណា​មួយ​របស់​អ្នក​ចូល​​មើល​គេហទំព័រ គឺ​​ជាការបង្ហាញ​ព័ត៌មាន​នៅ​លើ browser ​​ទាក់​ទង​នឹង​អាស័យដ្ឋាន​ណា​មួយ​​ដែល​ជា​សំណើរ​របស់​អ្នកចូល​មើល​។ ហើយ​យន្តការ​បង្ហាញ​ព័ត៌មាន​នៅលើ​ browser ​​នេះ ត្រូវ​បាន​គេ​កំណត់​ឈ្មោះ​ជា​ភាសា​អង់គ្លេស​ថា «view» ដែលយើង​អាច​​កំណត់​យក​ពាក្យ​ខ្មែរ​ថា «ការបង្ហាញ» សំរាប់​បក​ប្រែ​ពាក្យ​នេះ​បាន​ដែរ​​។

 

និយាយ​អោយ​ខ្លី នៅ​ក្នុង​សាស្ត្រា Express ដំណើរការ​របស់​កម្មវិធី​គេហទំព័រ​អាច​ត្រូវ​បង្រួម​មកជា សំណើរ - ការកំណត់ផ្លូវ/ក្បួន​កណ្តាល - ការបង្ហាញ​/ការឆ្លើយតប (request - routing/middleware - view/response) ។ ក៏ប៉ុន្តែ នៅ​ក្នុង​សាស្ត្រា​ផ្សេង​ៗ​ទៀត​ខុស​ពី​សាស្ត្រា Express ទំរង់​ដូច​ខាង​លើ​នេះ​ត្រូវ​​បាន​គេ​ហៅ​ថា​ជា​ទំរង់ MVC (Model-View-Controller) ។ ពិនិត្យ​កម្មវិធី​ខាង​ក្រោម​នេះ៖

 

var http = require('http');
var express = require('express');
var app = express();
//ការយក​សាស្ត្រា path មក​ប្រើ
var path = require('path');
var port = process.env.PORT || 3000;
 
app.get('/', function(req, res) {
  res.sendFile(path.join(__dirname, 'index.html'));
});
 
app.listen(port, function() {
  console.log('The server is running at port '+port);
});

 

<!DOCTYPE html>
<html>
<head>
<title>កម្មវិធី​គេហទំព័រ</title>
<link href="https://fonts.googleapis.com/css?family=Hanuman|Moul" rel="stylesheet">
</head>
<body>
<style>
    *{
        padding:0;
        margin:0;
    }
    body{
        font:14px/1.5 Hanuman;
    }
    header{
        font:30px/1.5 Moul;
        background:lavender;
        padding:30px 0 40px;
        text-align:center;
    }    
</style>
<header>កម្មវិធី​គេហទំព័រ</header>
</body>
</html>

 

នៅ​លើ​បន្ទាត់​លេខ 5 ការសរសេរថា var path = require('path') គឺ​ជា​ការយក​តម្រាមាន​ស្រាប់​​ឈ្មោះ path នៅ​ក្នុង​កម្មវិធី Node.js មក​ប្រើ​។

 

នៅ​លើ​បន្ទាត់​លេខ 8 ការសរសេរ​ថា app.get('/', function(req, res) គឺ​ជាការ​យក​ក្បួន​ឈ្មោះ get មក​ប្រើ​តាមរយៈ​សិស្ស​នៃ​ថ្នាក់ express ដើម្បី​បង្ហាញ​ព័ត៌មាន​​នៅ​លើ browser ទាក់ទង​នឹង​​ទំព័រ​ដើម​​ដែល​មាន​អាស័យដ្ឋាន​ជា «/» ។

 

នៅ​លើ​បន្ទាត់​លេខ 9 ការសរសេរ​ថា res.sendFile(path.join(__dirname, 'index.html') គឺ​ជាការយក​ក្បួន​ឈ្មោះ sendFile នៅ​ក្នុង​សាស្ត្រា Express មក​ប្រើ​ដើម្បី​បង្ហាញ​នៅ​លើ​ browser នូវ​បណ្តា​​ព័ត៌មាន​ទាំងឡាយ​ដែល​មាន​​នៅ​ឯកសារ​ឈ្មោះ index.html ស្ថិត​​នៅ​ក្នុង​ថត​ជាមួយ​នឹងឯកសារ​ដែល​ជា​កម្មវិធី​ខាង​លើ​នេះ​។ ក៏ប៉ុន្តែ ដើម្បី​កំណត់​ផ្លូវ​ទៅកាន់​ឯកសារ​ឈ្មោះ index.html នេះ យើង​ចាំបាច់​ត្រូវ​យក​ក្បួន​ឈ្មោះ join នៅ​ក្នុង​សាស្ត្រា​ path មក​ប្រើ​​។

 

ជាលទ្ធផល យើង​ពិនិត្យ​ឃើញ​ថា​ នៅ​ពេល​ដែលមាន​​អ្នក​ចូល​មើល​​ទំព័រ​មុខ ​​ដែល​មាន​អាស័យដ្ឋាន​ជា «/» របស់​គេហទំព័រ​បង្កើតឡើង​ដោយ​កម្មវិធី​ខាង​លើ​នេះ browser នឹង​បង្ហាញព័ត៌មាន​ដែល​ជារូបរាង​របស់​ទំព័រមុខ​​។ ​ផ្នែក​ក្បាល​នៃ​គេហទំព័រ​មាន​ពណ៌​ខុស​គ្នា​នឹង​​ផ្នែក​ដង​ខ្លួន​របស់វា ហើយ​ការ​សរសេរថា «កម្មវិធី​គេហទំព័រ» គឺ​ជា​ចំណងជើង​របស់​គេហទំព័រ។ ការកំណត់​រូបរាង់របស់​ទំព័រមុខ​នេះ ត្រូវ​បានធ្វើឡើងដោយ​ប្រើប្រាស់​ភាសា HTML និង CSS នៅ​ក្នុង​ឯកសារ​ឈ្មោះ index.html ។

 

សរុបមក យើង​សង្កេត​ឃើញ​ថា នៅ​ក្នុង​កម្មវិធី​គេហទំព័រ​ខាង​លើ​នេះ សំណើរ (request) របស់​អ្នក​ចូល​មើល​មាន​ទំរង់​ជា​អាស័យដ្ឋាន «/» ដែល​​ជា​ទំព័រ​ដើម​របស់​គេហទំព័រ ហើយ ការកំណត់​ផ្លូវ (routing) ត្រូវ​ធ្វើ​ឡើងតាមរយៈ​ក្បួន​ឈ្មោះ «get» ពី​ព្រោះ​​​ក្បួន​នេះ​​បាន​ប្រើប្រាស់​​​ក្បួន​មួយ​ទៀត​ឈ្មោះ «sendFile» ដើម្បី​កំណត់​យក​ឯកសារមានឈ្មោះ​ថា «index.html» ​មាន​នៅ​លើ​ server សំរាប់បញ្ជូន​ទៅ​កាន់ browser របស់​អ្នក​ចូល​មើល​គេហទំព័រ​ ជាការឆ្លើយតប​នឹង​សំណើរ «/» នេះ។

 

ដូចនេះ​ក្បួន​ឈ្មោះ​ get នេះ​មាន​នាទី​សំខាន់​ណាស់​ក្នុង​ការកំណត់​យកឯកសារណា​មួយ​នៅ​លើ​ server សំរាប់​ធ្វើ​ជា ការ​ឆ្លើយ​តប ​(response) ទៅ​នឹង​សំណើរ​​របស់​អ្នក​ចូល​មើល​គេហទំព័រ​​។ អាស្រ័យ​ហេតុនេះ​ហើយ​បាន​ជាគេ​ហៅ​វា​ថា​ជា ​​ក្បួនកំណត់​ផ្លូវ (router) ពីព្រោះ​វា​​មាន​នាទី​ជា​អ្នក​បើក​ផ្លូវ​ឬ​កំណត់​ផ្លូវ​ទៅ​កាន់​ឯកសារ​ណា​មួយ​នៅ​លើ​ server សំរាប់​បញ្ជូន​ទៅ​កាន់​​ browser ដើម្បី​ធ្វើ​​ជា ការឆ្លើយតប ទៅ​នឹង​ សំណើរ ​​ដែល​មាន​សណ្ឋាន​ជា​អាស័យដ្ឋានណា​មួយ។

 

មួយវិញទៀត ការបញ្ជូន​ឯកសារណា​មួយ​ទៅ​កាន់ browser ដើម្បី​ធ្វើ​ជាកា​រឆ្លើយតប​​នៅនឹង​សំណើរ​របស់​អ្នកចូលមើល គឺ​ជា​ជំរើស​របស់​អ្នកអភិវឌ្ឍ​គេហទំព័រ​។ ក៏ប់ុន្តែ​ ជាទូទៅសំរាប់​សំណើរ​ដែល​មាន​អាស័យដ្ឋានជា «/» គេនិយម​ធ្វើការ​ឆ្លើយតប​ទៅ​វិញ ដោយ​បញ្ជូន​ឯកសារ​មាន​លក្ខណៈ​ជា​ទំព័រដើម​របស់​គេហទំព័រ​​ តែ​​យើង​ក៏​អាច​បញ្ជូន​ឯកសារ​ផ្សេង​ពី​នេះ​បាន​ទៀត​ដែរ​។

 

លើស​ពី​នេះទៀត ឯកសារ​ឈ្មោះ «index.html» ដែល​ត្រូវ​បញ្ជូនទៅ​កាន់​ browser របស់​អ្នក​ចូល​មើល​នោះ ត្រូវ​បាន​សរសេរ​រៀបរៀង​ឡើង​ដោយ​ប្រើ​ភាសា HTML និង CSS ដើម្បី​ធ្វើ ការបង្ហាញ​ (view) ព័ត៌មាន​នៅ​លើ​ទំព័រ​ដើម​។ ក៏ប៉ុន្តែ​ការប្រើភាសា HTML និង CSS សំរាប់ធ្វើ ការបង្ហាញ ព័ត៌មាន​នៅ​លើ​ទំព័រ​ណា​មួយ​នោះ នៅ​មិន​ទាន់​គ្រប់​គ្រាន់​នៅ​ឡើយ​ទេ ពីព្រោះ​ភាសា HTML និង CSS មិន​អាច​អនុញ្ញាត​អោយ​យើង​អាច​យក​ទិន្ន័យ​ផ្សេង​ៗ​ពី​ក្នងកម្មវិធី Node.js មក​សរសេរ​នៅ​លើទំព័រ​ទាំងនោះបានឡើយ​ ហើយ​ជាទូទៅ គេច្រើន​ប្រើប្រាស់​ភាសា​ម៉្យាង​ទៀត​ហៅ​ថា «ភាសាគំរូគេហទំព័រ» (template language) ដើម្បី​អាច​យក​ទិន្នន័យ​ពីក្នុង​កម្មវិធី Node.js មកសរសេរ​បង្ហាញ​នៅ​លើ​ browser បាន​។ យើង​នឹងបាន​ស្គាល់​ពី​ភាសា​គំរូ​គេហទំព័រ​នៅ​ពេល​ខាង​មុខ​នេះ​៕