
យើងគួររំលឹកឡើងវិញថា ការកំណត់ផ្លូវ (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>ដើម្បីយកឯកសារ index.ejs នេះទៅបកប្រែនិងបង្ហាញលទ្ធផលនៅលើ browser យើងចាំបាច់ត្រូវសរសេរកូដសារដើមឡើងវិញជាថ្មីទៀត នៅក្នុងឯកសារ index.js នៅក្នុងថតរង views នៃថតមេ routes ។គេហទំព័រយើង </head> <body> កម្មវិធី Keystone ដោយប្រើប្រាស់ភាសាគំរូគេហទំព័រ EJS </body> </html>
module.exports = function (req, res) { res.render('index'); };

នៅលើបន្ទាត់លេខ 2 ការសរសេរថា res.render('index'); គឺជាការយកឯកសារ index.ejs នៅក្នុងថត templates/views មកបកប្រែនិងបង្ហាញលទ្ធផលនៅលើ browser ៕