យើងគួររំលឹកឡើងវិញថា ការកំណត់ផ្លូវ (routing) គឺជាការកំណត់ផ្លូវចូលទៅកាន់ឯកសារណាមួយ នៅពេលដែលអ្នកចូលមើលគេហទំព័រចុចអាស័យដ្ឋានណាមួយ។ ដោយឡែក នៅក្នុងកម្មវិធី keystone មុននឹងធ្វើការកំណត់ផ្លូវណាមួយ យើងចាំបាច់ត្រូវបន្ថែមទិន្នន័យចំនួនពីរទៀត ចូលទៅក្នុងក្បួនឈ្មោះ keystone.init() នៅក្នុងឯកសារនៃកម្មវិធីមេ keystone.js ដោយធ្វើដូចខាងក្រោមនេះ៖
var keystone = require('keystone');
keystone.init({
'cookie secret': 'secure string goes here',
'name': 'mykeystone',
'user model': 'User',
'auto update': true,
'auth': true,
views: 'templates/views',
'view engine': 'ejs',
});
keystone.import('models');
keystone.start();
នៅលើបន្ទាត់េលេខ 9 ការសរសេរថា views: 'templates/views' គឺជាការកំណត់ថត templates/views ជាថតសំរាប់ដាក់ឯកសារដែលត្រូវយកមកបកប្រែ ដើម្បីបង្ហាញលទ្ធផលផ្សេងៗ នៅលើ browser ។
នៅលើបន្ទាត់លេខ 10 ការសរសេរថា 'view engine': 'ejs' គឺជាការកំណត់យកភាសា ejs ជាភាសាគំរូគេហទំព័រ (template language) សំរាប់បកប្រែបណ្តាឯកសារទាំងឡាយ ដែលមាននៅក្នុងថត views ។
បន្ទាប់មកទៀត យើងចាំបាច់ត្រូវទាញយកនិងតំលើងសាស្ត្រា ejs នៅក្នុងកម្មវិធី keystone របស់យើង ដោយសរសេរនៅលើបង្អួចខ្មៅថា npm install --save ejs ។
រួចពីនោះមក យើងចាំបាច់ត្រូវកំណត់ផ្លូវទៅកាន់ថតដែលនៅក្នុងនោះ យើងនឹងរក្សាទុកនូវបណ្តាឯកសារនៃការបង្ហាញផ្លូវទាំងឡាយ នៅក្នុងកម្មវិធី keystone របស់យើង។ ហើយជាទូទៅថតនោះត្រូវគេអោយឈ្មោះថាជា routes ។ ពិនិត្យកម្មវិធីខាងក្រោមនេះ៖
var keystone = require('keystone');
keystone.init({
'cookie secret': 'secure string goes here',
'name': 'mykeystone',
'user model': 'User',
'auto update': true,
'auth': true,
views: 'templates/views',
'view engine': 'ejs',
});
keystone.import('models');
keystone.set('routes', require('./routes'));
keystone.start();
នៅលើបន្ទាត់លេខ 14 ការសរសេរថា keystone.set('routes', require('./routes')); គឺជាការកំណត់យកថតឈ្មោះ routes ជាថតសំរាប់រក្សាទុកនូវបណ្តាឯកសារទាំងឡាយណា ទាក់ទងនឹងការកំណត់ផ្លូវចូលទៅកាន់ឯកសារផ្សេងៗ។
ដើម្បីឆ្លើយតបទៅនឹងការកំណត់ខាងលើនេះ យើងចាំបាច់ត្រូវបង្កើតថតឈ្មោះ routes ដែលនៅក្នុងនោះមានឯកសារ index.js មួយនិងថតរងឈ្មោះ views មួយទៀត ដែលនៅក្នុងនោះក៏មានឯកសារឈ្មោះ index.js មួយដែរ។
|--keystone
|--node_modules/
|--routes
|--index.js
|--views
|--index.js
|--models
|--User.js
|--updates
|--0.0.1-first-user.js
|--package.json
|--keystone.js
បន្ទាប់មកទៀត នៅក្នុងឯកសារ index.js ក្នុងថត routes យើងសរសេរកូដមួយចំនួនដូចខាងក្រោមនេះ៖
function routeFunction(req, res) {
res.render('index');
}
module.exports = function (app) {
app.get('/', routeFunction);
};
var keystone = require('keystone');
var importRoutes = keystone.importer(__dirname);
var routes = {
views: importRoutes('./views'),
};
exports = module.exports = function (app) {
app.get('/', routes.views.index)
};
ចំណែកឯនៅក្នុងឯកសារ index.js នៅក្នុងថត views វិញ យើងត្រូវសរសេរកូដដូចខាងក្រោមនេះ៖
module.exports = function (req, res) {
res.send('កម្មវិធី Keystone');
};
បន្ទាប់មានអ្វីៗរួចរាល់អស់ហើយ បើយើងដំណើរការកម្មវិធី keystone របស់យើង យើងនឹងបានលទ្ធផលដូចខាងក្រោមនេះ៖
យ៉ាងណាម៉ិញ បើសិនជាយើងចង់ប្រើប្រាស់ភាសាគំរូគេហទំព័រ EJS សំរាប់ស្រង់យកទិន្នន័យនៅក្នុងកម្មវិធី keystone មកសរសេរបង្ហាញនៅលើ browser នោះ យើងចាំបាច់ត្រូវបង្កើតថត templates/views ដើម្បីដាក់ឯកសារ ែញៃ ផ្សេងៗជាមុនសិន។
|--keystone
|--node_modules/
|--routes
|--index.js
|--views
|--index.js
|--templates
|--views
|--index.ejs
|--models
|--User.js
|--updates
|--0.0.1-first-user.js
|--package.json
|--keystone.js
លុះមានថត templates និថត views ទាំងពីរនេះហើយ យើងអាចសាកល្បងបង្កើតឯកសារ index.ejs មួយទុកនៅក្នុងថត views ។ ហើយនៅក្នុងឯកសារ index.ejs នេះ យើងអាចសរសេរកូដមួយចំនួនដូចខាងក្រោមនេះ៖
<!doctype html>
<html lang="en">
<head>
គេហទំព័រយើង
</head>
<body>
កម្មវិធី Keystone ដោយប្រើប្រាស់ភាសាគំរូគេហទំព័រ EJS
</body>
</html>
ដើម្បីយកឯកសារ index.ejs នេះទៅបកប្រែនិងបង្ហាញលទ្ធផលនៅលើ browser យើងចាំបាច់ត្រូវសរសេរកូដសារដើមឡើងវិញជាថ្មីទៀត នៅក្នុងឯកសារ index.js នៅក្នុងថតរង views នៃថតមេ routes ។
module.exports = function (req, res) {
res.render('index');
};
នៅលើបន្ទាត់លេខ 2 ការសរសេរថា res.render('index'); គឺជាការយកឯកសារ index.ejs នៅក្នុងថត templates/views មកបកប្រែនិងបង្ហាញលទ្ធផលនៅលើ browser ៕













