Writing tests that actually last?
Letโs go beyond โit rendersโ and explore how to write robust, maintainable tests with React Testing Library
โค4
ุงููุฑู ุจูู ุงูู Monorepo ูุงูู Multirepo ๐ฏ
.
.
ุชุฎูู ุฃูู ุดุบุงู ุนูู ู ุดุฑูุน ุถุฎู ุ ุนูุฏู ุฃูุชุฑ ู ู ูุฑููุ ููู ูุฑูู ุจูุดุชุบู ุนูู ุฌุฒุก ู ุฎุชูู. ูุฌุฃุฉุ ุชุจุฏุฃ ุงูู ุดุงูู ุชุธูุฑ: ููุฏ ู ูุฑุฑุ ุตุนูุจุฉ ูู ุงูุชุนุฏููุงุชุ ุชุนุงุฑุถ ุจูู ุงููุฑูุ ูุฃููุงุช ุถุงูุนุฉ ุนูู ุงูู builds ูุงูู pipelines.
ุงูู ุดููุฉ ููุง ู ู ูู ุชููู ูู ุงูุทุฑููุฉ ุงููู ุจุชูุธู ุจูุง ุงูููุฏ ุจุชุงุนู. ๐ก
ููุง ุชุจุฏุฃ ุชุณุฃู ููุณู: ุชุฎุชุงุฑ Monorepo ููุง Multirepoุ
ูู ุทุฑููุฉ ููุง ู ูุฒุงุชูุง ูุนููุจูุงุ ูุงุฎุชูุงุฑู ู ู ูู ูุญุณู ุดุบูู ุจูุณุจุฉ ูุจูุฑุฉ ุฃู ูุนูุฏ ุญูุงุชู ูู ุงุฎุชุงุฑุช ุงูุบูุท.
ุชุนุงู ููุถุญ ุงููุฑู ุจูููู ูุงู ุชู ุชุฎุชุงุฑ ุงูุทุฑููุฉ ุงูู ูุงุณุจุฉ...
โโโ
ุงูู Monorepo ุจุจุณุงุทุฉ ูู ุฅูู ุชุญุท ูู ุงูููุฏ ุงูุฎุงุต ุจุงูู ุดุฑูุน ุจุชุงุนูุ ุจูู ุงูู components ุฃู ุงูู modules ุงููู ูููุ ุฏุงุฎู Repository ูุงุญุฏ.
ูุนูู ุญุชู ูู ุนูุฏู ุฃูุชุฑ ู ู ุฎุฏู ุฉ (microservices) ุฃู ุฃูุชุฑ ู ู ู ูุชุจุฉ ุฃู ุฃูุชุฑ ู ู ุชุทุจูู ู ุฑุชุจุทูู ุจุจุนุถุ ููู ุจูููู ูู ู ูุงู ูุงุญุฏ.
โโโ
- ุณูููุฉ ุฅุฏุงุฑุฉ ุงูููุฏ: ูู ุญุงุฌุฉ ูู ู ูุงู ูุงุญุฏุ ููู ุนุงูุฒ ุชุนู ู ุชุบููุฑุงุช ุนูู ุฃูุชุฑ ู ู ุฌุฒุกุ ูุชุจูู ุดุงูู ุงูุตูุฑุฉ ุงููุจูุฑุฉ ุจุณูููุฉ.
- ุฅุนุงุฏุฉ ุงุณุชุฎุฏุงู ุงูููุฏ (Code Reusability): ูู ูู ู ูุชุจุฉ ุฃู ุฌุฒุก ู ุนูู ู ู ุงูููุฏ ู ุญุชุงุฌ ุชุณุชุฎุฏู ู ูู ุฃูุชุฑ ู ู ู ูุฏูููุ ุชูุฏุฑ ุชุนู ูู ุจุณูููุฉ ู ู ุบูุฑ duplication.
- ุชูุณูู ุฃูุถู ุจูู ุงููุฑู: ูู ูุฑูู ุดุงูู ุงูููุฏ ุจุชุงุน ุจุงูู ุงููุฑูุ ูุฏู ุจูุณูู ุงูุชุนุงูู ุจูููู ูุจูููู ุชุนุงุฑุถ ุงูุชุนุฏููุงุช (conflicts).
- ุชูุงู ู ุฃูุถู ุจูู ุงูุฃุฏูุงุช: ุฒู ุงูู CI/CD (Continuous Integration/Continuous Deployment) ุงููู ุจูุดุชุบู ุจุณูููุฉ ุนูู ู ุดุฑูุน ูุงุญุฏ ุจุฏู ู ุง ูุชูุณู ุนูู ุฃูุชุฑ ู ู repository.
โโโ
- ุงูุญุฌู ุงููุจูุฑ ููู repo: ู ุน ู ุฑูุฑ ุงูููุช ูุนุฏุฏ ุงูู ุณุงูู ูู ุงููุจูุฑุ ุญุฌู ุงูู repo ุจููุจุฑ ูุฏู ู ู ูู ูุจุทูุฃ ุงูุนู ููุงุช ุฒู cloning ุฃู ุญุชู ุงูู builds.
- ุงูุชุนููุฏ ูู ุฅุฏุงุฑุฉ ุงูุตูุงุญูุงุช: ุตุนุจ ุชููู ุฅู ููุงู ููุฏุฑ ูุดุชุบู ุนูู ุฌุฒุก ู ุนูู ุจุณ ู ู ุบูุฑ ู ุง ูุดูู ุงูุจุงูู.
- ู ุดุงูู ู ุน ุงูู Tools: ูู ู ุด ุนูุฏู ุฃุฏูุงุช ูููุฉ ูุฅุฏุงุฑุฉ ุงูู monorepoุ ู ู ูู ุชูุงุฌู ู ุดุงูู ูู ุงูุชูุธูู ูุนู ููุฉ ุงูู build.
โโโ
ุนูู ุงูุนูุณ ุชู ุงู ูุงุ ุงูู Multirepo ู ุนูุงูุง ุฅู ูู ุฌุฒุก ุฃู ู ูุฏููู ู ู ุงูู ุดุฑูุน ูููู ูู Repository ุฎุงุต ุจู. ูุนูู ูู ู ูุฏููู ุจูุจูู ู ุณุชูู ุจุฐุงุชู ููุฃูู ู ุดุฑูุน ููุญุฏู.
โโโ
- ูู ู ูุฏููู ููู ุญูุงุชู ุงูุฎุงุตุฉุ ูุฏู ุจูุฎูู ุฅุฏุงุฑุฉ ูู ุฌุฒุก ู ุณุชููุฉ ูุฃุณูู ูุจุนุถ ุงููุฑู.
- ุชูุฏุฑ ุชุญุฏุฏ ู ูู ูุดุชุบู ุนูู ุฅูู ุจูุงุกู ุนูู ุงูู repo ุงููู ุนูุฏูู ุฃูุณุณ ุนููู.
- ูู ููู ู ูุฏููู ุฃู ุฎุฏู ุฉ ู ุด ู ุฑุชุจุท ุจุดูู ู ุจุงุดุฑุ ู ุด ู ุญุชุงุฌ ุชุจูู ูู ุงูู ุดุฑูุนุ ุจุณ ุชุจูู ุงูุฌุฒุก ุงููู ู ุญุชุงุฌู.
- ูู ุฌุฒุก ุจูููู ุตุบูุฑ ูู ุณุชููุ ูุฏู ุจูุฎูู ุงูุนู ููุงุช ุฒู cloning ุฃุณุฑุน ูุฃุณูู.
โโโ
- ุชูุฑุงุฑ ุงูููุฏ: ูู ููู ุฃูุชุฑ ู ู ู ูุฏููู ุจูุญุชุงุฌ ููุณ ุงูููุฏุ ู ู ูู ุชุถุทุฑ ุชูุฑุฑู ุฃู ุชุญุท ู ูุชุจุฉ ู ููุตูุฉ ููู.
- ุชุนููุฏ ูู ุงูุชูุณูู ุจูู ุงููุฑู: ุงูุชุนุงูู ุจูู ุงููุฑู ุจูุจูู ุฃุตุนุจุ ูุฎุตูุตูุง ูู ุง ูููู ููู dependencies ูุชูุฑ ุจูู ุงูู modules.
- ุชูุงู ู ู ุนูุฏ ููู CI/CD: ุนุดุงู ูู ุฌุฒุก ูู Repository ู ุฎุชููุ ูุชุญุชุงุฌ ุฅุนุฏุงุฏุงุช ุฃูุชุฑ ููู pipelines ุนุดุงู ูู ุญุงุฌุฉ ุชุดุชุบู ู ุน ุจุนุถ.
- ุตุนูุจุฉ ูู ุฅุฏุงุฑุฉ ุงูุชุบููุฑุงุช ุงููุจูุฑุฉ: ูู ุนูุฏู ุชุบููุฑ ุถุฎู ุจูุฃุซุฑ ุนูู ุฃูุชุฑ ู ู ู ูุฏูููุ ูุชุญุชุงุฌ ุชุฏุฎู ุนูู ูุฐุง repo ูุชุนุฏู ูู ูู ูุงุญุฏ ููุญุฏู.
โโโ
โ ุงุฎุชุฑ Monorepo ูู:
1- ู ุดุฑูุนู ุนุจุงุฑุฉ ุนู ู ุฌู ูุนุฉ modules ู ุฑุชุจุทุฉ ุจุจุนุถูุง.
2- ุนูุฏู ูุฑูู ุตุบูุฑ ุฃู ู ุชูุณุท.
3- ุจุชุญุชุงุฌ ุชุนู ู ุชุบููุฑุงุช ุจุดูู ู ุชูุฑุฑ ุนูู ุฃูุชุฑ ู ู ู ูุฏููู ูู ููุณ ุงูููุช.
4- ุงูุฃุฏูุงุช ุงููู ุจุชุณุชุฎุฏู ูุง ุจุชุฏุนู ุฅุฏุงุฑุฉ monorepos ุจุดูู ูููุณ.
โ ุงุฎุชุฑ Multirepo ูู:
1- ู ุดุฑูุนู ูุจูุฑ ุฌุฏูุง ูู ุนูุฏุ ููู ุฌุฒุก ููู ู ุณุชูู ุชู ุงู ูุง.
2- ุจุชุญุชุงุฌ ุชุชุญูู ูู ุงูุตูุงุญูุงุช ุนูู ู ุณุชูู ูู ู ูุฏููู.
3- ุนูุฏู ูุฑู ู ุฎุชููุฉ ูู ูุฑูู ุดุบุงู ุนูู ู ูุฏููู ุฎุงุต ุจู.
4- ุนุงูุฒ ุชุชุฌูุจ ุงูู ุดุงูู ุงููู ุจุชุณุจุจูุง ุฃุญุฌุงู ุงูู repos ุงููุจูุฑุฉ.
โโโ
ุงููุฑุงุฑ ูู ุงูุขุฎุฑ ุจูุฑุฌุน ูุทุจูุนุฉ ู ุดุฑูุนู ูุงุญุชูุงุฌุงุช ูุฑููู. ู ููุด ุทุฑููุฉ "ุตุญ" ูุทุฑููุฉ "ุบูุท"ุ ููู ููู ุทุฑููุฉ ู ูุงุณุจุฉ ุฃูุชุฑ ุญุณุจ ุธุฑููู. ุฃูู ุญุงุฌุฉ ุฅูู ุชููู ูุงูู ูู ุทุฑููุฉ ุจุชูุฏู ุฅูู ูุนููุจูุง ุฅูู. ๐ก
โโโ
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
.
.
ุชุฎูู ุฃูู ุดุบุงู ุนูู ู ุดุฑูุน ุถุฎู ุ ุนูุฏู ุฃูุชุฑ ู ู ูุฑููุ ููู ูุฑูู ุจูุดุชุบู ุนูู ุฌุฒุก ู ุฎุชูู. ูุฌุฃุฉุ ุชุจุฏุฃ ุงูู ุดุงูู ุชุธูุฑ: ููุฏ ู ูุฑุฑุ ุตุนูุจุฉ ูู ุงูุชุนุฏููุงุชุ ุชุนุงุฑุถ ุจูู ุงููุฑูุ ูุฃููุงุช ุถุงูุนุฉ ุนูู ุงูู builds ูุงูู pipelines.
ุงูู ุดููุฉ ููุง ู ู ูู ุชููู ูู ุงูุทุฑููุฉ ุงููู ุจุชูุธู ุจูุง ุงูููุฏ ุจุชุงุนู. ๐ก
ููุง ุชุจุฏุฃ ุชุณุฃู ููุณู: ุชุฎุชุงุฑ Monorepo ููุง Multirepoุ
ูู ุทุฑููุฉ ููุง ู ูุฒุงุชูุง ูุนููุจูุงุ ูุงุฎุชูุงุฑู ู ู ูู ูุญุณู ุดุบูู ุจูุณุจุฉ ูุจูุฑุฉ ุฃู ูุนูุฏ ุญูุงุชู ูู ุงุฎุชุงุฑุช ุงูุบูุท.
ุชุนุงู ููุถุญ ุงููุฑู ุจูููู ูุงู ุชู ุชุฎุชุงุฑ ุงูุทุฑููุฉ ุงูู ูุงุณุจุฉ...
โโโ
๐ ุฃูููุง: ูุนูู ุฅูู Monorepoุ
ุงูู Monorepo ุจุจุณุงุทุฉ ูู ุฅูู ุชุญุท ูู ุงูููุฏ ุงูุฎุงุต ุจุงูู ุดุฑูุน ุจุชุงุนูุ ุจูู ุงูู components ุฃู ุงูู modules ุงููู ูููุ ุฏุงุฎู Repository ูุงุญุฏ.
ูุนูู ุญุชู ูู ุนูุฏู ุฃูุชุฑ ู ู ุฎุฏู ุฉ (microservices) ุฃู ุฃูุชุฑ ู ู ู ูุชุจุฉ ุฃู ุฃูุชุฑ ู ู ุชุทุจูู ู ุฑุชุจุทูู ุจุจุนุถุ ููู ุจูููู ูู ู ูุงู ูุงุญุฏ.
โโโ
๐ ู ู ูุฒุงุช ุงูู Monorepo:
- ุณูููุฉ ุฅุฏุงุฑุฉ ุงูููุฏ: ูู ุญุงุฌุฉ ูู ู ูุงู ูุงุญุฏุ ููู ุนุงูุฒ ุชุนู ู ุชุบููุฑุงุช ุนูู ุฃูุชุฑ ู ู ุฌุฒุกุ ูุชุจูู ุดุงูู ุงูุตูุฑุฉ ุงููุจูุฑุฉ ุจุณูููุฉ.
- ุฅุนุงุฏุฉ ุงุณุชุฎุฏุงู ุงูููุฏ (Code Reusability): ูู ูู ู ูุชุจุฉ ุฃู ุฌุฒุก ู ุนูู ู ู ุงูููุฏ ู ุญุชุงุฌ ุชุณุชุฎุฏู ู ูู ุฃูุชุฑ ู ู ู ูุฏูููุ ุชูุฏุฑ ุชุนู ูู ุจุณูููุฉ ู ู ุบูุฑ duplication.
- ุชูุณูู ุฃูุถู ุจูู ุงููุฑู: ูู ูุฑูู ุดุงูู ุงูููุฏ ุจุชุงุน ุจุงูู ุงููุฑูุ ูุฏู ุจูุณูู ุงูุชุนุงูู ุจูููู ูุจูููู ุชุนุงุฑุถ ุงูุชุนุฏููุงุช (conflicts).
- ุชูุงู ู ุฃูุถู ุจูู ุงูุฃุฏูุงุช: ุฒู ุงูู CI/CD (Continuous Integration/Continuous Deployment) ุงููู ุจูุดุชุบู ุจุณูููุฉ ุนูู ู ุดุฑูุน ูุงุญุฏ ุจุฏู ู ุง ูุชูุณู ุนูู ุฃูุชุฑ ู ู repository.
โโโ
๐ ุนููุจ ุงูู Monorepo:
- ุงูุญุฌู ุงููุจูุฑ ููู repo: ู ุน ู ุฑูุฑ ุงูููุช ูุนุฏุฏ ุงูู ุณุงูู ูู ุงููุจูุฑุ ุญุฌู ุงูู repo ุจููุจุฑ ูุฏู ู ู ูู ูุจุทูุฃ ุงูุนู ููุงุช ุฒู cloning ุฃู ุญุชู ุงูู builds.
- ุงูุชุนููุฏ ูู ุฅุฏุงุฑุฉ ุงูุตูุงุญูุงุช: ุตุนุจ ุชููู ุฅู ููุงู ููุฏุฑ ูุดุชุบู ุนูู ุฌุฒุก ู ุนูู ุจุณ ู ู ุบูุฑ ู ุง ูุดูู ุงูุจุงูู.
- ู ุดุงูู ู ุน ุงูู Tools: ูู ู ุด ุนูุฏู ุฃุฏูุงุช ูููุฉ ูุฅุฏุงุฑุฉ ุงูู monorepoุ ู ู ูู ุชูุงุฌู ู ุดุงูู ูู ุงูุชูุธูู ูุนู ููุฉ ุงูู build.
โโโ
๐ ุซุงูููุง: ูุนูู ุฅูู Multirepoุ
ุนูู ุงูุนูุณ ุชู ุงู ูุงุ ุงูู Multirepo ู ุนูุงูุง ุฅู ูู ุฌุฒุก ุฃู ู ูุฏููู ู ู ุงูู ุดุฑูุน ูููู ูู Repository ุฎุงุต ุจู. ูุนูู ูู ู ูุฏููู ุจูุจูู ู ุณุชูู ุจุฐุงุชู ููุฃูู ู ุดุฑูุน ููุญุฏู.
โโโ
๐ ู ู ูุฒุงุช ุงูู Multirepo:
- ูู ู ูุฏููู ููู ุญูุงุชู ุงูุฎุงุตุฉุ ูุฏู ุจูุฎูู ุฅุฏุงุฑุฉ ูู ุฌุฒุก ู ุณุชููุฉ ูุฃุณูู ูุจุนุถ ุงููุฑู.
- ุชูุฏุฑ ุชุญุฏุฏ ู ูู ูุดุชุบู ุนูู ุฅูู ุจูุงุกู ุนูู ุงูู repo ุงููู ุนูุฏูู ุฃูุณุณ ุนููู.
- ูู ููู ู ูุฏููู ุฃู ุฎุฏู ุฉ ู ุด ู ุฑุชุจุท ุจุดูู ู ุจุงุดุฑุ ู ุด ู ุญุชุงุฌ ุชุจูู ูู ุงูู ุดุฑูุนุ ุจุณ ุชุจูู ุงูุฌุฒุก ุงููู ู ุญุชุงุฌู.
- ูู ุฌุฒุก ุจูููู ุตุบูุฑ ูู ุณุชููุ ูุฏู ุจูุฎูู ุงูุนู ููุงุช ุฒู cloning ุฃุณุฑุน ูุฃุณูู.
โโโ
๐ ุนููุจ ุงูู Multirepo:
- ุชูุฑุงุฑ ุงูููุฏ: ูู ููู ุฃูุชุฑ ู ู ู ูุฏููู ุจูุญุชุงุฌ ููุณ ุงูููุฏุ ู ู ูู ุชุถุทุฑ ุชูุฑุฑู ุฃู ุชุญุท ู ูุชุจุฉ ู ููุตูุฉ ููู.
- ุชุนููุฏ ูู ุงูุชูุณูู ุจูู ุงููุฑู: ุงูุชุนุงูู ุจูู ุงููุฑู ุจูุจูู ุฃุตุนุจุ ูุฎุตูุตูุง ูู ุง ูููู ููู dependencies ูุชูุฑ ุจูู ุงูู modules.
- ุชูุงู ู ู ุนูุฏ ููู CI/CD: ุนุดุงู ูู ุฌุฒุก ูู Repository ู ุฎุชููุ ูุชุญุชุงุฌ ุฅุนุฏุงุฏุงุช ุฃูุชุฑ ููู pipelines ุนุดุงู ูู ุญุงุฌุฉ ุชุดุชุบู ู ุน ุจุนุถ.
- ุตุนูุจุฉ ูู ุฅุฏุงุฑุฉ ุงูุชุบููุฑุงุช ุงููุจูุฑุฉ: ูู ุนูุฏู ุชุบููุฑ ุถุฎู ุจูุฃุซุฑ ุนูู ุฃูุชุฑ ู ู ู ูุฏูููุ ูุชุญุชุงุฌ ุชุฏุฎู ุนูู ูุฐุง repo ูุชุนุฏู ูู ูู ูุงุญุฏ ููุญุฏู.
โโโ
๐ ุงู ุชู ุชุฎุชุงุฑ ู ููุ
โ ุงุฎุชุฑ Monorepo ูู:
1- ู ุดุฑูุนู ุนุจุงุฑุฉ ุนู ู ุฌู ูุนุฉ modules ู ุฑุชุจุทุฉ ุจุจุนุถูุง.
2- ุนูุฏู ูุฑูู ุตุบูุฑ ุฃู ู ุชูุณุท.
3- ุจุชุญุชุงุฌ ุชุนู ู ุชุบููุฑุงุช ุจุดูู ู ุชูุฑุฑ ุนูู ุฃูุชุฑ ู ู ู ูุฏููู ูู ููุณ ุงูููุช.
4- ุงูุฃุฏูุงุช ุงููู ุจุชุณุชุฎุฏู ูุง ุจุชุฏุนู ุฅุฏุงุฑุฉ monorepos ุจุดูู ูููุณ.
โ ุงุฎุชุฑ Multirepo ูู:
1- ู ุดุฑูุนู ูุจูุฑ ุฌุฏูุง ูู ุนูุฏุ ููู ุฌุฒุก ููู ู ุณุชูู ุชู ุงู ูุง.
2- ุจุชุญุชุงุฌ ุชุชุญูู ูู ุงูุตูุงุญูุงุช ุนูู ู ุณุชูู ูู ู ูุฏููู.
3- ุนูุฏู ูุฑู ู ุฎุชููุฉ ูู ูุฑูู ุดุบุงู ุนูู ู ูุฏููู ุฎุงุต ุจู.
4- ุนุงูุฒ ุชุชุฌูุจ ุงูู ุดุงูู ุงููู ุจุชุณุจุจูุง ุฃุญุฌุงู ุงูู repos ุงููุจูุฑุฉ.
โโโ
ุงููุฑุงุฑ ูู ุงูุขุฎุฑ ุจูุฑุฌุน ูุทุจูุนุฉ ู ุดุฑูุนู ูุงุญุชูุงุฌุงุช ูุฑููู. ู ููุด ุทุฑููุฉ "ุตุญ" ูุทุฑููุฉ "ุบูุท"ุ ููู ููู ุทุฑููุฉ ู ูุงุณุจุฉ ุฃูุชุฑ ุญุณุจ ุธุฑููู. ุฃูู ุญุงุฌุฉ ุฅูู ุชููู ูุงูู ูู ุทุฑููุฉ ุจุชูุฏู ุฅูู ูุนููุจูุง ุฅูู. ๐ก
โโโ
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
โค5๐1
ุฅุฒุงู ุงูู
ููุน ุจูุดุชุบู ู
ู ุบูุฑ ุงูุชุฑูุชุ ๐
.
.
ุนู ุฑู ููุฑุช ุฅุฒุงู ู ู ูู ุชูุชุญ ู ููุน ููุจ ูููุถู ูุดุชุบู ุญุชู ูู ุงูุฅูุชุฑูุช ูุตูุ ุฃู ุชูุงูู ุงูู ููุน ุณุฑูุน ุฌุฏูุง ูุฃูู ู ุฎุฒู ูู ุญุงุฌุฉ ุนูุฏูุ ุงูุณุฑ ููุง ูู ุงูู Service Workers.
ุงูู Service Workers ุจุชูุนุจ ุฏูุฑ ูุจูุฑ ูู ุชุญุณูู ุชุฌุฑุจุฉ ุงูู ุณุชุฎุฏู ุ ูู ุงู ุจุชุฎูู ุงูู ูุงูุน ุชุดุชุบู ุจุณุฑุนุฉ ูููุงุกุฉ ุญุชู ูู ุญุงูุฉ ุงููุทุงุน ุงูุฅูุชุฑูุช.
ุชุนุงู ูููู ุงูู ูุถูุน ุจุจุณุงุทุฉ...
โโโ
๐ ูุนูู ุฅูู Service Workerุ
ุจุจุณุงุทุฉุ ุฏู ููุฏ ุฃู ุณูุฑุจุช JavaScript ุจูุดุชุบู ูู ุงูุฎูููุฉ ุจูู ุงูู ุชุตูุญ ูุงูุณูุฑูุฑ. ูู ุด ุฒู ุงูููุฏ ุงูุนุงุฏู ุจุชุงุน ุงูุตูุญุฉุ ุฏู ุจูุดุชุบู ูู ุงูุฎูููุฉ ูุจูุฏู ุงูู ููุน ู ู ูุฒุงุช ูุจูุฑุฉ ุฒู:
- ุงูู (Caching): ูุนูู ูุญูุธ ู ููุงุช ุงูู ููุน ุนูุฏู ุนูู ุงูุฌูุงุฒ ุนุดุงู ููุชุญ ุจุณุฑุนุฉ ุญุชู ูู ุงูุฅูุชุฑูุช ุถุนูู.
- ุงูุนู ู ุฃูููุงูู: ุงูู ููุน ูุดุชุบู ุญุชู ูู ุงูุฅูุชุฑูุช ูุงุทุน.
- ุงูู (Push Notifications): ุงูุฑุณุงุฆู ุงููู ุจุชุฌููู ู ู ุงูู ููุน ุญุชู ูู ู ุด ูุงุชุญ ุงูุตูุญุฉ.
โโโ
๐ ุฅุฒุงู ุงูู Service Workers ุจุชุดุชุบูุ
1- ุงูุชุณุฌูู (Registration): ุฃูู ู ุง ุงูู ุณุชุฎุฏู ููุชุญ ุงูู ููุนุ ุงูู Service Worker ุจูุชุณุฌู ู ุฑุฉ ูุงุญุฏุฉ.
2- ุงูุชุซุจูุช (Installation): ููุง ููุฏุฑ ูุจุฏุฃ ูุดุชุบู ููุญูุธ ุงูู ููุงุช ุงููู ู ุญุชุงุฌูุง.
3- ุงูุญุฏุซ (Fetch Event): ูู ุง ุงูู ุณุชุฎุฏู ูุทูุจ ุฃู ุญุงุฌุฉ (ุฒู ุตูุฑุฉ ุฃู ุตูุญุฉ)ุ ุงูู Service Worker ููุฑุฑ ูุฌูุจูุง ู ู ุงููุงุด ููุง ู ู ุงูุณูุฑูุฑ.
โโโ
โ ู ู ูุฒุงุช ุงูู Service Workers:
- ุฃุฏุงุก ุฃูุถู: ูุฃูู ุจูููู ุงูุถุบุท ุนูู ุงูุณูุฑูุฑ.
- ุชุฌุฑุจุฉ ู ุณุชุฎุฏู ู ู ุชุงุฒุฉ: ู ู ูุงุญูุฉ ุงูุณุฑุนุฉ ูุฅู ูุงููุฉ ุงูุชุดุบู ุจุฏูู ุฅูุชุฑูุช.
- ุงูุฃู ุงู: ูุงุฒู ุงูู Service Workers ูุดุชุบููุง ุนูู HTTPS ุนุดุงู ูุญุงูุธูุง ุนูู ุจูุงูุงุช ุงูู ุณุชุฎุฏู .
โโโ
๐ ู ูุญูุธุงุช ู ูู ุฉ
๐ ุงูู Service Workers ู ุญุชุงุฌุฉ ุชุฎุทูุท ูููุณ ุนุดุงู ู ุชุนู ูุด ูุงุด ููู ููุงุช ุฒูุงุฏุฉ ุนู ุงููุฒูู .
๐ ู ุด ูู ุงูู ู ูุฒุงุช ุจุชุดุชุบู ูู ูู ุงูู ุชุตูุญุงุชุ ููุงุฒู ุชุนู ู ุญุณุงุจู.
โโโ
ุฅุฒุงู ู ู ูู ุชุถูู ุงูู Service Workers ูู ู ุดุฑูุนูุ ๐ค
ุงูููุฏ ุงูุฃุณุงุณู ุจุณูุท ุฌุฏูุง:
โโโ
ุฃู ุง ูู ู ูู sw.js:
โโโ
ูู ุนุงูุฒ ุชุชุนู ู ูู ุงูู ูุถูุน ูุชุนุฑู ุชูุงุตูู ุฃูุชุฑ ๐
Service Worker API
https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
Service workers
https://web.dev/learn/pwa/service-workers
โโโ
ูู ุดุงูู ุฅู ุงูุจูุณุช ุฏู ู ููุฏุ ุงุฏุนู ู ุจู Like ุฃู Share ุนุดุงู ุงููู ูุณุชููุฏ. ๐ก
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
.
.
ุนู ุฑู ููุฑุช ุฅุฒุงู ู ู ูู ุชูุชุญ ู ููุน ููุจ ูููุถู ูุดุชุบู ุญุชู ูู ุงูุฅูุชุฑูุช ูุตูุ ุฃู ุชูุงูู ุงูู ููุน ุณุฑูุน ุฌุฏูุง ูุฃูู ู ุฎุฒู ูู ุญุงุฌุฉ ุนูุฏูุ ุงูุณุฑ ููุง ูู ุงูู Service Workers.
ุงูู Service Workers ุจุชูุนุจ ุฏูุฑ ูุจูุฑ ูู ุชุญุณูู ุชุฌุฑุจุฉ ุงูู ุณุชุฎุฏู ุ ูู ุงู ุจุชุฎูู ุงูู ูุงูุน ุชุดุชุบู ุจุณุฑุนุฉ ูููุงุกุฉ ุญุชู ูู ุญุงูุฉ ุงููุทุงุน ุงูุฅูุชุฑูุช.
ุชุนุงู ูููู ุงูู ูุถูุน ุจุจุณุงุทุฉ...
โโโ
๐ ูุนูู ุฅูู Service Workerุ
ุจุจุณุงุทุฉุ ุฏู ููุฏ ุฃู ุณูุฑุจุช JavaScript ุจูุดุชุบู ูู ุงูุฎูููุฉ ุจูู ุงูู ุชุตูุญ ูุงูุณูุฑูุฑ. ูู ุด ุฒู ุงูููุฏ ุงูุนุงุฏู ุจุชุงุน ุงูุตูุญุฉุ ุฏู ุจูุดุชุบู ูู ุงูุฎูููุฉ ูุจูุฏู ุงูู ููุน ู ู ูุฒุงุช ูุจูุฑุฉ ุฒู:
- ุงูู (Caching): ูุนูู ูุญูุธ ู ููุงุช ุงูู ููุน ุนูุฏู ุนูู ุงูุฌูุงุฒ ุนุดุงู ููุชุญ ุจุณุฑุนุฉ ุญุชู ูู ุงูุฅูุชุฑูุช ุถุนูู.
- ุงูุนู ู ุฃูููุงูู: ุงูู ููุน ูุดุชุบู ุญุชู ูู ุงูุฅูุชุฑูุช ูุงุทุน.
- ุงูู (Push Notifications): ุงูุฑุณุงุฆู ุงููู ุจุชุฌููู ู ู ุงูู ููุน ุญุชู ูู ู ุด ูุงุชุญ ุงูุตูุญุฉ.
โโโ
๐ ุฅุฒุงู ุงูู Service Workers ุจุชุดุชุบูุ
1- ุงูุชุณุฌูู (Registration): ุฃูู ู ุง ุงูู ุณุชุฎุฏู ููุชุญ ุงูู ููุนุ ุงูู Service Worker ุจูุชุณุฌู ู ุฑุฉ ูุงุญุฏุฉ.
2- ุงูุชุซุจูุช (Installation): ููุง ููุฏุฑ ูุจุฏุฃ ูุดุชุบู ููุญูุธ ุงูู ููุงุช ุงููู ู ุญุชุงุฌูุง.
3- ุงูุญุฏุซ (Fetch Event): ูู ุง ุงูู ุณุชุฎุฏู ูุทูุจ ุฃู ุญุงุฌุฉ (ุฒู ุตูุฑุฉ ุฃู ุตูุญุฉ)ุ ุงูู Service Worker ููุฑุฑ ูุฌูุจูุง ู ู ุงููุงุด ููุง ู ู ุงูุณูุฑูุฑ.
โโโ
โ ู ู ูุฒุงุช ุงูู Service Workers:
- ุฃุฏุงุก ุฃูุถู: ูุฃูู ุจูููู ุงูุถุบุท ุนูู ุงูุณูุฑูุฑ.
- ุชุฌุฑุจุฉ ู ุณุชุฎุฏู ู ู ุชุงุฒุฉ: ู ู ูุงุญูุฉ ุงูุณุฑุนุฉ ูุฅู ูุงููุฉ ุงูุชุดุบู ุจุฏูู ุฅูุชุฑูุช.
- ุงูุฃู ุงู: ูุงุฒู ุงูู Service Workers ูุดุชุบููุง ุนูู HTTPS ุนุดุงู ูุญุงูุธูุง ุนูู ุจูุงูุงุช ุงูู ุณุชุฎุฏู .
โโโ
๐ ู ูุญูุธุงุช ู ูู ุฉ
๐ ุงูู Service Workers ู ุญุชุงุฌุฉ ุชุฎุทูุท ูููุณ ุนุดุงู ู ุชุนู ูุด ูุงุด ููู ููุงุช ุฒูุงุฏุฉ ุนู ุงููุฒูู .
๐ ู ุด ูู ุงูู ู ูุฒุงุช ุจุชุดุชุบู ูู ูู ุงูู ุชุตูุญุงุชุ ููุงุฒู ุชุนู ู ุญุณุงุจู.
โโโ
ุฅุฒุงู ู ู ูู ุชุถูู ุงูู Service Workers ูู ู ุดุฑูุนูุ ๐ค
ุงูููุฏ ุงูุฃุณุงุณู ุจุณูุท ุฌุฏูุง:
// Register Service Worker
if ("serviceWorker" in navigator) {
navigator.serviceWorker
.register("/sw.js")
.then(() => {
console.log("Service Worker Registered!");
});
}
โโโ
ุฃู ุง ูู ู ูู sw.js:
self.addEventListener("install", (event) => {
console.log("Service Worker Installed");
});
self.addEventListener("fetch", (event) => {
event.respondWith(
caches.match(event.request).then((response) => {
return response || fetch(event.request);
})
);
});
โโโ
ูู ุนุงูุฒ ุชุชุนู ู ูู ุงูู ูุถูุน ูุชุนุฑู ุชูุงุตูู ุฃูุชุฑ ๐
Service Worker API
https://developer.mozilla.org/en-US/docs/Web/API/Service_Worker_API
Service workers
https://web.dev/learn/pwa/service-workers
โโโ
ูู ุดุงูู ุฅู ุงูุจูุณุช ุฏู ู ููุฏุ ุงุฏุนู ู ุจู Like ุฃู Share ุนุดุงู ุงููู ูุณุชููุฏ. ๐ก
ููููู ุงููู ููู ุฎูุฑ ๐ฟ
โค12
The Hidden Cost of Over-Engineering in Software Development ๐ค
Over-engineering in software and systems development occurs when a solution is made more complex than necessary to meet its current requirements.
โโโ
๐ Full Article:
https://dev.to/alisamir/the-hidden-cost-of-over-engineering-in-software-development-4dnk
โค4