ជាទូទៅ កម្មវិធីគេហទំព័រដំណើរការទៅដោយមានអ្នកចូលមើលគេហទំព័រចុចនេះឬចុចនោះ ក្នុងគោលបំណងមើលពត៌មានណាមួយនៅលើទំព័រណាមួយ។ បានន័យថា កម្មវិធីគេហទំព័រក៏ជាកម្មវិធីឆ្លើយតបហេតុការណ៍ (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 បាន។ យើងនឹងបានស្គាល់ពីភាសាគំរូគេហទំព័រនៅពេលខាងមុខនេះ៕