Overview

ស្ថានភាពបច្ចុប្បន្ននៃការអភិវឌ្ឍន៍ឆ្លងវេទិកា (Cross-Platform)

នៅក្នុងរបាយការណ៍នេះ យើងប្រៀបធៀប និងវិភាគក្របខ័ណ្ឌ (frameworks) ធំៗចំនួនពីរក្នុងការអភិវឌ្ឍកម្មវិធីទូរស័ព្ទគឺ "Flutter" និង "React Native" ពីទស្សនវិស័យនៃ គុណភាព UI/UX, លទ្ធភាពថែទាំរយៈពេលវែង, និង ការធានាគុណភាព (ការធ្វើតេស្ត)។ យើងបង្ហាញរូបភាពអំពីរបៀបដែលភាពខុសគ្នានៃស្ថាបត្យកម្មរៀងៗខ្លួនប៉ះពាល់ដល់គុណភាពផលិតផលចុងក្រោយ និងបទពិសោធន៍នៃការអភិវឌ្ឍ។

ម៉ាទ្រីសវាយតម្លៃដ៏ទូលំទូលាយ

ការប្រៀបធៀបលក្ខណៈដោយប្រើម៉ែត្រវាស់សំខាន់ៗចំនួន 5

Flutter: ការស្វែងរក "Pixel Perfect"

លក្ខណៈពិសេសរបស់ម៉ាស៊ីនបង្ហាញរូបភាព (rendering engine) តែមួយគត់ (Skia/Impeller) ដែលអនុញ្ញាតឱ្យមានការបង្ហាញ UI ជាប់លាប់ដោយមិនគិតពីកំណែ OS។ កំណត់លក្ខណៈដោយការវាយបញ្ចូលឋិតិវន្ត (static typing) ដ៏រឹងមាំជាមួយភាសា Dart និងបរិយាកាសធ្វើតេស្តដ៏រឹងមាំនៅលើមូលដ្ឋាន widget នីមួយៗ។

ភាពជាប់លាប់នៃ UI ◎ ការអនុវត្ត ◎

React Native: ប្រព័ន្ធអេកូឡូស៊ី និងភាពបត់បែន

ប្រតិបត្តិការសមាសភាគដើម (native components) នៃ OS នីមួយៗ ដោយបញ្ចូលគ្នាយ៉ាងធម្មជាតិជាមួយនឹងរូបរាង និងអារម្មណ៍ស្តង់ដាររបស់ OS។ អនុញ្ញាតឱ្យមានការអនុវត្តចំណេះដឹងនៃការអភិវឌ្ឍ Web (React) ដោយផ្ទាល់ និងប្រតិបត្តិការដែលអាចបត់បែនបានដូចជាការធ្វើបច្ចុប្បន្នភាព OTA (Over The Air) ជាដើម។

ការទទួលបានទេពកោសល្យ ◎ ការចែករំលែក Web ◎

សេចក្តីសង្ខេបនៃការប្រៀបធៀប

  • ភាពត្រឹមត្រូវនៃ UI: Flutter ស្រូបយកភាពខុសគ្នារបស់ OS បានយ៉ាងងាយស្រួល
  • ការជ្រើសរើសបុគ្គលិក & ការសិក្សា: React Native មានអត្ថប្រយោជន៍សម្រាប់ក្រុមអ្នកអភិវឌ្ឍន៍ Web
  • សុវត្ថិភាព: ការវិភាគឋិតិវន្ត Dart (Flutter) មានអនុភាពតាមលំនាំដើម
UI/UX

គុណភាព UI/UX និងការបង្ហាញរូបភាព (Rendering)

គុណភាពនៃបទពិសោធន៍អ្នកប្រើប្រាស់ពឹងផ្អែកយ៉ាងខ្លាំងទៅលើ "ភាពជាប់លាប់នៃការបង្ហាញរូបភាព" និង "ការអនុវត្ត (FPS)"។ យើងពន្យល់ពីរបៀបដែលភាពខុសគ្នានៃស្ថាបត្យកម្មរវាងក្របខ័ណ្ឌទាំងពីរបង្ហាញនៅក្នុងអាកប្បកិរិយាជាក់ស្តែងរបស់កម្មវិធី។

ស្ថាបត្យកម្ម Flutter

Framework Flutter (Dart)
វីជិត, ចលនា, កាយវិការ
ម៉ាស៊ីន (C++)
Skia / Impeller Dart រត់ពេលប្រតិបត្តិ
បង្ហាញរូបភាពដោយផ្ទាល់ទៅ Canvas
វេទិកាមូលដ្ឋាន (iOS/Android)
ព្រឹត្តិការណ៍, Canvas, សេវា

លក្ខណៈពិសេស៖ បង្ហាញរូបភាពអ្វីៗគ្រប់យ៉ាងដោយប្រើម៉ាស៊ីនផ្ទាល់ខ្លួន។ ដោយសារវាមិនប្រើសមាសភាគ UI របស់ OS បញ្ហានៃការបង្ហាញដោយសារតែភាពខុសគ្នានៃកំណែគឺមិនសូវកើតឡើងទេ។

ស្ថាបត្យកម្ម React Native

កូដ React (JS/TS)
សមាសភាគ, តក្កវិជ្ជា
Bridge / JSI (ការទំនាក់ទំនង)
ទិដ្ឋភាព Android
iOS UIKit
វេទិកាមូលដ្ឋាន

លក្ខណៈពិសេស៖ ប្រតិបត្តិការសមាសភាគ UI ដើមពី JS thread។ ធ្វើតាមរូបរាងស្តង់ដាររបស់ OS ដោយស្វ័យប្រវត្តិ ប៉ុន្តែការទំនាក់ទំនងតាម bridge ជួនកាលអាចក្លាយជាឧបសគ្គ។

ស្ថេរភាពអត្រាស៊ុមក្រោមបន្ទុកខ្ពស់ (ការក្លែងធ្វើ)

*ទិន្នន័យប្រៀបធៀបផ្អែកលើនិន្នាការ benchmark ទូទៅ

Dev & Longevity

ភាពងាយស្រួលនៃការអភិវឌ្ឍន៍រយៈពេលវែង និងការធានាគុណភាព

កម្មវិធីមិនត្រូវបានបញ្ចប់នៅពេលចេញផ្សាយទេ។ ប្រតិបត្តិការរយៈពេលច្រើនឆ្នាំ ការធ្វើតាមការធ្វើបច្ចុប្បន្នភាព OS និង "ភាពរឹងមាំ (robustness)" ក្នុងការអភិវឌ្ឍក្រុមគឺជារឿងសំខាន់។

ការវិភាគឋិតិវន្ត និងប្រព័ន្ធអេកូឡូស៊ីតេស្តដោយស្វ័យប្រវត្តិ

ធាតុ Flutter (Dart) React Native (TS)
សុវត្ថិភាពប្រភេទ (Type Safety) Sound Null Safety: ត្រូវបានអនុវត្តនៅកម្រិតភាសា។ កំហុស Runtime គឺកម្រមានណាស់។ TypeScript (ជាជម្រើស): អាស្រ័យលើការកំណត់។ មានហានិភ័យនៃការលាយប្រភេទ 'any' និងការបាត់បង់ប្រភេទនៅពេល runtime។
តេស្ត Unit / Widget ឧបករណ៍ស្តង់ដារ។ អនុញ្ញាតឱ្យធ្វើតេស្តសមាសភាគ UI ល្បឿនលឿនដោយមិនចាំបាច់មានអេក្រង់ (headless)។ មិនត្រូវការ emulator ទេ។ Jest + React Testing Library. មានអារម្មណ៍ដូចជាការអភិវឌ្ឍ Web។ ការធ្វើ Mocking ផ្នែកដែលពឹងផ្អែកលើ native គឺត្រូវបានទាមទារ។
តេស្ត E2E / Integration កញ្ចប់ Integration Test។ ត្រូវបានគាំទ្រជាផ្លូវការ។ អាចសរសេរជាភាសា Dart បាន។ Detox / Appium. ការដំឡើងមានទំនោរស្មុគស្មាញ ប៉ុន្តែវាមានកំណត់ត្រាដែលបានបញ្ជាក់។
ការធ្វើតាម OS & ការធ្វើបច្ចុប្បន្នភាព ដោយសារវាមានម៉ាស៊ីនបង្ហាញរូបភាពផ្ទាល់ខ្លួន វាប៉ះពាល់តិចតួចដោយសារការផ្លាស់ប្តូរ OS។ ទោះយ៉ាងណាក៏ដោយ ការគាំទ្រសម្រាប់លក្ខណៈពិសេសថ្មី (ឧទាហរណ៍ widgets iOS ថ្មី) រង់ចាំការធ្វើបច្ចុប្បន្នភាពពីខាង Flutter។ ដោយសារវាប្រើសមាសភាគ native មានហានិភ័យនៃការខូចប្លង់ជាមួយនឹងការធ្វើបច្ចុប្បន្នភាព OS។ ការចូលប្រើលក្ខណៈពិសេសថ្មីគឺលឿន។

ម៉ែត្រវាស់បទពិសោធន៍អ្នកអភិវឌ្ឍន៍ (DX)

តម្លៃនិន្នាការពីការស្ទង់មតិអ្នកប្រើប្រាស់ State of JS/Flutter ។ល។

Hot Reload: Flutter ឆ្លុះបញ្ចាំងការផ្លាស់ប្តូរយ៉ាងឆាប់រហ័សខណៈពេលដែលរក្សារដ្ឋ (state)។

ចំនួនកញ្ចប់ (Packages): React Native មានចំនួនច្រើនលើសលប់ដោយសារវាអាចប្រើទ្រព្យសម្បត្តិ npm បាន។

Decision Tool

ឧបករណ៍វិនិច្ឆ័យការជ្រើសរើស Framework

ដោយបញ្ចូលអាទិភាពគម្រោង វានឹងគណនាកម្រិតអនុសាសន៍ថាតើ framework មួយណាដែលសមរម្យ។

ការកំណត់តម្រូវការគម្រោង

Framework ដែលបានណែនាំ

ពិន្ទុ៖
Flutter React Native

កែតម្រូវគ្រាប់រំកិលធាតុនៅខាងឆ្វេង ហើយចុច "ប្រតិបត្តិការវិនិច្ឆ័យ"។

ពិគ្រោះយោបល់នៅទីនេះអំពីរចនាសម្ព័ន្ធអភិវឌ្ឍន៍

យើងរចនាជាមួយគ្នាពីការជ្រើសរើសបច្ចេកវិទ្យាកម្មវិធីទូរស័ព្ទរហូតដល់ការអនុវត្តនិងប្រតិបត្តិការ។

សូមទាក់ទងមកយើងខ្ញុំដោយសេរី។

ទាក់ទងមកយើង