ដេណូ - ណូដដែលល្អជាងមុន?
Chhouk Davy| M-E, Programming, Space, Technology.
ថ្ងៃទី៖ 17 មិថុនា 2020
ប្រវែង៖ 2 នាទី
ដេណូ (Deno) បានចេញកំណែផ្លូវការដំបូង v1 នៅកំឡុងពាក់កណ្ដាលខែមុនខែឧសភា។ បើអ្នកតាមដានពីពិភពប្រូក្រាមមីងចុងក្រោយ ប្រហែលជាបានលឺមកហើយ។ វាទទួលបានចំណាប់អារម្មណ៍ច្រើនសមគួរណាស់ ហើយមានរហូតដល់អ្នកខ្លះគេនិយាយថ្ងៃអវសានរបស់ណូដជិតមកដល់ហើយទៀតផង។ អ៊ីចឹងថ្ងៃនេះ យើងមកមើលថាតើដេណូជាអ្វី វាខុសពីណូដយ៉ាងណាខ្លះ ហើយវាពិតជាល្អជាងណូដមែនដែរឫទេ។
ដេណូជាអ្វី? ចំណុចខុសគ្នារវាងដេណូ និង ណូដ
ដេណូ (Deno) ជាប្រូក្រាមដែល Secure សម្រាប់ដំណើការ JavaScript និង TypeScript ក្រៅវែបប្រៅស័រថ្មីមួយ។ អ្នកដែលបង្កើតដេណូ និងណូដជាមនុស្សតែមួយគឹដោយលោក Ryan Dahl។
ដេណូប្រើ TypeScript, Rust, Tokio (សម្រាប់ Event Loop) និង V8 (Rusty-V8 ជា JavaScript Engine) ដែលខុសពីណូដដែលប្រើ JavaScript, C++, LibUV (សម្រាប់ Event Loop) និង V8 (ជា JavaScript Engine)។
មែនទែនទៅវាស្រដៀងនឹងណូដមែនដោយគ្រាន់តែដេណូត្រូវបានសរសេរថ្មីដើម្បីកែកំហុសឆ្គងមួយចំនួន ឌីហ្សាញសារជាថ្មីឡើងវិញដើម្បីរ៉ាប់រងកំណែថ្មីៗរបស់ចាវ៉ាស្ក្រីបត៍ដែលចេញមក។ លោក Ryan Dahl ខ្លួនឯងបាននិយាយហើយពីចំនុចដែលគាត់ខកចិត្តមួយចំនួន របស់ណូដដែលមានដូចជា៖
- មិនប្រើ Promise ដោយប្រើ Event Emitter ជំនួស
- បញ្ហាសុវត្តិភាព (Dependencies ដែលយើងនបញ្ចូលក្នុង Project របស់យើងមានសិទ្ធអាន Disk, ចូល Network ជាដើម)
- Build System (GYP)
- ការប្រើ package.json ដែលនាំឲ្យមាន node_modules
- node_modules ផ្ទុក dependencies សម្រាប់ Project នីមួយមានន័យថាបើយើងមាន Project ច្រើនយើងនឹងមាន dependencies ដូចគ្នាច្រើន
- Centralized package registry និង package manager
- Require ដោយមិនចាំបាច់មាន extension (.js)
- ហ្វាល់ index.js ដែលមិនចាំបាច់បានធ្វើឲ្យការឡូដ module ស្មុគស្មាញ
គោដៅទីមួយដែលគាត់សរសេរដេណូនេះគឺដើម្បីកែចំណុចខ្វះខាតទាំងអស់នេះដោយចំណុចទាំងអស់នេះមិនអាចកែប្រែបានទេក្នុងណូដ។ ចំណែកគោលដៅទីពីរគឺដើម្បីធ្វើទំនើបកម្មដើម្បីធ្វើឲ្យវាកាន់តែងាយស្រួលប្រើដូចជា៖
- បន្ថែម Type System ដោយអាចប្រើ TypeScript បានដោយមិនចាំបាច់ត្រូវមាន Transpiler នោះទេ
- Tools ផ្ទាល់របស់ដេណូដូចជា Test Runner, Linter, Formatter និង Bundler
- Browser Compatibilities និងមុខងារជាច្រើនផ្សេងទៀត។
ចំណុចគួរឲ្យបាច់អារម្មណ៍
- គេត្រូវអនុញ្ញាត្តិសិទ្ធដើម្បីអាចចូលទៅកាន់ Disk, Network បាន។
- ដេណូស្គាល់ TypeScript ស្រាប់តែម្ដង។
- គេអាចប្រើ await បានដោយមិនចាំបាច់មាន async បាន។
- អត់មាន node_modules និង package.json ទៀតទេ ហើយបានចាំបាច់ npm install ទៀតទេ។ យើងគ្រាន់តែរាន់កូដយើងយកតែម្ដង។
- ES6 Import ស្រាប់ចេញពីស្រោម។
- អាចប្រើ Window Object ដូចដែលមាននៅក្នុង Browser បាន។
លេងជាមួយដេណូ
- បញ្ចូលដេណូ
សម្រាប់ Mac/Linux យើងអាចបញ្ចូលតាម Shell ៖
curl -fsSL https://deno.land/x/install/install.sh | sh
ឫបើប្រើ Mac យើងអាចបញ្ចូលតាម Homebrew ក៏បាន៖
brew install deno
សម្រាប់ Windows
iwr https://deno.land/x/install/install.ps1 -useb | iex
- បង្កើត Server តូចមួយ
បង្កើតហ្វាល់ TypeScript មួយដាក់ឈ្មោះអីក៏បាន ហើយសរសេរកូដដូចខាងក្រោមនេះ
/*
* Simple Server
*/
import { serve } from 'https://deno.land/std@0.57.0/http/server.ts'
const s = serve({ port: 8080 })
console.log('http://localhost:8080/')
for await (const req of s) {
req.respond({ body: 'Hello World! Hello Daseveny!\n' })
}
បន្ទាប់មករាន់
deno run --allow-net play-deno.ts
គ្រាន់តែបែបនេះ យើងបានបង្កើត Web Server តូចមួយបានហើយ។ ហើយបើយើងចូលទៅកាន់ http://localhost:8080 នោះយើងនឹងឃើញ Response ដែលបញ្ចូនត្រលប់មកពី Deno Server របស់យើង។
សរុបសេចក្ដី
ក្នុងអត្ថបទនេះ យើងបានដឹងត្រួសៗហើយពីដេណូ។ សំណួរសួរថា
បើដេណូកែរាល់កំហុសឆ្គងរបស់ណូដយ៉ាងនេះ តើវាពិតជាល្អជាងណូដមែនដែរទេ?
សម្រាប់ខ្ញុំ ខ្ញុំអាចនិយាយបានថា ពិត និងមិនពិត។ ពិតនៅត្រង់ថាវាត្រូវបានគិតសារជាថ្មី ហើយបន្ថែមចំណុចដែលល្អៗជាច្រើន។ ចំពោះមិនពិតនៅត្រង់ថា វាមិនល្អសម្រាប់ការងារផ្លូវការនៅឡើយទេដោយសារវានៅថ្មីពេក និងត្រូវការពេលបន្តិចទៀតដើម្បីឲ្យ Ecosystem របស់វារីកធំជាងនេះបន្តទៀត។ ហើយបើកំពុងសម្រេចចិត្តថាត្រូវរៀនមួយណា ខ្ញុំក៏នៅតែណែនាំឲ្យរៀនណូដ ព្រោះថាណូដស្ថិតក្នុងកម្រិតល្អមួយដែលយើងអាចយកវាមកប្រើការផ្លូវការ និងមានការងារជាច្រើនសម្រាប់ណូដ។ ហើយម្យ៉ាងទៀតបើចេះណូដហើយប្ដូរមកដេណូវិញក៏វាមានភាពងាយស្រួលដែរ គ្រប់យ៉ាងដែលអ្នកធ្វើក្នុងណូដនឹងមិនផ្លាស់ប្ដូរច្រើនទេនៅក្នុងដេណូ។ តែវាក៏មិនខាតអីដែរបើអ្នកសាកលេងជាមួយដេណូ។