DevGuide ๐Ÿ‡ต๐Ÿ‡ธ
10.9K subscribers
2.56K photos
17 videos
127 files
3.54K links
Join our channel for top-notch programming hacks, epic discussions, and brilliant career moves. ๐Ÿš€

โšก๏ธ Stay connected with me: linktr.ee/AliSamir

๐Ÿ“ To advertise on the channel: https://telega.io/c/the_developer_guide
Download Telegram
Throttling & Debouncing in JavaScript: A Beginner's Guide โšก๏ธ

- When using JavaScript, excessive event triggers can slow down your application. For instance, a user resizing the browser window or typing in a search bar can cause events to fire repeatedly in a short time, impacting app performance.

- This is where throttling and debouncing come to the rescue. They help you manage how often your functions are called when dealing with events that fire too often.

โ€”โ€”โ€”

https://dev.to/alisamir/throttling-debouncing-in-javascript-a-beginners-guide-3j7n
ุชุฑูƒุงูŠุฉ ูุฑูˆู†ุช ุงู†ุฏ ุน ุงู„ุณุฑูŠุน...โšก๏ธ

- ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ู„ูˆ ุฒู‡ู‚ุช ู…ู† ุฃุดูƒุงู„ ุงู„ู€ list ุงู„ุชู‚ู„ูŠุฏูŠุฉ ููŠ ุงู„ู€ CSSุŒ ุชุนุงู„ ุฃู‚ูˆู„ูƒ ุนู„ู‰ ุญุงุฌุฉ ุนุจู‚ุฑูŠุฉ ุชู‚ุฏุฑ ู…ู† ุฎู„ุงู„ู‡ุง ุชุนู…ู„ ุงู„ู€ list style ุงู„ุฎุงุตุฉ ุจูŠูƒ ูˆุชุชุญูƒู… ููŠ ุดูƒู„ ุงู„ุฃุฑู‚ุงู… ุฃูˆ ุงู„ุฑู…ูˆุฒ ุจูƒู„ ุณู‡ูˆู„ุฉ๐Ÿ’ก

CSS Custom List Styles ๐Ÿ”ป


โ€”โ€”โ€”

โšก๏ธ Tutorial Video: https://youtu.be/wZ4TdxtvLdQ

โšก๏ธ LinkedIn Post: https://www.linkedin.com/posts/dev-alisamir_css-cssstyling-frontendabrtips-activity-7238241222073479169-CQpA

โ€”โ€”โ€”

ุจุงู„ุชูˆููŠู‚ ูŠุง ุจุทู„ ๐Ÿ’ช๐Ÿป
๐Ÿ‘1
ูˆุฃู†ุช ุจุชูƒุชุจ ูƒูˆุฏ JavaScriptุŒ ู…ู‡ู… ุฌุฏู‹ุง ุชุฑูƒุฒ ุนู„ู‰ ูƒุชุงุจุฉ ูƒูˆุฏ ู†ุธูŠู (Clean Code) ูˆุณู‡ู„ ุงู„ูู‡ู…ุŒ ู…ุด ุจุณ ุนุดุงู† ู†ูุณูƒุŒ ู„ูƒู† ูƒู…ุงู† ุนุดุงู† ุฃูŠ ุญุฏ ุชุงู†ูŠ ูŠุดุชุบู„ ุนู„ู‰ ุงู„ูƒูˆุฏ ุจุนุฏูƒ ูˆุจุงู„ุฃุฎุต ู„ูˆ ุดุบุงู„ ููŠ ุชูŠู… ููŠ ุดุฑูƒุฉ ุฃูˆ ุนู„ู‰ ู…ุดุฑูˆุน ู…ุนูŠู†. โšก๏ธ

โ€”โ€”โ€”

๐Ÿ“Œ ุญุงูˆู„ ุชุฎู„ูŠ ุฃุณู…ุงุก ุงู„ู…ุชุบูŠุฑุงุช ูˆุงู„ุฏูˆุงู„ ู…ุนุจุฑุฉ: ู„ุงุฒู… ุงู„ุงุณู… ูŠูƒูˆู† ุจูŠูˆุถุญ ุฅูŠู‡ ุงู„ู„ูŠ ุจูŠุญุตู„ุŒ ุจู„ุงุด ุชุฎุชุงุฑ ุฃุณู…ุงุก ุฒูŠ x ูˆy.

ู…ุซุงู„: ุจุฏู„ ู…ุง ุชูƒุชุจ tmpุŒ ุฎู„ูŠ ุงู„ุงุณู… ุฒูŠ userAge ุฃูˆ productPrice.

โ€”โ€”โ€”

๐Ÿ“Œ ุฎู„ูŠ ุงู„ุฏุงู„ุฉ ุจุชุนู…ู„ ุญุงุฌุฉ ูˆุงุญุฏุฉ ุจุณ: ูƒู„ ุฏุงู„ุฉ ู„ุงุฒู… ูŠุจู‚ู‰ ู„ูŠู‡ุง ูˆุธูŠูุฉ ูˆุงุถุญุฉ ู…ุญุฏุฏุฉุŒ ูŠุนู†ูŠ ู„ูˆ ุนู†ุฏูƒ ุฏุงู„ุฉ ุจุชุฌูŠุจ ุฏุงุชุง ู…ู† API ูˆูƒู…ุงู† ุจุชุนู…ู„ ู…ุนุงู„ุฌุฉ ู„ูŠู‡ุง ูˆุชุนุฑุถู‡ุงุŒ ูุงู„ุฃูุถู„ ุฅู†ูƒ ุชู‚ุณู…ู‡ู… ู„ุฏูˆุงู„ ุฃุตุบุฑ ูƒู„ ูˆุงุญุฏุฉ ู…ู†ู‡ู… ู…ุณุคูˆู„ุฉ ุนู† ูˆุธูŠูุฉ ูˆุงุญุฏุฉ.

โ€”โ€”โ€”

๐Ÿ“Œ ู‚ู„ู„ ู…ู† ุงุณุชุฎุฏุงู… ุงู„ู€ comments: ุงู„ูƒูˆุฏ ุจุชุงุนูƒ ุงู„ู…ูุฑูˆุถ ูŠุจู‚ู‰ ูˆุงุถุญ ู„ุฏุฑุฌุฉ ุฅู†ู‡ ู…ุด ู…ุญุชุงุฌ ูƒูˆู…ู†ุชุงุช ูƒุชูŠุฑุŒ ุงุณุชุฎุฏู… ุงู„ูƒูˆู…ู†ุชุงุช ุจุณ ู„ู…ุง ูŠูƒูˆู† ููŠู‡ ุญุงุฌุฉ ูุนู„ุงู‹ ู…ุญุชุงุฌุฉ ุชูˆุถูŠุญ.

โ€”โ€”โ€”

๐Ÿ“Œ ุงุณุชุฎุฏู… ุงู„ู€ const ูˆ let ุตุญ: ุจู„ุงุด ุชุณุชุฎุฏู… varุŒ ูˆุฏุงูŠู…ู‹ุง ุฎู„ูŠ ุจุงู„ูƒ ุฅู†ูƒ ุชุณุชุฎุฏู… const ู„ู„ู…ุชุบูŠุฑุงุช ุงู„ู„ูŠ ู…ุด ู‡ุชุชุบูŠุฑุŒ ูˆlet ู„ู„ุญุงุฌุงุช ุงู„ู„ูŠ ู…ู…ูƒู† ุชุชุบูŠุฑ ู‚ูŠู…ุชู‡ุง.

โ€”โ€”โ€”

๐Ÿ“Œ ุฑุชุจ ุงู„ูƒูˆุฏ ูˆุฎู„ูŠู‡ ู…ู‚ุฑูˆุก: ุฎู„ูŠ ููŠู‡ ู…ุณุงูุงุช ุจูŠู† ุงู„ุฃุณุทุฑ ูˆุงู‡ุชู… ุจุชู†ุณูŠู‚ ุงู„ูƒูˆุฏุŒ ุงุณุชุฎุฏุงู… ุฃุฏูˆุงุช ุฒูŠ Prettier ู…ู…ูƒู† ูŠุณุงุนุฏูƒ ููŠ ุงู„ู…ูˆุถูˆุน ุฏู‡.

โ€”โ€”โ€”

ู„ูˆ ู…ู‡ุชู… ุฃูƒุซุฑ ุจุงู„ู€ Clean Code ููŠ JavaScript ุจู†ุตุญูƒ ุชุดูˆู ุงู„ู…ูˆู‚ุน ุฏู‡ ๐Ÿ”ป

https://blog.abdelhadi.org/clean-code-javascript-in-arabic

โ€”โ€”โ€”
ุจุงู„ุชูˆููŠู‚ ูŠุง ุจุทู„ ๐Ÿ’ช๐Ÿป
โค9๐Ÿ‘1
ู…ุนุธู… ุงู„ุดุฑูƒุงุช ุญุงู„ูŠู‹ุง ู…ุนุชู…ุฏุฉ ุนู„ู‰ GitLab ููŠ ุฅุฏุงุฑุฉ ุงู„ู…ุดุงุฑูŠุน ุงู„ุฎุงุตุฉ ุจู‡ุงุŒ ูุงู„ุฃูุถู„ ุฅู†ูƒ ุชุชุนู„ู… GitLab ุจุงู„ุฅุถุงูุฉ ุฅู„ู‰ ุชุนู„ู… Git & GitHub ๐Ÿ”ป

ู„ูˆ ู…ุชุนุฑูุด ูŠุนู†ูŠ ุฅูŠู‡ Git ุฎู„ูŠู†ูŠ ุฃู‚ูˆู„ูƒ ุจุจุณุงุทุฉ ูƒุฏู‡ุŒ Git ู‡ูˆ ู†ุธุงู… ุฅุฏุงุฑุฉ ุฅุตุฏุงุฑุงุช (Version Control System) ุจูŠุณุงุนุฏูƒ ุชุชุญูƒู… ููŠ ูƒู„ ุงู„ุชุบูŠูŠุฑุงุช ุงู„ู„ูŠ ุจุชุญุตู„ ููŠ ุงู„ูƒูˆุฏ ุจุชุงุนูƒ. ูŠุนู†ูŠ ู„ูˆ ุนู…ู„ุช ุชุนุฏูŠู„ ุบู„ุทุŒ ู…ู…ูƒู† ุจูƒู„ ุณู‡ูˆู„ุฉ ุชุฑุฌุน ู„ู†ุณุฎุฉ ู‚ุฏูŠู…ุฉ ู…ู† ุงู„ูƒูˆุฏ ูˆุชุตู„ุญ ุงู„ู„ูŠ ุญุตู„.

โ€”โ€”โ€”

ุฃู…ุง GitHub ูู‡ูˆ ู…ู†ุตุฉ ุจุชุฑูุน ุนู„ูŠู‡ุง ุงู„ูƒูˆุฏ ุจุชุงุนูƒ ุงู„ู„ูŠ ู…ุณุชุฎุฏู… ููŠู‡ Git ุนุดุงู† ุชู‚ุฏุฑ ุชุฎุฒู†ู‡ ุฃูˆู†ู„ุงูŠู†ุŒ ูˆุชุดุชุบู„ ุนู„ูŠู‡ ู…ุน ุจุงู‚ูŠ ุงู„ุชูŠู… ูˆูƒู…ุงู† ุชูˆุตู„ู‡ ู…ู† ุฃูŠ ุฌู‡ุงุฒ ุจู†ูุณ ุงู„ุฃูƒูˆู†ุช ุจุชุงุนูƒ.

ูŠุนู†ูŠ ุชุฎูŠู„ ุฅู†ูƒ ุดุบุงู„ ููŠ ู…ุดุฑูˆุน ูƒุจูŠุฑ ูˆู…ุนุงูƒ ุชูŠู…ุŒ ูƒู„ ูˆุงุญุฏ ู…ู…ูƒู† ูŠุดุชุบู„ ุนู„ู‰ ุฌุฒุก ู…ุนูŠู† ู…ู† ุงู„ูƒูˆุฏุŒ ูˆุจุนุฏูŠู† ุชุฏู…ุฌูˆุง ุดุบู„ูƒู… ูƒู„ู‡ ู…ุน ุจุนุถ ู…ู† ุบูŠุฑ ู…ุง ูŠุญุตู„ ุฃูŠ ู„ุฎุจุทุฉ.

โ€”โ€”โ€”

ู…ูŠุฒุฉ ุฅุฏุงุฑุฉ ุงู„ุฅุตุฏุงุฑุงุช (Version Control) ุจู‚ู‰ ุฅู†ู‡ุง ุจุชุฎู„ูŠูƒ ุชุชุงุจุน ูƒู„ ู†ุณุฎุฉ ุจุชุนุฏู„ู‡ุง ููŠ ุงู„ูƒูˆุฏุŒ ูˆุชู‚ุฏุฑ ุชุนู…ู„ branches ูŠุนู†ูŠ ู†ุณุฎ ู…ุฎุชู„ูุฉ ู…ู† ุงู„ูƒูˆุฏ ู„ูƒู„ ุฎุงุตูŠุฉ ุฌุฏูŠุฏุฉ ุจุชุดุชุบู„ ุนู„ูŠู‡ุงุŒ ูˆุจุนุฏ ู…ุง ุชุฎู„ุต ุจุชุฏู…ุฌู‡ุง ู…ุน ุงู„ู†ุณุฎุฉ ุงู„ุฃุณุงุณูŠุฉ ู…ู† ุงู„ู…ุดุฑูˆุน.

ุจุงู„ู†ุณุจุฉ ู„ู€ GitLab ูู‡ูˆ ู…ู†ุตุฉ ุฒูŠ GitHub ู…ู† ุญูŠุซ ุงู„ูˆุธูŠูุฉ ูˆุงู„ุงุณุชุฎุฏุงู…. ูˆู„ูƒู† ู‡ุชู„ุงู‚ูŠ ุดูƒู„ู‡ุง ู…ุฎุชู„ู ุดูˆูŠุฉ.

โ€”โ€”โ€”

ุจุงู„ุชูˆููŠู‚ ูŠุง ุจุทู„ ๐Ÿ’ช๐Ÿป
โค6
ุงู„ู€ REST APIs ุฏู„ูˆู‚ุชูŠ ุจู‚ุช ุญุงุฌุฉ ุฃุณุงุณูŠุฉ ููŠ ุฃูŠ ู…ุดุฑูˆุน ุจุฑู…ุฌูŠุŒ ุณูˆุงุก ูƒุงู† ุชุทุจูŠู‚ ูˆูŠุจ ุฃูˆ ู…ูˆุจุงูŠู„. ุทูŠุจ ุชุนุงู„ ู†ูู‡ู… ูˆุงุญุฏุฉ ูˆุงุญุฏุฉุŒ ูŠุนู†ูŠ ุฅูŠู‡ ุฃุตู„ุงู‹ REST API ูˆู„ูŠู‡ ู…ู‡ู…ุฉุŸ โšก๏ธ

ุฃูˆู„ ุญุงุฌุฉ ูƒู„ู…ุฉ API ู‡ูŠ ุงุฎุชุตุงุฑ ู„ู€ Application Programming InterfaceุŒ ูˆุฏู‡ ู…ุนู†ุงู‡ ุฅู† ุงู„ู€ API ุนุจุงุฑุฉ ุนู† ูˆุณูŠู„ุฉ ุจุชุณู…ุญ ู„ุชุทุจูŠู‚ุงุช ู…ุฎุชู„ูุฉ ุฅู†ู‡ุง "ุชุชูƒู„ู…" ู…ุน ุจุนุถ. ๐Ÿ’ฏ

ูŠุนู†ูŠ ุฅูŠู‡ "ุชุชูƒู„ู…"ุŸ ูŠุนู†ูŠ ุชุทุจูŠู‚ ุฒูŠ ุชุทุจูŠู‚ ู…ูˆุจุงูŠู„ ุฃูˆ ูˆูŠุจ ูŠู‚ุฏุฑ ูŠุทู„ุจ ุจูŠุงู†ุงุช ุฃูˆ ุฎุฏู…ุงุช ู…ู† ุณูŠุฑูุฑ (ุงู„ุฎุงุฏู…) ูˆูŠุณุชู‚ุจู„ ุฑุฏ. ุทุจ ุฅุฒุงูŠ ุจู†ุนู…ู„ ุฏู‡ุŸ ู‡ู†ุง ุจูŠูŠุฌูŠ ุฏูˆุฑ ุงู„ู€ REST.

โ€”โ€”โ€”

ูƒู„ู…ุฉ REST ุงุฎุชุตุงุฑ ู„ู€ Representational State TransferุŒ ูˆุฏู‡ ู†ูˆุน ู…ู† ุฃู†ูˆุงุน ุงู„ู€ APIs ุงู„ู„ูŠ ุจูŠุณู…ุญ ู„ู†ุง ุฅู†ู†ุง ู†ุณุชุฎุฏู… ุจุฑูˆุชูˆูƒูˆู„ HTTP (ุงู„ู„ูŠ ู‡ูˆ ู†ูุณ ุงู„ุจุฑูˆุชูˆูƒูˆู„ ุงู„ู„ูŠ ุจู†ุณุชุฎุฏู…ู‡ ู„ู…ุง ู†ุฏุฎู„ ุนู„ู‰ ุฃูŠ ู…ูˆู‚ุน) ุนู„ุดุงู† ู†ุจุนุช ุทู„ุจุงุช ู„ู„ุณูŠุฑูุฑ ูˆู†ุงุฎุฏ ุฑุฏูˆุฏ ู…ู†ู‡. ๐Ÿ”ป

โ€”โ€”โ€”

๐Ÿ“Œ ุฅุฒุงูŠ ุฏู‡ ุจูŠุดุชุบู„ ุจู‚ู‰ุŸ

ุงู„ููƒุฑุฉ ุจุจุณุงุทุฉ ุฅู†ูƒ ุจุชุจุนุช ุญุงุฌุฉ ุงุณู…ู‡ุง request ู„ู„ุณูŠุฑูุฑ. ุงู„ุทู„ุจ ุฏู‡ ู…ู…ูƒู† ูŠูƒูˆู† ู…ุซู„ู‹ุง ุฅู†ูƒ ุนุงูˆุฒ ุชุฌูŠุจ ุจูŠุงู†ุงุช ู…ุนูŠู†ุฉ ุฒูŠ ู‚ุงุฆู…ุฉ ุงู„ู…ู†ุชุฌุงุชุŒ ุฃูˆ ุฅู†ูƒ ุนุงูˆุฒ ุชุถูŠู ู…ุณุชุฎุฏู… ุฌุฏูŠุฏ. ุงู„ุณูŠุฑูุฑ ุจูŠุดูˆู ุงู„ุทู„ุจ ุจุชุงุนูƒุŒ ูˆุจูŠุฑุฌุนู„ูƒ response ุงู„ู„ูŠ ุจูŠูƒูˆู† ููŠู‡ ุงู„ุจูŠุงู†ุงุช ุงู„ู…ุทู„ูˆุจุฉ.

ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ุงู„ุณูŠุฑูุฑ ุจูŠุฑุฏ ุจูŠู‡ุง ุจุชูƒูˆู† ููŠ ุงู„ุบุงู„ุจ ู…ูƒุชูˆุจุฉ ุจุตูŠุบุฉ ุงุณู…ู‡ุง JSON (JavaScript Object Notation)ุŒ ูˆุฏูŠ ุทุฑูŠู‚ุฉ ุจุณูŠุทุฉ ูˆู…ู†ุธู…ุฉ ุนู„ุดุงู† ุงู„ุชุทุจูŠู‚ุงุช ุชู‚ุฏุฑ ุชูู‡ู… ุงู„ุจูŠุงู†ุงุช ุจุดูƒู„ ุณู‡ู„ ูˆุชุดุชุบู„ ุจูŠู‡ุง.

โ€”โ€”โ€”

๐Ÿ“Œ ู„ูŠู‡ ุจู‚ู‰ REST APIs ู…ู‡ู…ุฉุŸ

โœ… ูุตู„ ุงู„ู€ frontend ุนู† ุงู„ู€ backend: ุจู…ุนู†ู‰ ุฅู† ุงู„ู…ุจุฑู…ุฌูŠู† ุงู„ู„ูŠ ุดุบุงู„ูŠู† ุนู„ู‰ ุชุตู…ูŠู… ูˆุงุฌู‡ุฉ ุงู„ู…ุณุชุฎุฏู… (frontend) ูŠู‚ุฏุฑูˆุง ูŠุดุชุบู„ูˆุง ุจุนูŠุฏ ุนู† ุงู„ู„ูŠ ุดุบุงู„ูŠู† ุนู„ู‰ ุงู„ุณูŠุฑูุฑ ูˆุงู„ุจูŠุงู†ุงุช (backend). ูƒู„ ูˆุงุญุฏ ุจูŠุจุนุช ุทู„ุจุงุช ู„ู„ุชุงู†ูŠ ูˆูŠุงุฎุฏ ู…ู†ู‡ ุฑุฏูˆุฏ ู…ู† ุบูŠุฑ ู…ุง ูŠูƒูˆู†ูˆุง ู…ุฑุชุจุทูŠู† ุจุจุนุถ ุจุดูƒู„ ู…ุจุงุดุฑ.

โœ… ุงู„ู…ุฑูˆู†ุฉ: ุงู„ู€ REST APIs ุจุชุฎู„ูŠ ุงู„ุชุทุจูŠู‚ุงุช ุงู„ู…ุฎุชู„ูุฉ (ู…ูˆุจุงูŠู„ุŒ ูˆูŠุจุŒ ุจุฑุงู…ุฌ ุฏูŠุณูƒุชูˆุจ) ุชู‚ุฏุฑ ุชุชูƒู„ู… ู…ุน ู†ูุณ ุงู„ุณูŠุฑูุฑ. ูŠุนู†ูŠ ู…ุซู„ู‹ุง ู„ูˆ ุนู†ุฏูƒ ู…ูˆู‚ุน ูˆูŠุจ ูˆุชุทุจูŠู‚ ู…ูˆุจุงูŠู„ุŒ ุงู„ุงุชู†ูŠู† ู…ู…ูƒู† ูŠุณุชุฎุฏู…ูˆุง ู†ูุณ ุงู„ู€ API ุนุดุงู† ูŠุฌูŠุจูˆุง ู†ูุณ ุงู„ุจูŠุงู†ุงุช.

โœ… ู„ูˆ ุนุงูˆุฒ ุชุถูŠู ู…ู…ูŠุฒุงุช ุฃูˆ ุชุทูˆุฑ ููŠ ุงู„ุชุทุจูŠู‚ุŒ ู…ุด ุจุชุญุชุงุฌ ุชุบูŠุฑ ูƒู„ ุญุงุฌุฉ. ูู‚ุท ุจุชุถูŠู ู†ู‚ุงุท ุฌุฏูŠุฏุฉ (endpoints) ููŠ ุงู„ู€ API.

โ€”โ€”โ€”

ูุจุงู„ุชุงู„ูŠุŒ ุงู„ู€ REST APIs ุจุชุฎู„ูŠ ุนู…ู„ูŠุฉ ุงู„ุชูˆุงุตู„ ุจูŠู† ุงู„ุชุทุจูŠู‚ุงุช ูˆุงู„ุณูŠุฑูุฑ ุณู‡ู„ุฉ ูˆู…ุฑู†ุฉ ุฌุฏู‹ุงุŒ ูˆุจุชุณู‡ู„ ุนู„ู‰ ุงู„ู…ุจุฑู…ุฌูŠู† ุฅู†ู‡ู… ูŠุจู†ูˆุง ู…ุดุงุฑูŠุน ูƒุจูŠุฑุฉ ุจุดูƒู„ ู…ู†ุธู… ูˆุณู‡ู„ ููŠ ุงู„ุชุนุฏูŠู„. ๐Ÿ”ฅ
โค12๐Ÿ‘3๐Ÿ‘1
ุชุฑูƒุงูŠุฉ ูุฑูˆู†ุช ุงู†ุฏ ุน ุงู„ุณุฑูŠุน...โšก๏ธ

- ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ุฅุฒุงูŠ ุชุชุญูƒู… ููŠ ุฃูˆู„ ุญุฑู ุฃูˆ ุฃูˆู„ ุณุทุฑ ููŠ ุฃูŠ ูู‚ุฑุฉ ุฏุงุฎู„ ุงู„ู…ูˆู‚ุน ูˆุชุนู…ู„ ู„ูŠู‡ู… ุณุชุงูŠู„ ู…ุฎุชู„ู ุนู† ุจุงู‚ูŠ ุงู„ูู‚ุฑุฉ ๐Ÿ’ฏ

CSS Newspaper Subheadings


โ€”โ€”โ€”

โšก๏ธ Tutorial Video: https://youtu.be/eSebCtQgnx0

โšก๏ธ LinkedIn Post: https://www.linkedin.com/posts/dev-alisamir_css-css3-cssstyling-activity-7238785437761212416-V3OP
โค1
ุฎู„ูŠู†ุง ู†ุชูƒู„ู… ุนู† ุญุงุฌุฉ ู…ู‡ู…ุฉ ุฌุฏู‹ุง ููŠ ููŠ ู…ุฌุงู„ ุงู„ุณูˆูุชูˆูŠุฑ ูˆู‡ูŠ GraphQLุŒ ูˆู†ุนุฑู ุงู„ูุฑู‚ ุจูŠู†ู‡ุง ูˆุจูŠู† REST APIs. ๐Ÿ”ป

- ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค

โ€”โ€”โ€”

๐Ÿ“Œ ุฅูŠู‡ ู‡ูŠ GraphQLุŸ

ุงู„ู€ GraphQL ุนุจุงุฑุฉ ุนู† ุทุฑูŠู‚ุฉ ู„ู„ุชุนุงู…ู„ ู…ุน ุงู„ู€ APIsุŒ ูˆู‡ูŠ ุชุนุชุจุฑ ุจุฏูŠู„ ุฃูˆ ุชุญุณูŠู† ู„ู€ REST APIs. ุงู„ู„ูŠ ุจูŠุญุตู„ ููŠ GraphQL ุฅู†ูƒ ุจุชู‚ุฏุฑ ุชุญุฏุฏ ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ุนุงูˆุฒู‡ุง ุจุงู„ุถุจุท ู…ู† ุงู„ู€ APIุŒ ู…ู† ุบูŠุฑ ู…ุง ุชุฑุฌุน ูƒู„ ุญุงุฌุฉ ู…ูˆุฌูˆุฏุฉ ููŠ ุงู„ู€ endpoint ุฒูŠ ู…ุง ุจูŠุญุตู„ ููŠ REST.

ุจู…ุนู†ู‰ ุชุงู†ูŠุŒ ููŠ REST ู„ูˆ ุจุชุทู„ุจ ุจูŠุงู†ุงุช ุงู„ู…ุณุชุฎุฏู… ู…ุซู„ุงู‹ุŒ ุงู„ู€ API ุจูŠุฑุฌุนู„ูƒ ูƒู„ ุญุงุฌุฉ ุนู† ุงู„ู…ุณุชุฎุฏู… ุญุชู‰ ู„ูˆ ุฃู†ุช ู…ุญุชุงุฌ ุฌุฒุก ุตุบูŠุฑ ู…ู†ู‡ุง ุฒูŠ ุงู„ุงุณู… ุฃูˆ ุงู„ุฅูŠู…ูŠู„ ุจุณ. ู„ูƒู† ููŠ GraphQLุŒ ุฃู†ุช ุงู„ู„ูŠ ุจุชุญุฏุฏ ุฃู†ุช ุนุงูˆุฒ ุฅูŠู‡ ุจุงู„ุถุจุทุŒ ูŠุนู†ูŠ ู„ูˆ ู…ุญุชุงุฌ ุงู„ุงุณู… ุจุณุŒ ู‡ุชุงุฎุฏ ุงู„ุงุณู… ุจุณ ูˆู‡ูƒุฐุง.

โ€”โ€”โ€”

๐Ÿ“Œ ุฅูŠู‡ ุงู„ูุฑู‚ ุจูŠู† GraphQL ูˆRESTุŸ

โœ… ุงู„ู€ REST ุจูŠุนุชู…ุฏ ุนู„ู‰ ููƒุฑุฉ ุงู„ู€ endpointsุŒ ูŠุนู†ูŠ ูƒู„ endpoint ู…ุณุคูˆู„ ุนู† ุฅุฑุฌุงุน ู†ูˆุน ู…ุนูŠู† ู…ู† ุงู„ุจูŠุงู†ุงุช. ู„ูƒู† ููŠ GraphQLุŒ ุนู†ุฏูƒ query ูˆุงุญุฏุฉ ุชู‚ุฏุฑ ุชุทู„ุจ ุจูŠู‡ุง ุฃูŠ ุจูŠุงู†ุงุช ุฃู†ุช ู…ุญุชุงุฌู‡ุงุŒ ุจุบุถ ุงู„ู†ุธุฑ ุนู† ุนุฏุฏ ุงู„ู€ endpoints.

โœ… ููŠ REST ู…ู…ูƒู† ุชุจู‚ู‰ ู…ุญุชุงุฌ ุชุนู…ู„ ุฃูƒุชุฑ ู…ู† request ุนุดุงู† ุชุฌูŠุจ ุงู„ุจูŠุงู†ุงุช ู…ู† ุฃูƒุชุฑ ู…ู† ู…ูƒุงู†ุŒ ู„ูƒู† ููŠ GraphQLุŒ ุชู‚ุฏุฑ ุชุทู„ุจ ูƒู„ ุงู„ุจูŠุงู†ุงุช ุงู„ู…ุทู„ูˆุจุฉ ููŠ request ูˆุงุญุฏุฉ.

โœ… ูƒู…ุงู† GraphQL ุจุชู‚ู„ู„ ูƒู…ูŠุฉ ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ุจุชุฑุฌุน ููŠ ุงู„ู€ responseุŒ ูˆุฏู‡ ู„ุฃู†ู‡ ุฃู†ุช ุงู„ู„ูŠ ุจุชุญุฏุฏ ุฅูŠู‡ ุงู„ู„ูŠ ู…ุญุชุงุฌู‡ ุจุงู„ุถุจุท. ุนู„ู‰ ุนูƒุณ REST ุงู„ู„ูŠ ู…ู…ูƒู† ูŠุจุนุช ุจูŠุงู†ุงุช ุฃูƒุชุฑ ู…ู† ุงู„ู„ูŠ ุฃู†ุช ุนุงูˆุฒู‡ุง.

โ€”โ€”โ€”

๐Ÿ“Œ ู„ูŠู‡ ู…ู…ูƒู† ุชููƒุฑ ุชุณุชุฎุฏู… GraphQLุŸ

โšก๏ธ ู„ูˆ ุงู„ู…ุดุฑูˆุน ู…ุนู‚ุฏ ูˆููŠู‡ ุนู„ุงู‚ุงุช ูƒุชูŠุฑ ุจูŠู† ุงู„ุจูŠุงู†ุงุชุŒ GraphQL ู‡ุชุณุงุนุฏูƒ ุชู†ุธู… ุงู„ุจูŠุงู†ุงุช ูˆุชุทู„ุจู‡ุง ุจุทุฑูŠู‚ุฉ ุฃุณู‡ู„.

โšก๏ธ ู‡ุชู‚ู„ู„ ุนุฏุฏ ุงู„ู€ requests ุงู„ู„ูŠ ุจุชุชุจุนุช ู„ู„ุณูŠุฑูุฑ.

โšก๏ธ ู‡ุชุชุญูƒู… ุฃูƒุชุฑ ููŠ ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ุจุชุฑุฌุนุŒ ูˆุฏู‡ ู‡ูŠุญุณู† ุฃุฏุงุก ุงู„ุชุทุจูŠู‚ ุฎุตูˆุตู‹ุง ู„ูˆ ุดุบุงู„ ุนู„ู‰ ู…ูˆุจุงูŠู„ ุฃูˆ ุงู†ุชุฑู†ุช ุจุทูŠุก.

โ€”โ€”โ€”

ุงู„ู€ GraphQL ู…ุด ุจุฏูŠู„ ูƒุงู…ู„ ุนู† RESTุŒ ู„ูƒู† ู‡ูŠ ุทุฑูŠู‚ุฉ ู…ุฎุชู„ูุฉ ููŠ ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ู€ APIs ูˆุจุชุฏูŠูƒ ู…ุฑูˆู†ุฉ ุฃูƒุชุฑ ููŠ ุทู„ุจ ุงู„ุจูŠุงู†ุงุช. ู„ูˆ ุจุชุทูˆุฑ ุชุทุจูŠู‚ ู…ุนู‚ุฏ ุฃูˆ ู…ุญุชุงุฌ ุชุญูƒู… ุฃูƒุชุฑ ููŠ ุงู„ู€ requests ุงู„ู„ูŠ ุจุชุจุนุชู‡ุง ูˆุชุณุชู‚ุจู„ู‡ุงุŒ ูŠุจู‚ู‰ GraphQL ู…ู…ูƒู† ุชูƒูˆู† ุงุฎุชูŠุงุฑ ู…ู†ุงุณุจ ู„ูŠูƒ.

โ€”โ€”โ€”

ุทูŠุจ ู‡ูŠ ู…ู„ู‡ุงุด ุนูŠูˆุจุŸ

ุงู„ู€ GraphQL ุฒูŠู‡ุง ุฒูŠ ุฃูŠ ุชูƒู†ูˆู„ูˆุฌูŠ ู„ูŠู‡ุง ู…ู…ูŠุฒุงุช ูˆู„ูŠู‡ุง ุนูŠูˆุจุŒ ู„ูƒู† ุฎู„ูŠู†ุง ู†ุฐูƒุฑ ุงู„ุนูŠูˆุจ ููŠ ุฌุฒุก ุชุงู†ูŠ ู…ู†ูุตู„. ๐Ÿ’ฏ
โค14
ุจุงู„ุฑุบู… ู…ู† ุฅู† GraphQL ู„ูŠู‡ุง ู…ู…ูŠุฒุงุช ูƒุชูŠุฑ ุฒูŠ ุงู„ู…ุฑูˆู†ุฉ ููŠ ุทู„ุจ ุงู„ุจูŠุงู†ุงุช ูˆุชู‚ู„ูŠู„ ุงู„ู€ requestsุŒ ุฅู„ุง ุฃู†ู‡ุง ุฒูŠ ุฃูŠ ุชูƒู†ูˆู„ูˆุฌูŠุŒ ู„ูŠู‡ุง ุดูˆูŠุฉ ุนูŠูˆุจ ู„ุงุฒู… ุชุงุฎุฏ ุจุงู„ูƒ ู…ู†ู‡ุง. ๐Ÿ”ป

- ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค

โ€”โ€”โ€”

ุชุนุงู„ ุฃู‚ูˆู„ูƒ ุนู„ู‰ ุฃู‡ู… ุงู„ุนูŠูˆุจ ุงู„ู„ูŠ ู…ู…ูƒู† ุชูˆุงุฌู‡ูƒ:

1. ุชุนู‚ูŠุฏ ููŠ ุงู„ู€ Server-Side

ููŠ GraphQLุŒ ุงู„ุณูŠุฑูุฑ ู…ุญุชุงุฌ ูŠูƒูˆู† ุฐูƒูŠ ุดูˆูŠุฉ ุนุดุงู† ูŠุชุนุงู…ู„ ู…ุน ูƒู„ ุงู„ู€ queries ุงู„ู…ุฎุชู„ูุฉ ุงู„ู„ูŠ ู…ู…ูƒู† ูŠุทู„ุจู‡ุง ุงู„ุนู…ูŠู„ (client). ุจู…ุนู†ู‰ ุฅู† ูƒู„ query ู…ู…ูƒู† ุชุทู„ุจ ุจูŠุงู†ุงุช ู…ุฎุชู„ูุฉ ุชู…ุงู…ู‹ุงุŒ ูู…ู…ูƒู† ูŠุจู‚ู‰ ููŠ ุถุบุท ุนู„ู‰ ุงู„ู…ุจุฑู…ุฌูŠู† ุงู„ู„ูŠ ุดุบุงู„ูŠู† ุนู„ู‰ ุงู„ู€ backend ุนุดุงู† ูŠุจู†ูˆุง ุงู„ู€ resolvers ุงู„ู„ูŠ ุจุชุชุนุงู…ู„ ู…ุน ุงู„ุทู„ุจุงุช ุฏูŠ.

ุฏู‡ ุจูŠุญุชุงุฌ ูˆู‚ุช ูˆุฌู‡ุฏ ุฃูƒุชุฑ ู…ู‚ุงุฑู†ุฉ ุจู€ REST ุงู„ู„ูŠ ุจูŠุจู‚ู‰ ูƒู„ endpoint ุซุงุจุช ูˆู…ุนุฑูˆู ุจูŠุนู…ู„ ุฅูŠู‡.

โ€”โ€”โ€”

2. ุงู„ุฃุฏุงุก (Performance)

ุจุงู„ุฑุบู… ู…ู† ุฅู† GraphQL ุจุชู‚ู„ู„ ุนุฏุฏ ุงู„ู€ requests ุงู„ู„ูŠ ุจุชุชุจุนุชุŒ ุฅู„ุง ุฅู†ู‡ุง ู…ู…ูƒู† ุชุณุชู‡ู„ูƒ ู…ูˆุงุฑุฏ ุฃูƒุชุฑ ุนู„ู‰ ุงู„ุณูŠุฑูุฑ. ุงู„ุณุจุจ ููŠ ุฏู‡ ุฅู† ุงู„ุนู…ูŠู„ ู…ู…ูƒู† ูŠุทู„ุจ ุจูŠุงู†ุงุช ูƒุชูŠุฑ ููŠ request ูˆุงุญุฏุŒ ูˆุงู„ู€ server ู„ุงุฒู… ูŠุนุงู„ุฌ ูƒู„ ุงู„ู€queries ุฏูŠ ู…ุฑุฉ ูˆุงุญุฏุฉ.

ู„ูˆ ูƒุงู† ููŠ ุทู„ุจุงุช ู…ุนู‚ุฏุฉ ุจุชุทู„ุจ ุจูŠุงู†ุงุช ูƒุชูŠุฑ ู…ู† ุฃู…ุงูƒู† ู…ุฎุชู„ูุฉุŒ ู…ู…ูƒู† ุงู„ุฃุฏุงุก ูŠุชุฃุซุฑ ุจุงู„ุณู„ุจ.

โ€”โ€”โ€”

3. ุงู„ู€ Over-fetching ูˆุงู„ู€ Under-fetching

ููŠ RESTุŒ ูƒุงู† ุงู„ุนูŠุจ ุงู„ุฃุณุงุณูŠ ุฅู†ูƒ ู…ู…ูƒู† ุชุงุฎุฏ ุจูŠุงู†ุงุช ุฃูƒุชุฑ ู…ู† ุงู„ู„ูŠ ุฃู†ุช ู…ุญุชุงุฌู‡ (Over-fetching)ุŒ ู„ูƒู† ููŠ GraphQLุŒ ุงู„ุนูƒุณ ู…ู…ูƒู† ูŠุญุตู„. ูŠุนู†ูŠ ู…ู…ูƒู† ุชุทู„ุจ ุจูŠุงู†ุงุช ู‚ู„ูŠู„ุฉ ุฌุฏู‹ุง (Under-fetching)ุŒ ูˆุจุนุฏูŠู† ุชูƒุชุดู ุฅู†ูƒ ู…ุญุชุงุฌ ุชุฑุฌุน ุชุนู…ู„ query ุชุงู†ูŠ ุนุดุงู† ุชุฌูŠุจ ุจูŠุงู†ุงุช ู†ุงู‚ุตุฉ.

โ€”โ€”โ€”

4. ุงู„ุญู…ุงูŠุฉ (Security)

ุจู…ุง ุฅู† ุงู„ุนู…ูŠู„ ููŠ GraphQL ุนู†ุฏู‡ ุญุฑูŠุฉ ูŠุทู„ุจ ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ู‡ูˆ ุนุงูˆุฒู‡ุงุŒ ู…ู…ูƒู† ูŠุจู‚ู‰ ููŠ ู…ุดุงูƒู„ ุฃู…ู†ูŠุฉ ู„ูˆ ุงู„ู€ schema ู…ุด ู…ูƒุชูˆุจุฉ ุจุดูƒู„ ุตุญูŠุญ. ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ุŒ ุงู„ุนู…ูŠู„ ู…ู…ูƒู† ูŠุทู„ุจ ุจูŠุงู†ุงุช ุจุดูƒู„ ู…ุชูƒุฑุฑ ุจุทุฑูŠู‚ุฉ ุชุณุจุจ ุถุบุท ุนู„ู‰ ุงู„ุณูŠุฑูุฑ ุฃูˆ ูŠุทู„ุจ ุจูŠุงู†ุงุช ุญุณุงุณุฉ ู„ูˆ ุงู„ุญู…ุงูŠุฉ ู…ุด ู…ุธุจูˆุทุฉ.

โ€”โ€”โ€”

5. ู…ุณุงุฑ ุงู„ุชุนู„ู… (Learning Path)

ุงู„ู€ GraphQL ุฌุฏูŠุฏุฉ ู†ุณุจูŠู‹ุง ู…ู‚ุงุฑู†ุฉ ุจู€ RESTุŒ ูู„ูˆ ุฃู†ุช ุฃูˆ ุงู„ุชูŠู… ุจุชุงุนูƒ ู…ุชุนูˆุฏูŠู† ุนู„ู‰ RESTุŒ ุงู„ุชุญูˆู„ ู„ู€ GraphQL ู…ู…ูƒู† ูŠุงุฎุฏ ุดูˆูŠุฉ ูˆู‚ุช ุนุดุงู† ุชูู‡ู…ูˆุง ุฅุฒุงูŠ ุชุดุชุบู„ูˆุง ุจูŠู‡ุง ุจุดูƒู„ ูุนู‘ุงู„.

ูƒู…ุงู† ุงู„ู€ tooling ุจุชุงุน GraphQL ู„ุณู‡ ู…ุด ุจู†ูุณ ุฏุฑุฌุฉ ุงู„ู†ุถุฌ ุงู„ู„ูŠ ู…ูˆุฌูˆุฏุฉ ู…ุน REST.

โ€”โ€”โ€”

6. ุนุฏู… ุงู„ุชูˆุงูู‚ ู…ุน ุงู„ู€Caching ุงู„ุชู‚ู„ูŠุฏูŠ

ููŠ RESTุŒ ุชู‚ุฏุฑ ุจุณู‡ูˆู„ุฉ ุชุณุชุฎุฏู… ุงู„ู€ HTTP Caching ู„ุฃู† ุงู„ู€ endpoints ุซุงุจุชุฉุŒ ู„ูƒู† ููŠ GraphQLุŒ ุงู„ู€ queries ู…ู…ูƒู† ุชุจู‚ู‰ ู…ุฎุตุตุฉ ุฌุฏู‹ุงุŒ ูˆุฏู‡ ุจูŠุตุนุจ ุนู…ู„ูŠุฉ ุงู„ู€ caching.

ุนุดุงู† ูƒุฏู‡ุŒ ู‡ุชุญุชุงุฌ ุชุณุชุฎุฏู… ุญู„ูˆู„ ู…ุฎุชู„ูุฉ ุฒูŠ Apollo Client ุงู„ู„ูŠ ุจูŠูˆูุฑ caching ู…ู†ุงุณุจ ู„ู€ GraphQLุŒ ุจุณ ุฏู‡ ุจูŠุฒูˆุฏ ุงู„ุชุนู‚ูŠุฏ.

โ€”โ€”โ€”

ููŠ ุงู„ู†ู‡ุงูŠุฉุŒ GraphQL ู‚ูˆูŠุฉ ูˆู…ุฑู†ุฉ ุฌุฏู‹ุงุŒ ู„ูƒู† ุฒูŠ ุฃูŠ ุฃุฏุงุฉุŒ ู„ูŠู‡ุง ู…ู…ูŠุฒุงุชู‡ุง ูˆุนูŠูˆุจู‡ุง. ู…ุญุชุงุฌ ุชู‚ุฑุฑ ู„ูˆ ุงู„ุนูŠูˆุจ ุฏูŠ ู‡ุชุฃุซุฑ ุนู„ู‰ ู…ุดุฑูˆุนูƒ ูˆู„ุง ู„ุฃุŒ ุจู†ุงุกู‹ ุนู„ู‰ ู…ุชุทู„ุจุงุช ุงู„ุชุทุจูŠู‚ ูˆุงู„ู€ team ุงู„ู„ูŠ ุดุบุงู„ ู…ุนุงูƒ.

โ€”โ€”โ€”

ุจุงู„ุชูˆููŠู‚ ูŠุง ุจุทู„ ๐Ÿ’ช๐Ÿป
โค3๐Ÿ‘3๐Ÿ”ฅ2๐Ÿ‘2
ูˆุฃู†ุช ุดุบุงู„ ููŠ ู…ุฌุงู„ ุงู„ุณูˆูุชูˆูŠุฑุŒ ุฃูƒูŠุฏ ุณู…ุนุช ุนู† Docker ๐Ÿ”ป

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค



ุชุนุงู„ ู†ุฏุฑุฏุด ุดูˆูŠุฉ ุนู† Docker ุจุทุฑูŠู‚ุฉ ุจุณูŠุทุฉ ูˆู†ูู‡ู… ู‡ูˆ ู„ูŠู‡ ุดูŠุก ุฃุณุงุณูŠ ููŠ ุชุทูˆูŠุฑ ุงู„ุชุทุจูŠู‚ุงุช. ๐Ÿ’ฏ

https://www.linkedin.com/posts/dev-alisamir_docker-softwaredeveloper-softwaredevelopment-activity-7239690984626806784-sU8K
๐Ÿ‘1๐Ÿ‘1
ุฎู„ูŠู†ุง ู†ุฏุฑุฏุด ููŠ ู…ูˆุถูˆุน ู…ู‡ู… ุฌุฏู‹ุง ู„ุฃูŠ ุญุฏ ุจูŠุดุชุบู„ ููŠ ุชุทูˆูŠุฑ ู…ูˆุงู‚ุน ุงู„ูˆูŠุจ ุฃูˆ ุชุทุจูŠู‚ุงุช ุงู„ู…ูˆุจุงูŠู„ุŒ ูˆู‡ูˆ ุงู„ู€ Pixel Perfect Design. ๐Ÿ’ฏ

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


โ€”โ€”โ€”

https://www.linkedin.com/posts/dev-guide_frontenddeveloper-frontenddevelopment-frontend-activity-7239897420229169152--GYJ
ุงู„ู€ OOP ๐Ÿ”ป

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ุงู„ุจุฑู…ุฌุฉ ุงู„ูƒุงุฆู†ูŠุฉ (Object-Oriented Programming ุฃูˆ OOP) ู‡ูŠ ูˆุงุญุฏุฉ ู…ู† ุฃู‡ู… ุงู„ุฃุณุงู„ูŠุจ ููŠ ุงู„ุจุฑู…ุฌุฉ ูˆุจุชุนุชู…ุฏ ุนู„ู‰ ููƒุฑุฉ ุชู‚ุณูŠู… ุงู„ูƒูˆุฏ ุฅู„ู‰ "ูƒุงุฆู†ุงุช" (Objects).

ุงู„ูƒุงุฆู†ุงุช ุฏูŠ ุจุชูƒูˆู† ุฒูŠ ุงู„ูˆุญุฏุงุช ุงู„ุฃุณุงุณูŠุฉ ุงู„ู„ูŠ ุจุชุฌู…ุน ุงู„ุฎุตุงุฆุต (Attributes) ูˆุงู„ุณู„ูˆูƒูŠุงุช (Methods) ุงู„ู…ุชุนู„ู‚ุฉ ุจุญุงุฌุฉ ู…ุนูŠู†ุฉ ููŠ ู…ูƒุงู† ูˆุงุญุฏ.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ุฃุณุงุณูŠุงุช ููŠ ุงู„ุจุฑู…ุฌุฉ ุงู„ูƒุงุฆู†ูŠุฉ ุชุดู…ู„:

โšก๏ธ ุงู„ู€ Encapsulation

ุฏู‡ ูŠุนู†ูŠ ุฅู† ูƒู„ ูƒุงุฆู† ูŠุญุชูุธ ุจุงู„ุจูŠุงู†ุงุช ุงู„ุฎุงุตุฉ ุจูŠู‡ ูˆูŠุฎููŠู‡ุง ุนู† ุจู‚ูŠุฉ ุงู„ูƒูˆุฏุŒ ุจุญูŠุซ ุงู„ุจูŠุงู†ุงุช ุชุจู‚ู‰ ู…ุญู…ูŠุฉ ูˆู…ุด ุฃูŠ ุฌุฒุก ุชุงู†ูŠ ููŠ ุงู„ุจุฑู†ุงู…ุฌ ูŠู‚ุฏุฑ ูŠุบูŠุฑู‡ุง ู…ุจุงุดุฑุฉ. ุงู„ูƒุงุฆู† ูŠูˆูุฑ ุทุฑู‚ ู…ุญุฏุฏุฉ ู„ู„ูˆุตูˆู„ ู„ู„ุจูŠุงู†ุงุช ุฏูŠ ุฃูˆ ุชุนุฏูŠู„ู‡ุง.


โšก๏ธ ุงู„ู€ Inheritance

ุงู„ู…ูŠุฒุฉ ุฏูŠ ุจุชุณู…ุญ ู„ูƒ ุจุฅู†ูƒ ุชุจู†ูŠ ูƒุงุฆู†ุงุช ุฌุฏูŠุฏุฉ ุชุนุชู…ุฏ ุนู„ู‰ ูƒุงุฆู†ุงุช ู…ูˆุฌูˆุฏุฉ ู…ุณุจู‚ู‹ุง. ูŠุนู†ูŠ ุชู‚ุฏุฑ ุชุงุฎุฏ ุงู„ุฎุตุงุฆุต ูˆุงู„ุณู„ูˆูƒูŠุงุช ู…ู† ูƒุงุฆู† ุฃุณุงุณูŠ ูˆุชุถูŠู ู„ูŠู‡ ุฃูˆ ุชุนุฏู„ ุนู„ูŠู‡ุŒ ูˆุฏู‡ ุจูŠูˆูุฑ ูˆู‚ุช ูˆุฌู‡ุฏ ููŠ ูƒุชุงุจุฉ ุงู„ูƒูˆุฏ.


โšก๏ธ ุงู„ู€ Polymorphism

ุฏู‡ ูŠุนู†ูŠ ุฅู†ูƒ ุชู‚ุฏุฑ ุชุณุชุฎุฏู… ู†ูุณ ุงู„ุงุณู… ู„ุฏูˆุงู„ (Methods) ู…ุฎุชู„ูุฉ ููŠ ูƒุงุฆู†ุงุช ู…ุฎุชู„ูุฉุŒ ู„ูƒู† ูƒู„ ูƒุงุฆู† ูŠู†ูุฐู‡ุง ุจุดูƒู„ ูŠู†ุงุณุจู‡.

ู…ุซู„ู‹ุงุŒ ู…ู…ูƒู† ูŠูƒูˆู† ุนู†ุฏูƒ ุฏุงู„ุฉ ุงุณู…ู‡ุง draw ููŠ ูƒุงุฆู†ุงุช ู…ุฎุชู„ูุฉ ุฒูŠ Circle ูˆ RectangleุŒ ูˆูƒู„ ูˆุงุญุฏุฉ ู…ู†ู‡ู… ุจุชู†ููŠุฐ ุฏุงู„ุฉ draw ุจุทุฑูŠู‚ุฉ ู…ุฎุชู„ูุฉ.


โšก๏ธ ุงู„ู€ Abstraction

ุงู„ุชุฌุฑูŠุฏ ุจูŠุณู…ุญ ู„ูƒ ุชุจู†ูŠ ูƒุงุฆู†ุงุช ุชุฑูƒุฒ ุนู„ู‰ ุงู„ุฎุตุงุฆุต ุงู„ู…ู‡ู…ุฉ ูู‚ุท ูˆุชุฎููŠ ุงู„ุชูุงุตูŠู„ ุงู„ู…ุนู‚ุฏุฉ. ูŠุนู†ูŠ ุงู„ูƒุงุฆู†ุงุช ุจุชุชุนุงู…ู„ ู…ุน ุงู„ุจูŠุงู†ุงุช ุจุดูƒู„ ู…ุจุณุทุŒ ูˆุจุชู‚ุฏู… ูˆุงุฌู‡ุงุช ูˆุงุถุญุฉ ูˆู…ุญุฏุฏุฉ ู„ู„ุชูุงุนู„ ู…ุน ุงู„ู…ุณุชุฎุฏู….

โ€”โ€”โ€”

ุงู„ู€ OOP ู…ุด ุจุณ ุจุชุฎู„ูŠ ุงู„ูƒูˆุฏ ุจุชุงุนูƒ ู…ู†ุธู… ูˆุณู‡ู„ ุงู„ู‚ุฑุงุกุฉุŒ ู„ูƒู† ูƒู…ุงู† ุจุชุณุงุนุฏูƒ ููŠ ุฅุฏุงุฑุฉ ุงู„ู…ุดุงุฑูŠุน ุงู„ูƒุจูŠุฑุฉ ุจุดูƒู„ ุฃุณู‡ู„ุŒ ูˆุจุชุณู‡ู„ ุนู„ูŠูƒ ุชุนุฏูŠู„ ูˆุชูˆุณูŠุน ุงู„ูƒูˆุฏ ุจุฏูˆู† ู…ุง ุชุฃุซุฑ ุนู„ู‰ ุจุงู‚ูŠ ุฃุฌุฒุงุก ุงู„ุจุฑู†ุงู…ุฌ. ๐Ÿ’ฏ

โ€”โ€”โ€”

ุจุงู„ุชูˆููŠู‚ ูŠุง ุจุทู„ ๐Ÿ’ช๐Ÿป
๐Ÿ‘5โค3
ุงู„ู€ DOM (Document Object Model) ๐Ÿ”ป

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ู‡ูŠ ุงู„ุจู†ูŠุฉ ุงู„ู„ูŠ ุงู„ู…ุชุตูุญ ุจูŠุณุชุฎุฏู…ู‡ุง ุนุดุงู† ูŠุญูˆู‘ู„ ุตูุญุฉ ุงู„ูˆูŠุจ ู…ู† ูƒูˆุฏ HTML ู„ูƒุงุฆู†ุงุช (Objects) ูŠู‚ุฏุฑ ูŠุชุนุงู…ู„ ู…ุนุงู‡ุง.

ูŠุนู†ูŠ ุจุจุณุงุทุฉุŒ ุงู„ุตูุญุฉ ุจุชุงุนุชูƒ ุงู„ู„ูŠ ุจุชุชูƒูˆู† ู…ู† ุนู†ุงุตุฑ ุฒูŠ ุงู„ุนู†ุงูˆูŠู†ุŒ ุงู„ูู‚ุฑุงุชุŒ ุงู„ุตูˆุฑุŒ ูˆุบูŠุฑู‡ุง ุจุชุชุญูˆู„ ู„ุดุฌุฑุฉ ู…ู† ุงู„ูƒุงุฆู†ุงุชุŒ ูˆูƒู„ ุนู†ุตุฑ ุจูŠุชุญูˆู„ ู„ูƒุงุฆู† ููŠู‡ ุฎุตุงุฆุต ุฒูŠ ุงู„ู†ุตุŒ ุงู„ุฃู„ูˆุงู†ุŒ ุงู„ุฃุญุฌุงู…ุŒ ูˆุบูŠุฑู‡ุง.

โ€”โ€”โ€”

ุงู„ุฌู…ูŠู„ ููŠ ุงู„ู€ DOM ุฅู†ู‡ ุจูŠุณู…ุญ ู„ู†ุง ู†ุบูŠุฑ ุงู„ุตูุญุฉ ุจุนุฏ ู…ุง ุชุชุญู…ู„ุŒ ูˆุฏู‡ ุงู„ู„ูŠ ุจู†ุณู…ูŠู‡ "DOM Manipulation" ุจุงุณุชุฎุฏุงู… JavaScript. โœ…

ููƒุฑุฉ ุงู„ู€ DOM Manipulation ุจุจุณุงุทุฉ ู‡ูŠ ุฅู†ูƒ ุจุชู‚ุฏุฑ ุชุนุฏู„ ุนู„ู‰ ุนู†ุงุตุฑ ุงู„ุตูุญุฉ ูˆุชุบูŠุฑู‡ุง ุจู†ุงุกู‹ ุนู„ู‰ ุชูุงุนู„ ุงู„ู…ุณุชุฎุฏู…ุŒ ุฒูŠ ุฅู†ูƒ ุชุถูŠู ุฒุฑุงุฑ ุฌุฏูŠุฏุŒ ุชุดูŠู„ ุตูˆุฑุฉุŒ ุฃูˆ ุญุชู‰ ุชุบูŠุฑ ุงู„ู†ุต ุงู„ู„ูŠ ู…ูƒุชูˆุจ ููŠ ุงู„ูู‚ุฑุงุช. ๐Ÿ’ฏ

โ€”โ€”โ€”

๐Ÿ“Œ ุฅุฒุงูŠ ุชุฌูŠุจ ุนู†ุงุตุฑ ู…ู† ุงู„ู€ DOMุŸ

ุนุดุงู† ุชู‚ุฏุฑ ุชุนู…ู„ DOM ManipulationุŒ ู„ุงุฒู… ุงู„ุฃูˆู„ ุชุนุฑู ุฅุฒุงูŠ ุชุฌูŠุจ ุงู„ุนู†ุงุตุฑ ุงู„ู„ูŠ ุนุงูŠุฒ ุชุนุฏู„ู‡ุง. ููŠู‡ ุทุฑู‚ ูƒุชูŠุฑ ุนุดุงู† ุชุฌูŠุจ ุงู„ุนู†ุงุตุฑ:

โšก๏ธ ุงู„ู€ document.getElementById: ุฏูŠ ุจุชุฌูŠุจ ุงู„ุนู†ุตุฑ ุงู„ู„ูŠ ู„ูŠู‡ ID ู…ุนูŠู†. ู…ุซู„ู‹ุง:

const element = document.getElementById("myElement");


โšก๏ธ ุงู„ู€ document.querySelector: ุฏูŠ ุทุฑูŠู‚ุฉ ุฃู‚ูˆู‰ ุดูˆูŠุฉ ู„ุฃู†ู‡ุง ุจุชุณุชุฎุฏู… CSS SelectorsุŒ ูŠุนู†ูŠ ุชู‚ุฏุฑ ุชุฌูŠุจ ุฃูŠ ุนู†ุตุฑ ุจู†ุงุกู‹ ุนู„ู‰ ุงู„ุงุณู…ุŒ ุงู„ู€ classุŒ ุฃูˆ ุญุชู‰ ุงู„ู€ ID:

const element = document.querySelector(".myClass");


โšก๏ธ ุงู„ู€ document.getElementsByClassName ูˆุงู„ู€ document.getElementsByTagName: ุฏูˆู„ ุจูŠุฑุฌุนูˆุง ู„ูƒ ู…ุตููˆูุฉ (Array-like) ู…ู† ุงู„ุนู†ุงุตุฑ ุงู„ู„ูŠ ู„ูŠู‡ุง ู†ูุณ ุงู„ู€ class ุฃูˆ ุงู„ู€ tag.

โ€”โ€”โ€”

๐Ÿ“Œ ุฅูŠู‡ ุงู„ู„ูŠ ู…ู…ูƒู† ุชุนู…ู„ู‡ ุจู€ DOM ManipulationุŸ

โšก๏ธ ุฅุถุงูุฉ ุนู†ุงุตุฑ ุฌุฏูŠุฏุฉ: ู„ูˆ ุนุงูŠุฒ ุชุถูŠู ุนู†ุตุฑ ุฌุฏูŠุฏ ููŠ ุงู„ุตูุญุฉุŒ ุฒูŠ ุฒุฑุงุฑ ุฃูˆ ุตูˆุฑุฉุŒ ุชู‚ุฏุฑ ุชุณุชุฎุฏู… JavaScript ุนุดุงู† ุชุนู…ู„ Create ElementุŒ ูˆุจุนุฏ ูƒุฏู‡ ุชุถูŠูู‡ ู„ู„ุดุฌุฑุฉ ุจุงุณุชุฎุฏุงู… appendChild. ู…ุซุงู„ ุจุณูŠุท:

const newButton = document.createElement("button");
newButton.innerHTML = "ุงุถุบุท ู‡ู†ุง";
document.body.appendChild(newButton);


ุงู„ูƒูˆุฏ ุฏู‡ ุจูŠุนู…ู„ ุฒุฑุงุฑ ุฌุฏูŠุฏ ู…ูƒุชูˆุจ ุนู„ูŠู‡ "ุงุถุบุท ู‡ู†ุง" ูˆุจูŠุถูŠูู‡ ููŠ ุขุฎุฑ ุงู„ู€ body.

โ€”โ€”โ€”

โšก๏ธ ุชุนุฏูŠู„ ู…ุญุชูˆู‰ ุงู„ุนู†ุงุตุฑ: ุชู‚ุฏุฑ ุจุณู‡ูˆู„ุฉ ุชุบูŠุฑ ุงู„ู†ุต ุฃูˆ ุงู„ู€ HTML ุงู„ู„ูŠ ู…ูˆุฌูˆุฏ ุฌูˆุง ุฃูŠ ุนู†ุตุฑ ุจุงุณุชุฎุฏุงู… innerHTML ุฃูˆ textContent. ูŠุนู†ูŠ ู…ุซู„ู‹ุง ู„ูˆ ุนู†ุฏูƒ ูู‚ุฑุฉ ููŠู‡ุง ู†ุต ูˆุนุงูˆุฒ ุชุบูŠุฑ ุงู„ู†ุต ุฏู‡ ู„ู…ุง ุงู„ู…ุณุชุฎุฏู… ูŠุฏูˆุณ ุนู„ู‰ ุฒุฑุงุฑ:

document.getElementById("myButton").addEventListener("click", function() {
document.getElementById("myParagraph").innerHTML = "ุงู„ู†ุต ุงุชุบูŠุฑ!";
});


ู‡ู†ุงุŒ ู„ู…ุง ุงู„ู…ุณุชุฎุฏู… ูŠุฏูˆุณ ุนู„ู‰ ุงู„ุฒุฑุงุฑ ุงู„ู„ูŠ ID ุจุชุงุนู‡ "myButton"ุŒ ุงู„ู†ุต ุงู„ู„ูŠ ููŠ ุงู„ูู‚ุฑุฉ ุงู„ู„ูŠ ID ุจุชุงุนู‡ุง "myParagraph" ู‡ูŠุจู‚ู‰ "ุงู„ู†ุต ุงุชุบูŠุฑ!".

โ€”โ€”โ€”

โšก๏ธ ุชุนุฏูŠู„ ุชู†ุณูŠู‚ ุงู„ุนู†ุงุตุฑ (CSS): ุนู† ุทุฑูŠู‚ ุงู„ู€ DOMุŒ ุชู‚ุฏุฑ ุชุนุฏู„ ููŠ ุงู„ุชู†ุณูŠู‚ (CSS) ุจุชุงุน ุฃูŠ ุนู†ุตุฑ ุจุณู‡ูˆู„ุฉ ุจุงุณุชุฎุฏุงู… element.style. ูŠุนู†ูŠ ู„ูˆ ุนุงูˆุฒ ุชุบูŠุฑ ู„ูˆู† ุงู„ุฎู„ููŠุฉ ู„ุฒุฑุงุฑ ู…ุนูŠู† ู„ู…ุง ุงู„ู…ุณุชุฎุฏู… ูŠุฏูˆุณ ุนู„ูŠู‡:

document.getElementById("myButton").addEventListener("click", function() {
document.getElementById("myButton").style.backgroundColor = "red";
});


ู‡ู†ุง ุงู„ุฒุฑุงุฑ ู‡ูŠุบูŠุฑ ู„ูˆู†ู‡ ู„ู„ุฃุญู…ุฑ ุจุนุฏ ู…ุง ุงู„ู…ุณุชุฎุฏู… ูŠุฏูˆุณ ุนู„ูŠู‡.

โ€”โ€”โ€”

โšก๏ธ ุญุฐู ุนู†ุงุตุฑ ู…ู† ุงู„ุตูุญุฉ: ู…ุด ุจุณ ุจุชู‚ุฏุฑ ุชุถูŠู ุฃูˆ ุชุนุฏู„ุŒ ูƒู…ุงู† ุชู‚ุฏุฑ ุชุญุฐู ุนู†ุงุตุฑ ู…ู† ุงู„ุตูุญุฉ ุชู…ุงู…ู‹ุง ุจุงุณุชุฎุฏุงู… remove():

document.getElementById("myButton").remove();


ุงู„ูƒูˆุฏ ุฏู‡ ู‡ูŠุญุฐู ุงู„ุฒุฑุงุฑ ุงู„ู„ูŠ ID ุจุชุงุนู‡ "myButton" ู…ู† ุงู„ุตูุญุฉ.

โ€”โ€”โ€”

๐Ÿ“Œ ุฅูŠู‡ ุฃู‡ู…ูŠุฉ DOM ManipulationุŸ

ุงู„ู€ DOM Manipulation ุจูŠู„ุนุจ ุฏูˆุฑ ูƒุจูŠุฑ ุฌุฏู‹ุง ููŠ ู…ุฌุงู„ ุงู„ูˆูŠุจุŒ ูˆุฏู‡ ู„ุฃู†ู‡ ุจูŠุฎู„ูŠูƒ ุชู‚ุฏุฑ ุชุจู†ูŠ ุตูุญุงุช ูˆูŠุจ ุฏูŠู†ุงู…ูŠูƒูŠุฉ ุชุณุชุฌูŠุจ ู„ุชูุงุนู„ ุงู„ู…ุณุชุฎุฏู… ููŠ ุงู„ู„ุญุธุฉ.

ุนู„ู‰ ุณุจูŠู„ ุงู„ู…ุซุงู„ุŒ ููŠ ุชุทุจูŠู‚ุงุช ุฒูŠ ุงู„ู€ Single Page Applications (SPA) ุฒูŠ ุงู„ู„ูŠ ู…ุนู…ูˆู„ูŠู† ุจู€ React ุฃูˆ VueุŒ ุงู„ู€ DOM ุจูŠุชู… ุชุญุฏูŠุซู‡ ุจุงุณุชู…ุฑุงุฑ ุนุดุงู† ูŠุนุฑุถ ู„ู„ู…ุณุชุฎุฏู… ุงู„ู…ุญุชูˆู‰ ุงู„ู„ูŠ ู‡ูˆ ู…ุญุชุงุฌู‡ ุจุฏูˆู† ู…ุง ู†ุนู…ู„ Reload ู„ู„ุตูุญุฉ ูƒู„ู‡ุง.

ูƒู…ุงู†ุŒ ู„ูˆ ุจุชุดุชุบู„ ุนู„ู‰ ุชุญุณูŠู† ุชุฌุฑุจุฉ ุงู„ู…ุณุชุฎุฏู… (UX)ุŒ ู‡ุชู„ุงู‚ูŠ ุฅู† DOM Manipulation ุจูŠุณุงุนุฏูƒ ุชูˆุตู„ ู„ู„ู†ุชุงุฆุฌ ุงู„ู„ูŠ ุฃู†ุช ุนุงูŠุฒู‡ุงุŒ ุณูˆุงุก ุจุชุนุฏูŠู„ ููŠ ุงู„ุชู†ุณูŠู‚ ุฃูˆ ุจุชุญุฑูŠูƒ ุงู„ุนู†ุงุตุฑ ุนู„ู‰ ุงู„ุตูุญุฉ ุจุดูƒู„ ุณู„ุณ.

ู…ู„ุญูˆุธุฉ: ุฑุบู… ุฅู† DOM Manipulation ู…ู‡ู… ุฌุฏู‹ุงุŒ ุฅู„ุง ุฃู†ู‡ ู…ู…ูƒู† ูŠุจู‚ู‰ ู…ูƒู„ู ุดูˆูŠุฉ ู„ูˆ ุนู…ู„ุช ุชุนุฏูŠู„ุงุช ูƒุชูŠุฑ ู…ุฑุฉ ูˆุงุญุฏุฉ ุนู„ู‰ ุงู„ุตูุญุฉุŒ ุนุดุงู† ูƒุฏู‡ ู…ู† ุงู„ุฃูุถู„ ุฏุงูŠู…ู‹ุง ุชุณุชุฎุฏู… ุชู‚ู†ูŠุงุช ุฒูŠ ุงู„ู€ Virtual DOM ููŠ ู…ูƒุชุจุงุช ุฒูŠ React ุนุดุงู† ุชุญุณู† ุงู„ุฃุฏุงุก.

โ€”โ€”โ€”

ููŠ ุงู„ู†ู‡ุงูŠุฉุŒ ุงู„ู€ DOM Manipulation ู‡ูˆ ุงู„ุฃุณุงุณ ุงู„ู„ูŠ ุจุชุจู†ูŠ ุนู„ูŠู‡ ุงู„ุชูุงุนู„ ููŠ ุตูุญุงุช ุงู„ูˆูŠุจุŒ ูˆูƒู„ ู…ุง ูู‡ู…ุชู‡ ูƒูˆูŠุณ ูˆู‚ุฏุฑุช ุชุชุนุงู…ู„ ู…ุนุงู‡ุŒ ูƒู„ ู…ุง ู‚ุฏุฑุช ุชุจู†ูŠ ูˆุงุฌู‡ุงุช ู…ุณุชุฎุฏู… ู…ุชู‚ุฏู…ุฉ ูˆุชูุงุนู„ูŠุฉ ู„ู„ู…ูˆุงู‚ุน. โœ…
๐Ÿ”ฅ7๐Ÿ‘1๐Ÿคฏ1
Understanding Clean Code: Systems โšก๏ธ

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


- When building software systems, it's crucial to manage codebase complexity.

- Clean Code's Chapter 11 discusses designing modular systems that are easier to maintain and adapt over time.

https://dev.to/alisamir/understanding-clean-code-systems-53da
ุงู„ู€ Git ๐Ÿ”ป

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ุงู„ู€ Git ู‡ูˆ ูˆุงุญุฏ ู…ู† ุฃู‡ู… ุงู„ุฃุฏูˆุงุช ุงู„ู„ูŠ ู„ุงุฒู… ุชุชุนู„ู…ู‡ุง ูˆุชูู‡ู…ู‡ุง ูƒูˆูŠุณ ุฌุฏู‹ุง ููŠ ู…ุฌุงู„ ุงู„ุณูˆูุชูˆูŠุฑุŒ ูˆุฏู‡ ู„ุฃู†ู‡ ุจูŠุณุงุนุฏูƒ ููŠ ุฅุฏุงุฑุฉ ุงู„ุฃูƒูˆุงุฏ ุจุชุงุนุชูƒ ูˆุชู†ุธูŠู…ู‡ุง ุจุดูƒู„ ู…ุญุชุฑู ู…ู† ุบูŠุฑ ู…ุง ุชุถูŠุน ูˆู‚ุชูƒ ูˆู…ุฌู‡ูˆุฏูƒ.

ุจุงุฎุชุตุงุฑุŒ Git ู‡ูˆ ู†ุธุงู… ู„ุฅุฏุงุฑุฉ ุงู„ุฅุตุฏุงุฑุงุช (Version Control System) ุงู„ู„ูŠ ุจูŠุฎู„ูŠูƒ ุชู‚ุฏุฑ ุชุญุชูุธ ุจู†ุณุฎ ู…ุฎุชู„ูุฉ ู…ู† ุงู„ูƒูˆุฏ ุจุชุงุนูƒ ูˆุชู‚ุฏุฑ ุชุฑุฌุน ู„ุฃูŠ ู†ุณุฎุฉ ููŠ ุฃูŠ ูˆู‚ุช.

ูƒู…ุงู† ุจูŠุณู‡ู„ ุนู„ูŠูƒ ุชุดุชุบู„ ู…ุน ูุฑูŠู‚ ู„ุฃู†ูƒ ุชู‚ุฏุฑ ุชุฏู…ุฌ ุดุบู„ูƒ ู…ุน ุดุบู„ ุจุงู‚ูŠ ุงู„ูุฑูŠู‚ ุจุฏูˆู† ู…ุดุงูƒู„.

โ€”โ€”โ€”

๐Ÿ“Œ ุทูŠุจ ุฅูŠู‡ ู‡ูŠ ุฃู‡ู… ุฃูˆุงู…ุฑ Git ุงู„ู„ูŠ ู„ุงุฒู… ุชุนุฑูู‡ุงุŸ

โšก๏ธ ุงู„ู€ git init


ุฏู‡ ุงู„ุฃู…ุฑ ุงู„ู„ูŠ ุจูŠุนู…ู„ ุชู‡ูŠุฆุฉ (initialize) ู„ู…ุดุฑูˆุนูƒ ุนุดุงู† ูŠุชุญูˆู„ ู„ู…ุดุฑูˆุน GitุŒ ูŠุนู†ูŠ ุจูŠุนู…ู„ ู…ู„ู ู…ุฎููŠ ููŠ ุงู„ู…ุดุฑูˆุน ุจุชุงุนูƒ ุงุณู…ู‡ (git.) ุงู„ู„ูŠ ุจูŠุญุชูˆูŠ ุนู„ู‰ ูƒู„ ุงู„ุชูุงุตูŠู„ ุงู„ุฎุงุตุฉ ุจุงู„ุฅุตุฏุงุฑุงุช.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git clone


ุงู„ุฃู…ุฑ ุฏู‡ ุจูŠุณุชุฎุฏู… ู„ู…ุง ุชุญุจ ุชู†ุณุฎ ู…ุดุฑูˆุน ู…ู† GitHub ุฃูˆ ุฃูŠ ู…ุณุชูˆุฏุน (repository) ุฎุงุฑุฌูŠ ูˆุชุดุชุบู„ ุนู„ูŠู‡ ู…ุญู„ูŠู‹ุง (locally) ุนู„ู‰ ุฌู‡ุงุฒูƒ.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git status


ู…ู† ุฃู‡ู… ุงู„ุฃูˆุงู…ุฑ ุงู„ู„ูŠ ู„ุงุฒู… ุชุณุชุฎุฏู…ู‡ุง ูƒุชูŠุฑุŒ ุจูŠุนุฑุถ ู„ูƒ ุญุงู„ุฉ ุงู„ู…ู„ูุงุช ุงู„ู„ูŠ ุงุดุชุบู„ุช ุนู„ูŠู‡ุง ูˆู‡ู„ ู‡ูŠ ุฌุงู‡ุฒุฉ ู„ู„ุฅุถุงูุฉ ูˆู„ุง ู„ุงุŒ ูˆูƒู…ุงู† ุจูŠูˆุฑูŠูƒ ุฃูŠ ุชุนุฏูŠู„ุงุช ุชู…ุช ุนู„ู‰ ุงู„ู…ุดุฑูˆุน.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git add


ู„ู…ุง ุชุนุฏู„ ููŠ ุฃูŠ ู…ู„ู ูˆุนุงูˆุฒ ุชุถูŠูู‡ ู„ู„ุงุณุชุนุฏุงุฏ ู„ุนู…ู„ูŠุฉ ุงู„ุญูุธ (commit)ุŒ ุจุชุณุชุฎุฏู… ุงู„ุฃู…ุฑ ุฏู‡. ู…ุซู„ู‹ุง:

git add .

ุฏู‡ ุจูŠุถูŠู ูƒู„ ุงู„ู…ู„ูุงุช ุงู„ู„ูŠ ุชู… ุชุนุฏูŠู„ู‡ุง.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git commit -m "commit message"


ู‡ู†ุง ุจุชูŠุฌูŠ ุงู„ุฎุทูˆุฉ ุงู„ุฃู‡ู…ุŒ ุงู„ู„ูŠ ู‡ูŠ ุฅู†ูƒ ุชุญูุธ ุงู„ุชุนุฏูŠู„ุงุช ุงู„ู„ูŠ ุนู…ู„ุชู‡ุง ุจุดูƒู„ ุฏุงุฆู…ุŒ ูˆุจุงุณุชุฎุฏุงู… ุงู„ู€ -m ุชู‚ุฏุฑ ุชุถูŠู ุฑุณุงู„ุฉ ุชูˆุถุญ ุงู„ุชุนุฏูŠู„ุงุช ุงู„ู„ูŠ ุนู…ู„ุชู‡ุง. ุงู„ุฑุณุงู„ุฉ ุฏูŠ ุจุชุณุงุนุฏูƒ ุจุนุฏูŠู† ุชูู‡ู… ุฅูŠู‡ ุงู„ู„ูŠ ุญุตู„ ููŠ ูƒู„ ู…ุฑุญู„ุฉ.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git push


ุฏู‡ ุงู„ุฃู…ุฑ ุงู„ู„ูŠ ุจูŠุจุนุช ุงู„ุชุนุฏูŠู„ุงุช ุงู„ู„ูŠ ุนู…ู„ุชู‡ุง ู„ู„ู…ุณุชูˆุฏุน ุงู„ู„ูŠ ุดุบุงู„ ุนู„ูŠู‡ ุนู„ู‰ GitHub ุฃูˆ ุฃูŠ ุฎุฏู…ุฉ ุชุงู†ูŠุฉ. ูˆุฏู‡ ู…ู‡ู… ุฌุฏู‹ุง ู„ูˆ ุดุบุงู„ ุถู…ู† ูุฑูŠู‚ ุฃูˆ ู„ูˆ ุนุงูˆุฒ ุชุนู…ู„ ู†ุณุฎุฉ ุงุญุชูŠุงุทูŠุฉ ู„ู„ูƒูˆุฏ ุจุชุงุนูƒ.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git pull


ู„ูˆ ููŠู‡ ุชุนุฏูŠู„ุงุช ุฌุฏูŠุฏุฉ ุนู„ู‰ ุงู„ู…ุณุชูˆุฏุน ุงู„ุฑุฆูŠุณูŠ ูˆุนุงูˆุฒ ุชุณุญุจู‡ุง ุนู†ุฏูƒุŒ ุจุชุณุชุฎุฏู… ุงู„ุฃู…ุฑ ุฏู‡. ุจูŠุญุฏุซ ุงู„ูƒูˆุฏ ุนู†ุฏูƒ ุนุดุงู† ูŠูƒูˆู† ู…ุญุฏุซ ุฏุงูŠู…ู‹ุง ุจุงู„ุชุนุฏูŠู„ุงุช ุงู„ู„ูŠ ุชู…ุช ู…ู† ุจุงู‚ูŠ ุงู„ูุฑูŠู‚.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git branch


ุนุดุงู† ุชุนู…ู„ ูุฑุน ุฌุฏูŠุฏ ู„ู„ูƒูˆุฏ ุจุชุงุนูƒ (branch) ูˆุชุดุชุบู„ ุนู„ู‰ ู…ูŠุฒุฉ ู…ุนูŠู†ุฉ ู…ู† ุบูŠุฑ ู…ุง ุชุนุฏู„ ุนู„ู‰ ุงู„ูุฑุน ุงู„ุฑุฆูŠุณูŠ (main branch)ุŒ ุจุชุณุชุฎุฏู… ุงู„ุฃู…ุฑ ุฏู‡. ู…ุซู„ู‹ุง:

git branch feature-xyz

ู‡ูŠุนู…ู„ ูุฑุน ุฌุฏูŠุฏ ุงุณู…ู‡ feature-xyz.

โ€”โ€”โ€”

โšก๏ธ ุงู„ู€ git merge


ุจุนุฏ ู…ุง ุชุฎู„ุต ุดุบู„ูƒ ุนู„ู‰ ุงู„ูุฑุน (branch) ุงู„ู„ูŠ ูƒู†ุช ุดุบุงู„ ุนู„ูŠู‡ ูˆุนุงูˆุฒ ุชุฏู…ุฌู‡ ู…ุน ุงู„ูุฑุน ุงู„ุฑุฆูŠุณูŠุŒ ุจุชุณุชุฎุฏู… git merge. ุฏู‡ ุจูŠุณู…ุญ ู„ูƒ ุชุฌู…ุน ุงู„ุชุนุฏูŠู„ุงุช ูƒู„ู‡ุง ููŠ ู…ูƒุงู† ูˆุงุญุฏ.

โ€”โ€”โ€”

ุฃู…ุง GitHub ูู‡ูˆ ู…ู†ุตุฉ ุจุชุฑูุน ุนู„ูŠู‡ุง ุงู„ูƒูˆุฏ ุจุชุงุนูƒ ุงู„ู„ูŠ ู…ุณุชุฎุฏู… ููŠู‡ Git ุนุดุงู† ุชู‚ุฏุฑ ุชุฎุฒู†ู‡ ุฃูˆู†ู„ุงูŠู†ุŒ ูˆุชุดุชุบู„ ุนู„ูŠู‡ ู…ุน ุจุงู‚ูŠ ุงู„ุชูŠู… ูˆูƒู…ุงู† ุชูˆุตู„ู‡ ู…ู† ุฃูŠ ุฌู‡ุงุฒ ุจู†ูุณ ุงู„ุฃูƒูˆู†ุช ุจุชุงุนูƒ.

ูŠุนู†ูŠ ุชุฎูŠู„ ุฅู†ูƒ ุดุบุงู„ ููŠ ู…ุดุฑูˆุน ูƒุจูŠุฑ ูˆู…ุนุงูƒ ุชูŠู…ุŒ ูƒู„ ูˆุงุญุฏ ู…ู…ูƒู† ูŠุดุชุบู„ ุนู„ู‰ ุฌุฒุก ู…ุนูŠู† ู…ู† ุงู„ูƒูˆุฏุŒ ูˆุจุนุฏูŠู† ุชุฏู…ุฌูˆุง ุดุบู„ูƒู… ูƒู„ู‡ ู…ุน ุจุนุถ ู…ู† ุบูŠุฑ ู…ุง ูŠุญุตู„ ุฃูŠ ู„ุฎุจุทุฉ.

ุจุงู„ู†ุณุจุฉ ู„ู€ GitLab ูู‡ูˆ ู…ู†ุตุฉ ุฒูŠ GitHub ู…ู† ุญูŠุซ ุงู„ูˆุธูŠูุฉ ูˆุงู„ุงุณุชุฎุฏุงู…. ูˆู„ูƒู† ู‡ุชู„ุงู‚ูŠ ุดูƒู„ู‡ุง ู…ุฎุชู„ู ุดูˆูŠุฉ.

โ€”โ€”โ€”

ุงู„ู€ Git ู‡ูŠูˆูุฑ ู„ูƒ ูˆู‚ุช ูƒุจูŠุฑ ูˆู‡ูŠุฌู†ุจูƒ ูƒุชูŠุฑ ู…ู† ุงู„ุฃุฎุทุงุก ุงู„ู„ูŠ ู…ู…ูƒู† ุชุญุตู„ ู„ูˆ ุงุดุชุบู„ุช ุนู„ู‰ ุงู„ูƒูˆุฏ ุจุดูƒู„ ุบูŠุฑ ู…ู†ุธู…. ูƒู„ ุงู„ุฃูˆุงู…ุฑ ุงู„ู„ูŠ ููˆู‚ ุฏูŠ ู‡ูŠ ุงู„ุฃุณุงุณูŠุงุช ุงู„ู„ูŠ ู‡ุชุณุงุนุฏูƒ ุชุจุฏุฃุŒ ูˆุทุจุนู‹ุง ููŠู‡ ุฃูˆุงู…ุฑ ุฃูƒุชุฑ ู…ุชู‚ุฏู…ุฉ ู…ู…ูƒู† ุชุชุนู„ู…ู‡ุง ุจุนุฏ ูƒุฏู‡. โœ…
โค11๐Ÿ‘6
ู‚ู€ูˆุงุนู€ุฏ ุงู„ุจูŠุงู†ุงุช (Databases) ๐Ÿ”ป

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ุงู„ุฏุงุชุงุจูŠุฒ (Database) ู‡ูŠ ุฌุฒุก ุฃุณุงุณูŠ ููŠ ุฃูŠ ุณูˆูุชูˆูŠุฑ ุณูˆุงุก ู…ูˆู‚ุน ุฃูˆ ุชุทุจูŠู‚ุŒ ู„ุฃู†ู‡ุง ุจุชุฎุฒู† ูˆุจุชุชุนุงู…ู„ ู…ุน ุงู„ุจูŠุงู†ุงุช ุงู„ู„ูŠ ุจูŠุณุชุฎุฏู…ู‡ุง ุงู„ุชุทุจูŠู‚.

https://www.linkedin.com/posts/dev-alisamir_database-sql-nosql-activity-7240785181274451968-jp_6
ุงู„ู€ Asynchronous Programming ููŠ JavaScript ๐Ÿ’ฏ

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค


ูˆุฃู†ุช ุดุบุงู„ ุจู„ุบุฉ JavaScript ุฃูƒูŠุฏ ุณู…ุนุช ุนู† ู…ุตุทู„ุญ ุงู„ู€ Asynchronous Programming ูˆุงู„ู„ูŠ ูŠุนุชุจุฑ ุญุงุฌุฉ ู…ู‡ู…ุฉ ู„ุงุฒู… ุชูƒูˆู† ูุงู‡ู…ู‡ุง ูƒูˆูŠุณ.

ุงู„ุจุฑู…ุฌุฉ ููŠู‡ุง ู†ูˆุนูŠู† ุฃุณุงุณูŠูŠู†: Synchronous ูˆAsynchronousุŒ ูˆู„ู…ุง ู†ูู‡ู… ุงู„ูุฑู‚ ุจูŠู†ู‡ู…ุŒ ู‡ูŠุจู‚ู‰ ุฃุณู‡ู„ ู†ุนุฑู ู„ูŠู‡ ุงู„ู€ Asynchronous ู…ู‡ู… ุฌุฏู‹ุง.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ู€ Synchronous Programming (ุงู„ุชู†ููŠุฐ ุงู„ู…ุชุณู„ุณู„):

ุฏู‡ ูŠุนู†ูŠ ุฅู† ุงู„ูƒูˆุฏ ุจูŠุชู†ูุฐ ุฎุทูˆุฉ ุจุฎุทูˆุฉุŒ ุจู…ุนู†ู‰ ุฅู† ุงู„ูƒูˆุฏ ู…ุจูŠูƒู…ู„ุด ุชู†ููŠุฐ ุฃูŠ ุฎุทูˆุฉ ุชุงู†ูŠุฉ ุฅู„ุง ู„ู…ุง ุงู„ุฎุทูˆุฉ ุงู„ู„ูŠ ู‚ุจู„ู‡ุง ุชุฎู„ุต. ูŠุนู†ูŠ ู„ูˆ ุนู†ุฏูƒ ุนู…ู„ูŠุฉ ุจุชุงุฎุฏ ูˆู‚ุช ุฒูŠ ุฅู†ูƒ ุจุชุญู…ู„ ุจูŠุงู†ุงุช ู…ู† ุงู„ุณุฑูุฑ ุนู† ุทุฑูŠู‚ ุงู„ู€ APIุŒ ุงู„ูƒูˆุฏ ู‡ูŠูุถู„ ู…ุณุชู†ูŠ ู„ุญุฏ ู…ุง ุงู„ุจูŠุงู†ุงุช ุชุชุญู…ู„ ู‚ุจู„ ู…ุง ูŠูƒู…ู„ ุจุงู‚ูŠ ุงู„ุชู†ููŠุฐ.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ู€ Asynchronous Programming (ุงู„ุชู†ููŠุฐ ุบูŠุฑ ุงู„ู…ุชุณู„ุณู„):

ุฃู…ุง ููŠ ุงู„ุจุฑู…ุฌุฉ AsynchronousุŒ ุงู„ูƒูˆุฏ ูŠู‚ุฏุฑ ูŠู†ูุฐ ุญุงุฌุงุช ูƒุชูŠุฑ ููŠ ู†ูุณ ุงู„ูˆู‚ุช ู…ู† ุบูŠุฑ ู…ุง ูŠุณุชู†ู‰ ุงู„ุนู…ู„ูŠุฉ ุงู„ุทูˆูŠู„ุฉ ุชุฎู„ุต. ูŠุนู†ูŠ ู„ูˆ ุนู†ุฏูƒ ุนู…ู„ูŠุฉ ุฒูŠ ุชุญู…ูŠู„ ุงู„ุจูŠุงู†ุงุช ู…ู† ุงู„ุณุฑูุฑุŒ ุงู„ูƒูˆุฏ ู…ู…ูƒู† ูŠุณุชู…ุฑ ููŠ ุชู†ููŠุฐ ุฃูƒูˆุงุฏ ุชุงู†ูŠุฉุŒ ูˆู„ู…ุง ุงู„ุจูŠุงู†ุงุช ุชุชุญู…ู„ุŒ ุงู„ูƒูˆุฏ ู‡ูŠุนุฑู ูˆูŠุชุนุงู…ู„ ู…ุน ุงู„ู†ุชูŠุฌุฉ.

โ€”โ€”โ€”

๐Ÿ“Œ ุฅุฒุงูŠ ุงู„ูƒู„ุงู… ุฏู‡ ุจูŠุญุตู„ ููŠ JavaScriptุŸ

ููŠ JavaScriptุŒ ุนู†ุฏู†ุง ุทุฑูŠู‚ุชูŠู† ุฑุฆูŠุณูŠุชูŠู† ู„ู„ุชุนุงู…ู„ ู…ุน ุงู„ู€ asynchronous programming

๐Ÿ”ป ุงู„ู€ Callbacks
๐Ÿ”ป ุงู„ู€ Promises

(ูˆุทุจุนู‹ุง async/await ุงู„ู„ูŠ ู‡ูˆ ุชุญุณูŠู† ู„ู„ู€ Promises)

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ู€ Callbacks

ุฃูˆู„ ุทุฑูŠู‚ุฉ ู„ู„ุชุนุงู…ู„ ู…ุน ุงู„ู€ asynchronous programming ูƒุงู†ุช ุนู† ุทุฑูŠู‚ ุงู„ู€ Callbacks. ุงู„ููƒุฑุฉ ุจุจุณุงุทุฉ ุฅู†ูƒ ุจุชู…ุฑุฑ ุฏุงู„ุฉ ู…ุนูŠู†ุฉ ูƒู€ "callback" ู„ู„ูƒูˆุฏ ุงู„ู„ูŠ ุจูŠุชู†ูุฐุŒ ูˆู„ู…ุง ุงู„ูƒูˆุฏ ุฏู‡ ูŠุฎู„ุตุŒ ุงู„ุฏุงู„ุฉ ุฏูŠ ุจุชุดุชุบู„.

ู„ูƒู† ุงู„ู€ callbacks ุจุชุชุญูˆู„ ุจุณุฑุนุฉ ู„ูƒูˆุฏ ู…ุนู‚ุฏ ุฌุฏู‹ุง ู„ู…ุง ูŠูƒูˆู† ุนู†ุฏูƒ ุนู…ู„ูŠุงุช ูƒุชูŠุฑ ูˆุจุชุญุชุงุฌ ุชูƒุชุจ ุญุงุฌุงุช ูƒุชูŠุฑ ุฌูˆุฉ ุจุนุถู‡ุงุŒ ูˆุฏู‡ ุงู„ู„ูŠ ุจู†ุณู…ูŠู‡ Callback Hell.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ุญู„: ุงู„ู€ Promises

ู‡ู†ุง ุจูŠุฌูŠ ุฏูˆุฑ ุงู„ู€ PromisesุŒ ุงู„ู„ูŠ ู‡ูŠ ุทุฑูŠู‚ุฉ ุฌุฏูŠุฏุฉ ูˆุฃูƒุซุฑ ุชู†ุธูŠู…ู‹ุง ู„ู„ุชุนุงู…ู„ ู…ุน ุงู„ุนู…ู„ูŠุงุช ุงู„ู€ asynchronous. ุงู„ู€ Promise ู‡ูˆ ููŠ ุงู„ุฃุณุงุณ "ูˆุนุฏ" ุฅู† ุงู„ุนู…ู„ูŠุฉ ู‡ุชุฎู„ุต ููŠ ุงู„ู…ุณุชู‚ุจู„.

ุงู„ู€ Promise ุจูŠูƒูˆู† ู„ูŠู‡ 3 ุญุงู„ุงุช:

๐Ÿ”ป ุญุงู„ุฉ ุงู„ู€ Pending: ูŠุนู†ูŠ ุงู„ุนู…ู„ูŠุฉ ู„ุณู‡ ู…ุฎู„ุตุชุด.
๐Ÿ”ป ุญุงู„ุฉ ุงู„ู€ Fulfilled: ูŠุนู†ูŠ ุงู„ุนู…ู„ูŠุฉ ู†ุฌุญุช ูˆุทู„ุนุช ุงู„ู†ุชูŠุฌุฉ.
๐Ÿ”ป ุญุงู„ุฉ ุงู„ู€ Rejected: ูŠุนู†ูŠ ุงู„ุนู…ู„ูŠุฉ ูุดู„ุช ูˆููŠู‡ ุฎุทุฃ ุญุตู„.


ู„ู…ุง ุงู„ุนู…ู„ูŠุฉ ุชุฎู„ุต ุจู†ุฌุงุญุŒ ุงู„ู€ Promise ุจูŠุชุญูˆู„ ู„ุญุงู„ุฉ "fulfilled"ุŒ ูˆู„ูˆ ุงู„ุนู…ู„ูŠุฉ ูุดู„ุช ุจูŠุชุญูˆู„ ู„ุญุงู„ุฉ "rejected".

โ€”โ€”โ€”

ุฎู„ูŠู†ุง ู†ุดูˆู ู…ุซุงู„ ุนุดุงู† ู†ูู‡ู… ุงู„ูƒู„ุงู… ุฏู‡ ุจุดูƒู„ ุฃูˆุถุญ. ู‡ู†ูุชุฑุถ ุฅู†ู†ุง ุนุงูŠุฒูŠู† ู†ุญุงูƒูŠ ุนู…ู„ูŠุฉ ุงุณุชุฑุฌุงุน ุจูŠุงู†ุงุช ู…ู† ุงู„ู€ API.

const fetchData = () => {
return new Promise((resolve, reject) => {
setTimeout(() => {
const dataAvailable = true;

if (dataAvailable) {
resolve("Data retrieved successfully!");
} else {
reject("Error: Unable to retrieve data.");
}
}, 3000);
});
};

fetchData()
.then(result => console.log(result))
.catch(error => console.log(error));


ููŠ ุงู„ูƒูˆุฏ ุฏู‡ุŒ ุงู„ูู†ูƒุดู† fetchData ุจุชุฑุฌุน Promise. ุฏุงุฎู„ ุงู„ู€ PromiseุŒ ุจู†ุณุชุฎุฏู… ุฅู…ุง resolve ู„ูˆ ุงู„ุนู…ู„ูŠุฉ ู†ุฌุญุช ุฃูˆ reject ู„ูˆ ุญุตู„ ุฎุทุฃ.

ุจุงุณุชุฎุฏุงู… thenุŒ ุจู†ู‚ุฏุฑ ู†ุชุนุงู…ู„ ู…ุน ุงู„ู†ุชูŠุฌุฉ ู„ูˆ ุงู„ุนู…ู„ูŠุฉ ู†ุฌุญุชุŒ ูˆู„ูˆ ุญุตู„ ุฎุทุฃุŒ ุงู„ู€ catch ุจุชุณุงุนุฏู†ุง ููŠ ุงู„ุชุนุงู…ู„ ู…ุนุงู‡.

โ€”โ€”โ€”

๐Ÿ“Œ ุงู„ู€ Async/Await

ุนู„ุดุงู† ู†ุฎู„ูŠ ุงู„ูƒูˆุฏ ุฃุจุณุท ูˆุฃูˆุถุญุŒ ุธู‡ุฑ ุญุงุฌุฉ ุงุณู…ู‡ุง async/await ุงู„ู„ูŠ ุจุชุดุชุบู„ ุนู„ู‰ ุงู„ู€ Promises ุจุณ ุจุดูƒู„ ู…ุจุณุท ุฌุฏู‹ุง ูˆุจุชุฎู„ูŠ ุงู„ูƒูˆุฏ ูŠุจุงู† ูƒุฃู†ู‡ synchronous.


ู†ูุณ ุงู„ู…ุซุงู„ ุงู„ู„ูŠ ููˆู‚ ู†ู‚ุฏุฑ ู†ูƒุชุจู‡ ุจุทุฑูŠู‚ุฉ async/await ุจุงู„ุดูƒู„ ุฏู‡:

const fetchData = async () => {
try {
const result = await new Promise((resolve, reject) => {
setTimeout(() => {
const dataAvailable = true;
if (dataAvailable) {
resolve("Data retrieved successfully!");
} else {
reject("Error: Unable to retrieve data.");
}
}, 3000);
});
console.log(result);
} catch (error) {
console.log(error);
}
};

fetchData();


ุงู„ู…ูŠุฒุฉ ู‡ู†ุง ุฅู†ู†ุง ุงุณุชุฎุฏู…ู†ุง await ุนุดุงู† ู†ุณุชู†ู‰ ุงู„ู†ุชูŠุฌุฉ ู…ู† ุงู„ู€ Promise ูˆูƒุฃู† ุงู„ุนู…ู„ูŠุฉ ุฏูŠ synchronousุŒ ู„ูƒู† ููŠ ุงู„ุญู‚ูŠู‚ุฉ ุงู„ูƒูˆุฏ ุดุบุงู„ ุจุทุฑูŠู‚ุฉ asynchronous.

ูˆุจุฏู„ ู…ุง ู†ุณุชุฎุฏู… then ูˆ catchุŒ ุงุณุชุฎุฏู…ู†ุง try ูˆ catch ุนู„ุดุงู† ู†ุชุนุงู…ู„ ู…ุน ุงู„ู†ุฌุงุญ ุฃูˆ ุงู„ุฎุทุฃ.

โ€”โ€”โ€”

๐Ÿ“Œ ู„ูŠู‡ ุฃุณุชุฎุฏู… ุงู„ู€ Promises ูˆุงู„ู€ Async/AwaitุŸ

โœ… ุชู†ุธูŠู… ุงู„ูƒูˆุฏ: ุงู„ูƒูˆุฏ ุจูŠุจู‚ู‰ ุฃู†ุถู ูˆุฃุจุณุท ููŠ ุงู„ูู‡ู… ู…ู‚ุงุฑู†ุฉ ุจุงู„ู€ Callbacks.
โœ… ุงู„ู€ Error Handling ุฃูุถู„: ุงู„ุชุนุงู…ู„ ู…ุน ุงู„ุฃุฎุทุงุก ุจู‚ู‰ ุฃุณู‡ู„ ุจุงุณุชุฎุฏุงู… try/catch.
โœ… ู„ู…ุง ูŠูƒูˆู† ุนู†ุฏูƒ ู…ุดุฑูˆุน ูƒุจูŠุฑุŒ ุงู„ู€ async/await ู‡ูŠุณุงุนุฏูƒ ููŠ ุฅุฏุงุฑุฉ ุงู„ุฃูƒูˆุงุฏ ุงู„ุทูˆูŠู„ุฉ ูˆุงู„ู…ุนู‚ุฏุฉ ุจุณู‡ูˆู„ุฉ.

โ€”โ€”โ€”

ุจุงู„ุชูˆููŠู‚ ูŠุง ุจุทู„ ๐Ÿ’ช๐Ÿป
๐Ÿ‘9
ุณู†ุงูƒ ูุฑูˆู†ุช ุงู†ุฏ ุน ุงู„ุณุฑูŠุน...โšก๏ธ

ู„ุง ุชู†ุณูˆุง ุฃู‡ู„ู†ุง ููŠ ูู„ู€ู€ุณุทู€ู€ูŠู† ูˆููŠ ุณู€ู€ูˆุฑูŠุง ูˆููŠ ุงู„ุณู€ู€ูˆุฏุงู† ูˆููŠ ุงู„ูŠู€ู€ู…ู† ูˆููŠ ูƒู„ ุฏูˆู„ ุงู„ุนุงู„ู… ู…ู† ุงู„ู…ุณู„ู…ูŠู† ู…ู† ุงู„ุฏุนุงุก. ๐Ÿค



ุชุญุณูŠู† ุงู„ุฃุฏุงุก (Performance) ุนู†ุตุฑ ู…ู‡ู… ุฌุฏู‹ุง ููŠ ู†ุฌุงุญ ุฃูŠ ู…ูˆู‚ุน. ู„ู…ุง ุงู„ู…ูˆู‚ุน ูŠูƒูˆู† ุฃุณุฑุน ูˆุฃูƒุซุฑ ุงุณุชุฌุงุจุฉุŒ ู‡ุชู„ุงู‚ูŠ ุชุฌุฑุจุฉ ุงู„ู…ุณุชุฎุฏู… ุฃุญุณู† ูˆุชุฑุชูŠุจ ุงู„ู…ูˆู‚ุน ููŠ ู…ุญุฑูƒุงุช ุงู„ุจุญุซ ุฃุนู„ู‰. ๐Ÿ’ฏ

โ€”โ€”โ€”

โšก๏ธ Tutorial Video:
https://youtu.be/GlR0lzwDKD8