ដេណូ - ណូដដែលល្អជាងមុន?

Chhouk Davy| M-E, Programming, Space, Technology.

ថ្ងៃទី៖ 17 មិថុនា 2020

ប្រវែង៖ 2 នាទី

រូបដំណាងដេណូ

ប្រភពរូបថត៖ deno.land

ដេណូ (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 បាន។

លេងជាមួយដេណូ

  1. បញ្ចូលដេណូ

សម្រាប់ 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
  1. បង្កើត 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 របស់វារីកធំជាងនេះបន្តទៀត។ ហើយបើកំពុងសម្រេចចិត្តថាត្រូវរៀនមួយណា ខ្ញុំក៏នៅតែណែនាំឲ្យរៀនណូដ ព្រោះថាណូដស្ថិតក្នុងកម្រិតល្អមួយដែលយើងអាចយកវាមកប្រើការផ្លូវការ និងមានការងារជាច្រើនសម្រាប់ណូដ។ ហើយម្យ៉ាងទៀតបើចេះណូដហើយប្ដូរមកដេណូវិញក៏វាមានភាពងាយស្រួលដែរ គ្រប់យ៉ាងដែលអ្នកធ្វើក្នុងណូដនឹងមិនផ្លាស់ប្ដូរច្រើនទេនៅក្នុងដេណូ។ តែវាក៏មិនខាតអីដែរបើអ្នកសាកលេងជាមួយដេណូ។

ស្វែងយល់បន្ថែម៖

Ryan Dahl ធ្វើបទបង្ហាញពីដេណូនៅ Holy.js Conference
ចំនួនអាន៖ 34
ចែករំលែក៖
រូបភាពជ្រើសរើស
រូបថតដោយ៖
ក្នុង
Unsplash
អត្ថបទ​ពេញនិយម

ដំណើរកម្សាន្តបោះតង់ និងឡើងជួរភ្នំឱរ៉ាល់របស់ខ្ញុំ

មានអ្វីកើតឡើងពេល Apple ប្ដូរមក ARM?

ការប្រើប្រាស់ Dependency ក្នុងការ​សរសេរសូហ្វវែរ៍

ពេលធ្វើ Software Project មិនគួររំលងរបស់ទាំងអស់នេះ

អ្វីទៅ Git Stash?

អត្ថបទ​ថ្មីៗ

ការប្រើប្រាស់ Dependency ក្នុងការ​សរសេរសូហ្វវែរ៍

លាហើយបណ្ដាញសង្គម

រឿងដែលកំពុងតែកើតឡើងមកលើ Intel

ចាវ៉ាស្ក្រីបត៍ក្នុងប្រៅស៍ស័រ

គួរប្រើ Storage មួយណាសម្រាប់វែបសាយ?

You've reached singularity, the beginning of time!