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