មាតិកា[លាក់][បង្ហាញ]
- ដូច្នេះ តើសហព័ន្ធម៉ូឌុលគឺជាអ្វី?
- ហេតុអ្វីបានជាសហព័ន្ធម៉ូឌុល?
- សមាសធាតុស្នូលនៃសហព័ន្ធម៉ូឌុល
លក្ខណៈពិសេសស្នូលនៃសហព័ន្ធម៉ូឌុល+-
- ដំណើរការបណ្តាញដ៏អស្ចារ្យ
- ការអភិវឌ្ឍន៍ប្រកបដោយប្រសិទ្ធភាព
- សមត្ថភាពក្នុងការព្យាបាលដោយខ្លួនឯងនិងលែងត្រូវការតទៅទៀត។
- ការគ្រប់គ្រងប្រកបដោយប្រសិទ្ធភាពនៃភាពអាស្រ័យរួម
- ជំនួសឱ្យការដាក់ឱ្យប្រើប្រាស់អ្នកប្រើប្រាស់ឡើងវិញ សូមប្រើកូដឯករាជ្យ។
- នៅពេលដំណើរការ សូមនាំចូលកូដពីការបង្កើតផ្សេងទៀត។
- បទពិសោធន៍អ្នកអភិវឌ្ឍន៍កាន់តែប្រសើរឡើង ខណៈពេលដែលរក្សាបទពិសោធន៍របស់អតិថិជន
- Micro-frontends ដំណើរការក្នុងទម្រង់ monolithic ។
- សន្និដ្ឋាន
គំនិតនៃ micro frontends អនុវត្ត microservices ទៅនឹងការអភិវឌ្ឍន៍ frontend ។
គំនិតនេះគឺដើម្បីបំបែកកម្មវិធី ឬគេហទំព័រទៅជាបំណែកតូចៗដែលបង្កើតដោយឯករាជ្យ ដែលបន្ទាប់មកត្រូវបានភ្ជាប់ក្នុងអំឡុងពេលដំណើរការ ផ្ទុយពីការបង្កើតពួកវាជា monolith តែមួយ។
វិធីសាស្រ្តអនុញ្ញាតឱ្យអ្នកបង្កើតសមាសធាតុផ្សេងទៀតនៃកម្មវិធីដោយប្រើបច្ចេកវិទ្យាផ្សេងទៀត និងជាមួយក្រុមឯករាជ្យ។
គំនិតនេះគឺដើម្បីកាត់បន្ថយការចំណាយលើការថែទាំទាក់ទងនឹង monolith ធម្មតាដោយបែងចែកការអភិវឌ្ឍន៍តាមរបៀបនេះ។
ដោយអនុញ្ញាតឱ្យពួកគេផ្តោតអារម្មណ៍លើផ្នែកជាក់លាក់មួយនៃកម្មវិធីជាក្រុមដែលសហការគ្នា វាក៏ធ្វើឱ្យទម្រង់នៃកិច្ចសហប្រតិបត្តិការថ្មីរវាង backend និង frontend devs អាចធ្វើទៅបាន។
ជាឧទាហរណ៍ អ្នកប្រហែលជាមានក្រុមដែលទទួលខុសត្រូវទាំងស្រុងចំពោះសមត្ថភាពស្វែងរក ឬទិដ្ឋភាពផ្សេងទៀតនៃផលិតផលសំខាន់ដែលមានសារៈសំខាន់សម្រាប់អាជីវកម្ម។
សូមអរគុណដល់សហព័ន្ធម៉ូឌុល អ្នកមានមុខងារគ្រប់គ្រាន់ដើម្បីគ្រប់គ្រងលំហូរការងារដែល ផ្នែកខាងមុខខ្នាតតូច ខិតជិតអាណត្តិ។
ការបង្ហោះនេះនឹងពិនិត្យមើលយ៉ាងស៊ីជម្រៅអំពីស្ថាបត្យកម្មនៃសហព័ន្ធម៉ូឌុល ក៏ដូចជាលក្ខណៈសំខាន់ៗ និងលំនាំកម្មវិធីរបស់វា។
ដូច្នេះអ្វីទៅជាក សហព័ន្ធម៉ូឌុល?
ការរចនាសហព័ន្ធម៉ូឌុលរបស់ Javascript ធ្វើឱ្យការប្រើប្រាស់ផ្នែកដែលបានប្រើឡើងវិញនៅក្នុងកម្មវិធីជាច្រើន។
វាជាវចនានុក្រមមូលដ្ឋានត្រឹមត្រូវ ប៉ុន្តែខ្ញុំគ្រាន់តែបានធ្វើឱ្យវាមើលទៅហាក់ដូចជាមានភាពស្រស់ស្រាយ។
ដូចដែលយើងទាំងអស់គ្នាស៊ាំនឹងការចែករំលែកសមាសធាតុនៅក្នុងកម្មវិធី React សហព័ន្ធម៉ូឌុលសម្រេចបាននូវគោលដៅដូចគ្នាក្នុងការអនុវត្តប្រកបដោយប្រសិទ្ធភាព លើកលែងតែវាបង្ហាញម៉ូឌុលកម្មវិធីសម្រាប់ការប្រើប្រាស់ដោយកម្មវិធីផ្សេងទៀត។
សហព័ន្ធម៉ូឌុលស្វែងរកដើម្បីយកឈ្នះលើបញ្ហានៃការចែករំលែកម៉ូឌុលនៅក្នុងប្រព័ន្ធចែកចាយដោយផ្តល់នូវធាតុចែករំលែកសំខាន់ៗទាំងនោះជាម៉ាក្រូ ឬមីក្រូតាមការចង់បាន។
នេះត្រូវបានសម្រេចដោយការលុបពួកវាចេញពីកម្មវិធីរបស់អ្នក និងដំណើរការការងារបង្កើត។
ហេតុអ្វីបានជាសហព័ន្ធម៉ូឌុល?
នេះគឺជាកត្តាមួយចំនួនដែលសហព័ន្ធម៉ូឌុលអាចដោះស្រាយបានយ៉ាងងាយស្រួល៖
- Externals និង DLLs (Dynamic Link Libraries) គឺជាអ្វីដែលយើងមានម្តងម្កាលសម្រាប់ការចែករំលែកមុខងាររវាងកម្មវិធី។ ទាំងអស់នោះបានធ្វើឱ្យការចែករំលែកកូដធ្វើមាត្រដ្ឋានមានការពិបាកយ៉ាងខ្លាំង។
- NPM គឺយឺត។
- នៅពេលដែលកម្មវិធីពីរដាច់ដោយឡែកចែករំលែកកូដសំខាន់ៗ ពួកគេត្រូវតែមានភាពស្វាហាប់ និងអាចបត់បែនបាន។
ដើម្បីឱ្យកម្មវិធីឯករាជ្យទាំងស្រុងនៅក្នុងឃ្លាំងផ្ទាល់ខ្លួនរបស់ពួកគេ ដាក់ពង្រាយដាច់ដោយឡែក និងដំណើរការជា SPA ឯករាជ្យរបស់ពួកគេ សហព័ន្ធម៉ូឌុលត្រូវបានបង្កើតឡើង។
សមាសធាតុស្នូលនៃសហព័ន្ធម៉ូឌុល
មុនពេលជ្រមុជទឹកឱ្យកាន់តែស៊ីជម្រៅ ការពិភាក្សាដោយសង្ខេបអំពីគោលគំនិតថ្មីមួយចំនួនដែលសហព័ន្ធម៉ូឌុលនាំមកគឺមានសារៈសំខាន់។
- ម៉ាស៊ីន៖ នៅពេលដែលទំព័រផ្ទុកឡើង ការបង្កើត ឬម៉ូឌុលដែលចាប់ផ្តើមដំបូងត្រូវបានគេហៅថាម៉ាស៊ីន។ អ្នកផ្តល់សេវាអាចត្រូវបានគិតថាជាម្ចាស់ផ្ទះ។
- ពីចម្ងាយ៖ ពីចម្ងាយគឺជាសំណង់ផ្សេងគ្នាដែលប្រើផ្នែកមួយនៃម៉ាស៊ីន។ ពួកគេក៏ត្រូវបានគេហៅថាអតិថិជនផងដែរ។
- ម៉ាស៊ីនពីរទិស៖ បង្កើត Webpack ដែលមានមុខងារជាឧបករណ៍បញ្ជាពីចម្ងាយដែលម៉ាស៊ីនផ្សេងទៀតប្រើប្រាស់ និងម៉ាស៊ីនដែលប្រើប្រាស់ពីចម្ងាយ។
- សហព័ន្ធអ្នកលក់៖ បើកការចែករំលែកពេលដំណើរការដោយប្រកាសនៃភាពអាស្រ័យម៉ូឌុល npm សម្រាប់ម៉ាស៊ីន ឬពីចម្ងាយ ដោយមិនគិតពីទីតាំងដែលពួកវាត្រូវបានផ្ទុក។ បញ្ហាដំណើរការធំមួយជាមួយ micro frontends ត្រូវបានដោះស្រាយតាមវិធីនេះ។
លំនាំនៃកម្មវិធីសហព័ន្ធ
ប្រព័ន្ធរចនាបៃតង
ទម្រង់ជាមូលដ្ឋានបំផុតមួយនៃកម្មវិធីសហព័ន្ធគឺ "evergreen remote" ដែលជាឧបករណ៍បញ្ជាពីចម្ងាយចែករំលែកដូចជា "Design System" ឬ "Component library" ដែលត្រូវបានចែកចាយ និងធ្វើបច្ចុប្បន្នភាពដោយឯករាជ្យសម្រាប់អ្នកប្រើប្រាស់ទាំងអស់។
ដោយមិនមានក្រុមកម្មវិធីនីមួយៗត្រូវការចំណាយពេលលើការកែប្រែទេ វាអាចមានប្រយោជន៍ក្នុងការធានាថាគេហទំព័រអនឡាញទាំងអស់ប្រកាន់ខ្ជាប់នូវអត្តសញ្ញាណសាជីវកម្មថ្មីៗបំផុត។
ដើម្បីរចនា និងដាក់បញ្ចូលដែនកំណត់ និងនីតិវិធីចាំបាច់ដើម្បីធានាសុវត្ថិភាព និងបច្ចុប្បន្នភាពដែលកំពុងបន្ត នេះអាចជាកន្លែងមានប្រយោជន៍សម្រាប់អាជីវកម្មដើម្បីចាប់ផ្តើមនៅពេលពិចារណាលើស្ថាបត្យកម្មកម្មវិធីសហព័ន្ធ។
ខាងក្រោមនេះគឺជាករណីប្រើប្រាស់មួយចំនួន ដែលឧបករណ៍បញ្ជាពីចម្ងាយដែលបានចែកចាយដោយឯករាជ្យអាចនឹងសមស្រប៖
- ប្រព័ន្ធរចនា
- សំបកកម្មវិធី
- បណ្ណាល័យសមាសធាតុ
- អ្នកប្រើប្រាស់
- កញ្ចប់ឧបករណ៍ដែលបានចែករំលែក
- គំរូចែកចាយជំនួសសម្រាប់ធាតុក្រាហ្វិកដែលប្រើដោយខាងក្នុង ឬខាងក្រៅ
ការចែករំលែកម៉ូឌុល SPA ច្រើន
ប្រើមុខងារដែលបាននាំចេញរួចហើយឡើងវិញ ដូចជាសមាសធាតុនៅក្នុងកម្មវិធីតែមួយទំព័រដាច់ដោយឡែក។ អត្ថប្រយោជន៍រួមមាន:
- អ្នកប្រើប្រាស់ទទួលបានព័ត៌មានថ្មីៗដោយស្វ័យប្រវត្តិ
- ជំនាញខាងដែននៅតែមាននៅលើក្រុមដែលទទួលបន្ទុកវា។
- ធ្វើឱ្យដំណើរការនៃការដាក់ពង្រាយប្រសើរឡើង ពីព្រោះការចេញផ្សាយម៉ូឌុលដាច់ដោយឡែកគឺមិនចាំបាច់ទេ។
សហព័ន្ធដឹកនាំសែល
សហព័ន្ធដឹកនាំដោយសែលរួមមាន:
- នៅពេលបង្កើតកំណែផលិតផលថ្មី ក្រុមការងារផលិតផលមិនរង់ចាំឱ្យក្រុម Checkout បញ្ចប់ការងាររបស់ពួកគេទេ។
- នៅពេលប្តូរឧបករណ៍បញ្ជាពីចម្ងាយ វាមិនមានការផ្ទុកទំព័រឡើងវិញទេ។
- នៅពេលចាំបាច់ Shell ផ្តល់នូវការផ្ទុកពីចម្ងាយយឺត និងការកំណត់ផ្លូវ (កម្រិតកំពូល)។
- ការធ្វើដំណើរឆ្លងកាត់ឧបករណ៍បញ្ជាពីចម្ងាយគឺអាចធ្វើទៅបានតាមរយៈសហព័ន្ធអ្នកលក់ ដែលអនុញ្ញាតឱ្យប្រើឡើងវិញនូវកញ្ចប់ npm ដែលប្រើញឹកញាប់។
- Shell ផ្តល់នូវក្របខ័ណ្ឌ និងភាពអាស្រ័យទូទៅផ្សេងទៀតដែលត្រូវបានប្រើឡើងវិញដោយឧបករណ៍បញ្ជាដែលខ្ជិលផ្ទុកពីចម្ងាយ។
សហព័ន្ធពហុសែល
ស្រដៀងទៅនឹងសហព័ន្ធដែលដឹកនាំដោយសែលដែលបានពិពណ៌នាខាងលើ ប៉ុន្តែបានប្រើសំបកផ្សេងគ្នា។
វាមាន:
- សំបកមួយចំនួន
- ស្លាកសញ្ញាពណ៌ស
- មិនមែនឧបករណ៍បញ្ជាពីចម្ងាយទាំងអស់ត្រូវបានទាមទារដោយ Shell B ឬមានការអនុវត្តឯករាជ្យនោះទេ។
លក្ខណៈពិសេសស្នូលនៃសហព័ន្ធម៉ូឌុល
ដំណើរការបណ្តាញដ៏អស្ចារ្យ
បញ្ហាជាមួយសមាសភាពម៉ូឌុល NPM ធម្មតាគឺថានៅពេលដែលចំនួនអ្នកអាស្រ័យកើនឡើង ទំហំរបស់កម្មវិធីជាទូទៅកើនឡើង។
ដើម្បីជៀសវាងការផ្ទុកបណ្តុំនៅពេលដែលកម្មវិធីរបស់អ្នកផ្ទុក ហើយគ្រាន់តែផ្ទុកវានៅពេលចាំបាច់ សហព័ន្ធម៉ូឌុលផ្តល់ឱ្យអ្នកនូវសមត្ថភាពក្នុងការផ្ទុកបណ្តុំដោយខ្ជិលច្រអូស។
វារារាំងតម្រូវការក្នុងការទាញយកម៉ូឌុល មុនពេលពួកវាត្រូវបានទាមទារពិតប្រាកដ ដែលធ្វើអោយល្បឿនគេហទំព័រប្រសើរឡើង។
ការអភិវឌ្ឍន៍ប្រកបដោយប្រសិទ្ធភាព
គម្រោងនីមួយៗអាចត្រូវបានផលិត និងចែកចាយដោយឡែក ហើយអាចត្រូវបានអនុវត្តដោយក្រុមផ្សេងៗ ដោយសារតែ Module Federation លើកទឹកចិត្តអ្នកឱ្យរៀបចំកម្មវិធីរបស់អ្នកទៅជាគម្រោងដាច់ដោយឡែក ដូច្នេះអ្នកអាចសាងសង់ និងដាក់ពង្រាយពួកវាដោយឡែកពីគ្នា (ហេតុដូចនេះហើយស្របគ្នា)។
សមត្ថភាពក្នុងការព្យាបាលដោយខ្លួនឯងនិងលែងត្រូវការតទៅទៀត។
ភាពអាស្រ័យដែលបានចែករំលែកអនុញ្ញាតឱ្យ Module Federation តាមដានភាពអាស្រ័យនៃកម្មវិធីរបស់អ្នកទាំងអស់នៅកន្លែងតែមួយ។
វិធីនេះ ទោះបីជាកម្មវិធីមិនប្រកាសការពឹងផ្អែក ឬនៅពេលមានបញ្ហាបណ្តាញក៏ដោយ វានៅតែដឹងពីអ្វីដែលវាត្រូវការ និងអាចដោះស្រាយការទាញយកវាបានតាមតម្រូវការ។
ការគ្រប់គ្រងប្រកបដោយប្រសិទ្ធភាពនៃភាពអាស្រ័យរួម
លើសពីនេះ Module Federation ផ្តល់នូវការគ្រប់គ្រងភាពអាស្រ័យដ៏ល្អឥតខ្ចោះ ដោះស្រាយតម្រូវការរបស់អ្នកលក់ និងភាគីទីបីប្រកបដោយប្រសិទ្ធភាព ដូច្នេះកម្មវិធីរបស់អ្នកនឹងមិនផ្ទុកលើសពីមួយកំណែនៃបណ្ណាល័យទេ។
ជំនួសឱ្យការដាក់ឱ្យប្រើប្រាស់អ្នកប្រើប្រាស់ឡើងវិញ សូមប្រើកូដឯករាជ្យ។
អ្នកអភិវឌ្ឍន៍ចាប់អារម្មណ៍យ៉ាងខ្លាំងក្នុងការមានមុខងារបៃតង។ នៅពេលដែលមុខងារដែលពឹងផ្អែកដែលបានលាតត្រដាងត្រូវបានផ្លាស់ប្តូរ វានឹងមិនចាំបាច់ក្នុងការដំឡើងអ្នកប្រើប្រាស់ឡើងវិញទៀតទេ។
ខ្ញុំត្រូវតែទទួលស្គាល់ថានេះគឺជាលក្ខណៈពិសេសដ៏មានឥទ្ធិពលនៅក្នុងខ្លួនវាផ្ទាល់ ដែលនឹងត្រូវការការត្រួតពិនិត្យយ៉ាងប្រុងប្រយ័ត្នដើម្បីការពារលទ្ធផលដែលមិនរំពឹងទុក។
នៅពេលដំណើរការ សូមនាំចូលកូដពីការបង្កើតផ្សេងទៀត។
នៅពេលទទួលយកគំរូកញ្ចប់ NPM យើងអាចពិចារណាកម្មវិធីដែលប្រើ Module Federation ស្រដៀងនឹង APIs ជាជាងការចែករំលែកកូដ និងគិតពី "បណ្ណាល័យ"។
ក្នុងលក្ខណៈដូចគ្នាដែលពួកគេអាចទទួលបានមុខងារពីកម្មវិធីផ្សេងទៀត កម្មវិធីបណ្តាញអាចផ្តល់មុខងារដល់កម្មវិធីផ្សេងទៀត។
បទពិសោធន៍អ្នកអភិវឌ្ឍន៍កាន់តែប្រសើរឡើង ខណៈពេលដែលរក្សាបទពិសោធន៍របស់អតិថិជន
ណាមួយឡើយ អ្នកអភិវឌ្ឍន៍ JavaScript នឹងមានផាសុកភាពជាមួយ Module Federation ព្រោះវាជាកម្មវិធីជំនួយ Webpack ដែលអាចចូលប្រើបានដូច Webpack កំណែ 5។
នេះពិតជាខ្លាំង និងគួរឱ្យចាប់អារម្មណ៍ ប្រសិនបើយើងពិចារណាវាខ្លះ។
ដោយប្រើកម្មវិធីផ្ទុក Webpack ភាគីទីបី សូមពិចារណាសមាសធាតុទាំងអស់នោះ។ វ៉ាយវែប។ កញ្ចប់ រួមទាំងស្គ្រីប ទ្រព្យសកម្ម រចនាប័ទ្ម រូបភាព សញ្ញាសម្គាល់ និងច្រើនទៀត។
តាមរយៈការប្រើប្រាស់ Module Federation ទាំងអស់នេះអាចត្រូវបានចែករំលែក និងសហព័ន្ធ។
Micro-frontends ដំណើរការក្នុងទម្រង់ monolithic ។
វាងាយស្រួលណាស់ក្នុងការបន្ថែមមុខងារចែករំលែកទៅកម្មវិធីរបស់អ្នក។ គ្រាន់តែនាំចូលកញ្ចប់ដូចធម្មតា ឬប្រើការផ្ទុកសមកាលកម្ម។
ម៉្យាងទៀតការផ្ទុកអសមកាលអាចត្រូវបានប្រើដើម្បីផ្ទុកតែភាពអាស្រ័យនៅពេលដែលចាំបាច់ដោយប្រើប្រាស់ការផ្ទុកខ្ជិល។
សន្និដ្ឋាន
នៅក្នុងការប្រកាសនេះ យើងបានពិភាក្សាអំពី Module Federation ជាជម្រើសដ៏អស្ចារ្យមួយសម្រាប់បង្កើតកម្មវិធី micro-frontend របស់អ្នក។
អនុញ្ញាតឱ្យកម្មវិធីផ្លាស់ប្តូរ និងប្រើប្រាស់មុខងារនៅពេលដំណើរការ លើកទឹកចិត្តដល់ការធ្វើមាត្រដ្ឋាន ដោយអនុញ្ញាតឱ្យក្រុមផ្សេងៗធ្វើការលើកម្មវិធីឯករាជ្យ។
នៅពេលដែលមុខងារទូទៅផ្លាស់ប្តូរ អ្នកនឹងមិនចាំបាច់រចនា និងដាក់ឱ្យប្រើប្រាស់អ្នកប្រើប្រាស់របស់អ្នកទេ ដោយសារវាគាំទ្រមុខងារបៃតង។
កម្មវិធីរបស់អ្នកនឹងដំណើរការដូច monolith បន្ទាប់ពីវាត្រូវបានបង្កើតឡើង ដែលពិតជាអស្ចារ្យណាស់។
ភាពអាស្រ័យដែលអាចចែករំលែកបានត្រូវបានប្រើដើម្បីកាត់បន្ថយទំហំនៃកម្មវិធី។ ចាប់តាំងពីអ្នកអភិវឌ្ឍន៍ជាច្រើនបានស៊ាំនឹងបរិស្ថាន Webpack រួចហើយ បទពិសោធន៍របស់អ្នកអភិវឌ្ឍន៍គឺល្អឥតខ្ចោះ។
សូមផ្ដល់យោបល់