ToCode
Kanalga Telegram鈥檇a o鈥榯ish
讟讬驻讬诐 拽爪专讬诐 诇诪转讻谞转讬诐 诪讗转 讬谞讜谉 驻专拽
Ko'proq ko'rsatish1 419
Obunachilar
Ma'lumot yo'q24 soatlar
Ma'lumot yo'q7 kunlar
-230 kunlar
Postlar arxiv
1 419
# 注讘讜讚讛 讗诪讬转讬转 讜诇讬诪讜讚
讗诐 讛讬讬转讬 诪转讞讬诇 诇诇诪讜讚 讛讬讜诐 驻讬转讜讞 Full Stack 讜讛讬讬转讬 爪专讬讱 诇注讘讜专 诪讗驻诇讬拽爪讬讬转 Node.JS 砖讻转讘转讬 砖注讜讘讚转 讗爪诇讬 注诇 讛诪讻讜谞讛 诇讛转拽谞讛 砖诇 讛讗驻诇讬拽爪讬讛 讘注谞谉, 讗讬谉 砖讜诐 住讬讻讜讬 砖讛讬讬转讬 讛讜诇讱 诇诇诪讜讚 讗讬讱 诇讛拽讬诐 砖专转 Linux 诪讗驻住. 注讝讘讜, 讗驻讬诇讜 讛讬讜诐 砖讗谞讬 讬讜讚注 诇讛拽讬诐 诇注爪诪讬 砖专转讬诐, 讻砖讗谞讬 专讜讗讛 讗转 讛诪诪砖拽讬诐 砖诇 AWS 讗讜 Azure DevOps 讗讜 讗驻讬诇讜 Heroku 讗谞讬 诪专讙讬砖 讟讬驻砖 诇讛转注住拽 注诐 讛转拽谞讜转 讘注爪诪讬. 讘诇讞讬爪转 讻驻转讜专 诪转讜讱 讛 IDE 讛讬讜诐 讗驻砖专 诇讛注讘讬专 讗转 讻诇 讛拽讜讚 砖诇讻诐 诇砖专转 讘专砖转 讜诇拽讘诇 注诇讬讜 讗讬谞住讜祝 诪谞讙谞讜谞讬 谞讬讟讜专 讜谞讬讛讜诇.
讗讜 讘讚讜讙诪讛 讗讞专转 - 讗诐 讛讬讬转讬 诪转讞讬诇 讛讬讜诐 诇诇诪讜讚 git 讜讛讬讬转讬 爪专讬讱 诇讛转讞讘专 诇诪讗讙专 讘砖讘讬诇 诇住谞讻专谉 注讘讜讚讛 注诐 讞讘专讬诐 讘爪讜讜转, 讗讬谉 砖讜诐 住讬讻讜讬 砖讛讬讬转讬 诪转讞讬诇 诪诇诇诪讜讚 讗转 诪诪砖拽 砖讜专转 讛驻拽讜讚讛 讜诇拽专讜讗 讗转 讛 Git Book. 讬砖 讻诇讬 GUI 讻诇 讻讱 讟讜讘讬诐 砖讻讘专 诪住讜谞讻专谞讬诐 注诐 讛 IDE 砖诇讬 讻讱 砖讘诇讞讬爪转 讻驻转讜专 诪讛 IDE 讗谞讬 讬讻讜诇 诇注砖讜转 讗转 讻诇 讛驻注讜诇讜转 砖讗谞讬 爪专讬讱.
讛讘讞讬专讛 诇诇诪讜讚 讟讻谞讜诇讜讙讬讛 讘爪讜专讛 诪砖诪注讜转讬转 讜诇注讜诪拽 讛讬讗 诇讗 讚专讬砖转 拽讚诐 诇驻谞讬 砖诪转讞讬诇讬诐 诇注讘讜讚 讘讟讻谞讜诇讜讙讬讛. 诇诪注砖讛 讝讛 诇讗 讛讙讬讜谞讬 诇讛砖拽讬注 讻诇 讻讱 讛专讘讛 讝诪谉 诇讬诪讜讚 诇驻谞讬 砖讗转诐 诪转讞讬诇讬诐 诇讛讬讜转 诪讜注讬诇讬诐. 讛讘讜住 诪砖诇诐 诇讻诐 讻住祝 讻讚讬 砖转驻转专讜 讘讗讙讬诐 讜转讻转讘讜 驻讬爪'专讬诐, 诇讗 讘砖讘讬诇 砖转讛讬讜 讛专讘讛 讬讜转专 诪拽爪讜注讬讬诐 讘 Linux 诪诪讛 砖爪专讬讱 讘砖讘讬诇 讛注讘讜讚讛 砖诇讻诐.
讜诪讛注讜讘讚讜转 讛讗诇讛 讗谞讞谞讜 讬讻讜诇讬诐 诇讛转拽讚诐 诇砖谞讬 讻讬讜讜谞讬诐 讗驻砖专讬讬诐:
1. 讗驻砖专 诇讞驻砖 诇诇诪讜讚 讗转 讛诪讬谞讬诪讜诐 砖讗谞讬 爪专讬讱 讘砖讘讬诇 诇讛转拽讚诐 讘注讘讜讚讛. 讗诐 讗驻砖专 诇注讘讜讚 注诐 讛 GUI 砖诇 讙讬讟 讜诇讛讙讬注 诇转讜爪讗讜转 讟讜讘讜转 讗讝 讻讗谉 讗谞讬 注讜爪专. 讗讬谉 讟注诐 诇诇诪讜讚 诪注讘专 诇讝讛.
2. 讗驻砖专 诇讞驻砖 诇诇诪讜讚 讗转 讛诪拽住讬诪讜诐 砖讗谞讬 讬讻讜诇 注诇 讻诇讬 诪住讜讬诐, 诪转讜讱 注谞讬讬谉 讜讘砖讘讬诇 诇讙诇讜转 注诇讬讜 讚讘专讬诐 砖讗讜诇讬 讬注讝专讜 诇砖驻专 讗转 讛注讘讜讚讛 砖诇讬 (讜讗讜诇讬 诇讗). 诇讬诪讜讚 讟讻谞讜诇讜讙讬 讻讬 讗驻砖专, 讜讻讬 讗谞讬 诪住讜讙 讛讗谞砖讬诐 砖诇讜诪讚 讟讻谞讜诇讜讙讬讜转 讞讚砖讜转.
讗谞讬 讞讜砖讘 砖讛讟注谞讛 砖爪专讬讱 诇讚注转 讛讻诇 讟讜讘 讘砖讘讬诇 诇讛转拽讚诐 讘注讘讜讚讛 诇讗 诪讜讻讬讞讛 讗转 注爪诪讛 讘 Scale. 专讜讘 讛诪转讻谞转讬诐 砖谞驻讙讜砖 诇讗 诪讻讬专讬诐 讗转 讛拽专讘讬讬诐 砖诇 讻诇 讻诇讬 砖讗谞讞谞讜 诪砖转诪砖讬诐 讘讜 讜讘讻诇 讝讗转 讗谞讞谞讜 诪爪诇讬讞讬诐 诇讻转讜讘 诪讜爪专讬诐 诇讗 专注讬诐. 讛讘讞讬专讛 讛砖谞讬讛, 讛讘讞讬专讛 诇诇诪讜讚 诇注讜诪拽, 诇讗转讙专 讗转 注爪诪谞讜 讜诇讞驻砖 讚专讻讬诐 讬爪讬专转讬讜转 诇驻转讜专 讘注讬讜转 诇讗 爪专讬讻讛 讗转 讛讛爪讚拽讛 砖诇 讛转讜爪讗讛. 讛讬讗 讟讜讘讛 诪住驻讬拽 讘驻谞讬 注爪诪讛.
1 419
# 诪砖讬诪讜转 诇讬诪讜讚 诪注谞讬讬谞讜转
讘谞讬住讬讜谉 诇诇诪讜讚 讟讻谞讜诇讜讙讬讛 讞讚砖讛 讜讗讞专讬 砖拽讜专讗讬诐 讗转 讛 Tutorial 讞讜讝专转 讻诪注讟 转诪讬讚 讗讜转讛 讛砖讗诇讛: "诪讛 诇讘谞讜转 注讻砖讬讜?". 诪爪讚 讗讞讚 讗诐 讗转诐 专讜爪讬诐 诇诇诪讜讚 讗讬讱 诇讘谞讜转 驻专讜讬拽讟 Full Stack 讙讚讜诇 讘 Node.JS 讜 React 讘专讜专 砖讚专讱 讟讜讘讛 转讛讬讛 诇讘讞讜专 谞讜砖讗 讜诇讘谞讜转 注讘讜专讜 驻专讜讬拽讟. 讗讘诇 诪爪讚 砖谞讬 驻讬转讜讞 驻专讜讬拽讟 砖诇诐 诇讜拽讞 谞爪讞 讜讬砖 讛专讘讛 诪讗讜讚 讞诇拽讬诐 讘驻讬转讜讞 讛驻专讜讬拽讟 砖诇讗 拽砖讜专讬诐 诇诇讬诪讜讚 讛讟讻谞讜诇讜讙讬讜转 砖专爪讬转诐 诇诇诪讜讚.
讚专讱 讗讞转 诇讛转诪拽讚 讘转讛诇讬讱 讛诇讬诪讜讚 讛讬讗 诇讬爪讜专 诪砖讬诪讜转 诇讬诪讜讚 诪注谞讬讬谞讜转 注诇 讛讟讻谞讜诇讜讙讬讛, 讻讗砖专 讻诇 诪砖讬诪讛 拽砖讜专讛 诇诇讬诪讜讚 讛讬讘讟 诪住讜讬诐 砖诇 讛谞讜砖讗 讜诪讜讙讘诇转 讘讝诪谉.
谞谞讬讞 讘砖讘讬诇 讛讚讜讙诪讛 砖讗谞讞谞讜 专讜爪讬诐 诇诇诪讜讚 React 讜注讘专谞讜 讗转 讛 Tutorial 讛讘住讬住讬. 注讻砖讬讜 讗谞讬 讬讻讜诇 诇讛诪砖讬讱 诇讚讘专 注诇 Data Flow 讘 React 讜诇讛转讞讬诇 诇讬爪讜专 诪砖讬诪讜转 诇讬诪讜讚 讬讜转专 诪诪讜拽讚讜转:
1. 讗谞讬 专讜爪讛 诇诇诪讜讚 讗讬讱 拽讜诪驻讜谞谞讟讛 砖讜诪专转 State 诪住驻专讬 驻砖讜讟 讗讝 讗讘谞讛 拽讜诪驻讜谞谞讟讛 砖诇 诪讜谞讛 诇讞讬爪讜转 注诐 State.
2. 讗谞讬 专讜爪讛 诇诇诪讜讚 讗讬讱 拽讜诪驻讜谞谞讟讛 砖讜诪专转 State 讬讜转专 诪讜专讻讘 讗讝 讗诇讱 诇诪诪砖 讗转 Game Of Life 讘转讜专 拽讜诪驻讜谞谞讟讛 讬讞讬讚讛.
3. 讗谞讬 专讜爪讛 诇诇诪讜讚 讗讬讱 诇讟驻诇 讘讗讬专讜注讬诐 讗讝 讗诇讱 诇讻转讜讘 诪砖讞拽讜谉 讘讜 爪专讬讱 诇诇讞讜抓 注诇 讻讚讜专 砖讝讝 注诇 讛诪住讱.
4. 讗谞讬 专讜爪讛 诇诇诪讜讚 讗讬讱 讻诪讛 拽讜诪驻讜谞谞讟讜转 诪转拽砖专讜转 讘讬谞讬讛谉 讗讝 讗诇讱 诇讘谞讜转 讚祝 注诐 诪住驻专 诪讜谞讬 诇讞讬爪讜转 讜拽讜诪驻讜谞谞讟讛 砖诪爪讬讙讛 讗转 住讻讜诐 讛注专讻讬诐 讘讻诇 讛诪讜谞讬诐.
讛专讘讛 讗谞砖讬诐 诪住转讻诇讬诐 注诇 专砖讬诪转 诪砖讬诪讜转 讻讝讗转 讜诪专讙讬砖讬诐 砖诪砖讛讜 讞住专, 砖讙诐 讗诐 讗爪诇讬讞 诇驻转讜专 讛诪讜谉 讛诪讜谉 诪砖讬诪讜转 拽讟谞讜转 讝讛 诇讗 讬讛驻讜讱 讗讜转讬 诇诪转讻谞转 Full Stack 砖讬讜讚注 诇讻转讜讘 诪注专讻讜转 讙讚讜诇讜转 讗讜 诇诪转讻谞转 React 砖诪注住讬拽讬诐 专讜爪讬诐 诇讙讬讬住. 注讚讬讬谉 讬讬砖讗专 驻注专 讘讬谉 诪砖讛讜 砖讬讜讚注 诇驻转讜专 讘注讬讛 住驻爪讬驻讬转 讘 React 诇讘讬谉 诪砖讛讜 砖讬讜讚注 诇讘谞讜转 诪注专讻转 讙讚讜诇讛.
讜讛转讞讜砖讛 讛讝讗转 讛讬讗 诪注讜诇讛 讻讬 讛专讙注 讛讬讗 驻转讞讛 诇讬 讗转 讛讚诇转 诇讗讜住祝 讞讚砖 砖诇 诪砖讬诪讜转 诇讬诪讜讚, 讛驻注诐 讻讗诇讛 砖诇讗 讘讛讻专讞 拽砖讜专讜转 诇专讬讗拽讟:
1. 讗谞讬 专讜爪讛 诇诇诪讜讚 讗讬讱 谞专讗讬转 诪注专讻转 Web 讛诪砖诇讘转 拽讜讚 爪讚-砖专转 注诐 拽讜讚 爪讚-诇拽讜讞 讜诪注讘讬专讛 诪讬讚注 讘讗诪爪注讜转 REST API; 讗讝 讗诇讱 诇讘谞讜转 诪注专讻转 砖诇 讚祝 讘讜讚讚 砖诪诪讞讬砖讛 讗转 讛讞讬讘讜专 讛讝讛 讘讻诇 诪讬谞讬 讟讻谞讜诇讜讙讬讜转 爪讚-诇拽讜讞 讜讻诇 诪讬谞讬 讟讻谞讜诇讜讙讬讜转 爪讚 砖专转.
2. 讗谞讬 专讜爪讛 诇诇诪讜讚 讗讬讱 诇讛砖转诪砖 讘 Client Side Router 讗讝 讗诇讱 诇讘谞讜转 诪注专讻转 讛诪讜专讻讘转 诪-5 讚驻讬诐 砖诪注讘讬专讬诐 诪讬讚注 讘讬谞讬讛诐, 讜讗讘谞讛 讗讜转讛 4 驻注诪讬诐 讻诇 驻注诐 讘讟讻谞讜诇讜讙讬讛 讗讞专转.
讛转讗诪讛 讟讜讘讛 讘讬谉 讛讚讘专 砖讗谞讬 专讜爪讛 诇诇诪讜讚 诇讻诇讬 砖讗谞讬 讘讜讞专 诇诇诪讜讚 讘讗诪爪注讜转讜, 讜讚讬讜拽 讘讛讙讚专转 诪砖讬诪转 讛诇讬诪讜讚, 讛诐 讚讘专讬诐 砖讬讻讜诇讬诐 诇讛驻讜讱 讗转 讛诇讬诪讜讚 砖诇谞讜 诇讛专讘讛 讬讜转专 诪诪讜拽讚 讜诇讛专讘讛 讬讜转专 讬注讬诇.
1 419
# 讻讬祝? 转诇讜讬 讗转 诪讬 砖讜讗诇讬诐
讛讗讬谞讟讜讗讬爪讬讛 砖诇 专讘讬诐 诪讗讬转谞讜 诇讙讘讬 "讻讬祝" 诪讞讘专转 讘讬谉 讻诪讛 诪砖讛讜 讛讜讗 "讻讬祝" 诇讘讬谉 讻诪讛 讗谞讬 专讜爪讛 诇注砖讜转 讗讜转讜. 讛诪砖驻讟讬诐 讛讘讗讬诐 诪砖讞拽讬诐 注诇 讛诪讘谞讛 讛讝讛 讜砖诪讬诐 讗转 讛"讻讬祝" 讘转讜专 讛讚讘专 砖讗谞讬 专讜爪讛 诇注砖讜转:
讗谞讬 专讜爪讛 诇砖讞拽 讻讚讜专住诇 讗讘诇 爪专讬讱 诇住讬讬诐 拽讜讚诐 讗转 砖讬注讜专讬 讛讘讬转.
讗谞讬 专讜爪讛 诇讛诪砖讬讱 诇讬砖讜谉 讗讘诇 爪专讬讱 诇爪讗转 诇专讬爪讛.
讗谞讬 专讜爪讛 诇专讗讜转 讞转讜诇讬诐 讘讟讬拽讟讜拽 讗讘诇 爪专讬讱 诇诇诪讜讚 JavaScript.
讟讻谞讬拽讛 拽诇讛 诇讛爪诇讬讞 诇注砖讜转 讚讘专讬诐 砖讗谞讞谞讜 专讜爪讬诐 诇注砖讜转 讛讬讗 诇讛驻住讬拽 诇讛砖转诪砖 讘诪讘谞讛 讛讝讛, 讙诐 讻砖诪讚讘专讬诐 注诐 讞讘专讬诐 讜讙诐 讻砖诪讚讘专讬诐 注诐 注爪诪讻诐. 讗诐 谞爪诇讬讞 诇砖谞讜转 讗转 讛住讬驻讜专 讜诇讛讘讬谉 砖砖注讛 砖诇 诇讬诪讜讚 JavaScript 谞讜转谞转 诇谞讜 讛专讙砖讛 讛专讘讛 讬讜转专 讟讜讘讛 诪讗砖专 砖注讛 砖诇 爪驻讬讛 讘讞转讜诇讬诐 讘讟讬拽讟讜拽, 谞讜讻诇 诇讛转诪讬讚 讘诇讬诪讜讚 讛专讘讛 讬讜转专 讘拽诇讜转 讙诐 讗诐 诇讗 专讜讗讬诐 诪讬讚 讗转 讛转讜爪讗讜转. "讻讬祝" 诇讗 诪转讬讬讞住 诇讻诪讛 讗谞讬 专讜爪讛 诇注砖讜转 讚讘专 诪住讜讬诐 (诇驻谞讬 砖注砖讬转讬 讗讜转讜), 讗诇讗 讛讜讗 砖拽诇讜诇 砖诇讜拽讞 讘讞砖讘讜谉 讙诐 讗转 讛讛专讙砖讛 砖转讛讬讛 诇讬 讗讞专讬 砖讗注砖讛 讗转 讛讚讘专, 讜讗驻讬诇讜 讗转 讛讛专讙砖讛 砖转讛讬讛 诇讬 讘注讜讚 砖诇讜砖讛 讞讜讚砖讬诐 讻砖讗讘讬谉 讟讜讘 讬讜转专 讗转 诪讛 砖讗谞讬 讻讜转讘.
讻讬祝 讛讜讗 诪讜砖讙 讞砖讜讘 诪讻讚讬 诇讛讙讘讬诇 讗讜转讜 专拽 诇讛住讞讜转 讚注转. 砖讜讜讛 诇讛转讗诪抓 诇诪爪讜讗 讗转 讛讻讬祝 讙诐 讘讚讘专讬诐 砖讞砖讜讘 诇讻诐 诇拽讚诐.
1 419
# 讗转讙专讬诐 讘驻讬转讜讞 诪注专讻转 诪讘讜住住转 Micro Services
讻诇 讛住讬诪谞讬诐 诪专讗讬诐 砖诪讬拽专讜 住专讘讬住讬诐 讬讬砖讗专讜 讗讬转谞讜 讙诐 讘 2021: 讛讗驻砖专讜转 诇讛拽讬诐 讗讜转诐 讘诪讛讬专讜转 讘注谞谉, 讛讗驻砖专讜转 诇讛砖转诪砖 讘诪讙讜讜谉 砖驻讜转 转讻谞讜转, 讛讗驻砖专讜转 诇讞诇讜拽转 注讘讜讚讛 讟讜讘讛 讬讜转专 讘讬谉 爪讜讜转讬诐 讘讗专讙讜谉, 讻诇 讗诇讛 讛讜驻讻讬诐 讗转 讗专讻讬讟拽讟讜专转 Micro Services 诇诪砖讛讜 砖讗谞讞谞讜 专讜爪讬诐 诇砖诇讘 讘诪注专讻讜转 砖诇谞讜. 砖讜讜讛 诇砖讬诐 诇讘 砖注诐 讻诇 讛讟讜讘 砖诇 Micro Services 讬砖 讙诐 诇讗 诪注讟 讗转讙专讬诐 讬讬讞讜讚讬讬诐 诇讗专讻讬讟拽讟讜专讛 讝讜. 讛谞讛 专砖讬诪讛 讞诇拽讬转 砖诇讛诐:
## 谞讬讛讜诇 讝讛讜转
讛讗转讙专 讛专讗砖讜谉 砖谞讬转拽诇 讘讜 讻砖谞注讘讜专 诪诪注专讻转 诪讜谞讜诇讬讟 诇诪注专讻转 Micro Services 讬讛讬讛 谞讬讛讜诇 讝讛讜转 砖诇 讛诪砖转诪砖. 讘诪讜谞讜诇讬讟 诪砖转诪砖 诪讝讜讛讛 讘讚专讱 讻诇诇 讘讗诪爪注讜转 Cookie 讗讜 Token 讗讜转讜 讛讜讗 砖讜诇讞 诇砖专转 注诐 讻诇 讘拽砖讛.
讛砖专转 讛诪讜谞讜诇讬讟 诪讞讜讘专 讙诐 诇诪注专讻转 谞讬讛讜诇 讛讝讛讜讬讜转 讜讙诐 讬讜讚注 诇注砖讜转 讗转 讛讚讘专 砖讛诪砖转诪砖 专爪讛 诇注砖讜转, 诇讻谉 拽讜讚 诪讜谞讜诇讬讟 讬讻讜诇 拽讜讚诐 诇讘讚讜拽 砖诇诪砖转诪砖 讛谞讜讻讞讬 讬砖 讛专砖讗讛 诇讘爪注 讗转 讛驻注讜诇讛 砖讛讜讗 专爪讛 诇注砖讜转 讜讗讞专 讻讱 讙诐 诇讘爪注 讗转 讗讜转讛 驻注讜诇讛.
讘 Micro Services 讛讞讬讬诐 拽爪转 讬讜转专 诪讜专讻讘讬诐: 诪注专讻转 谞讬讛讜诇 讛讝讛讜讬讜转 转谞讜讛诇 诇专讜讘 讘转讜专 Service 谞驻专讚, 讜诇讻谉 诇驻谞讬 讻诇 驻注讜诇讛 讛 Service 砖专讜爪讛 诇讘爪注 讗讜转讛 爪专讬讱 诇驻谞讜转 诇 Service 谞讬讛讜诇 讛讝讛讜讬讜转 讻讚讬 诇讜讜讚讗 砖诪讜转专 诇诪砖转诪砖 诇讘爪注 讗转 讛驻注讜诇讛 砖讛讜讗 专讜爪讛 诇讘爪注. 住专讘讬住 讛讝讛讜讬讜转 讬讛讬讛 讗讞讚 讛注诪讜住讬诐 讘诪注专讻转 讜谞驻讬诇讛 讗驻讬诇讜 讝诪谞讬转 砖诇讜 注诇讜诇讛 诇砖转拽 讗转 讛诪注专讻转 讻讜诇讛.
## 谞讬讟讜专 讛转诪讜讚讚讜转 注诐 转拽诇讜转
讘诪注专讻转 诪讜谞讜诇讬讟 讻砖讬砖 转拽诇讛 讻讜诇诐 讬讜讚注讬诐 注诇讬讛 讜诪讛专 诪讗讜讚 讝讛 讬讙讬注 诇讘谉 讗讚诐 砖讬讻谞住 诇讗转讞诇 讗转 讛砖专转 讗讜 诇转拽谉 讗转 讛讘注讬讛. 讘诪注专讻转 诪讘讜住住转 注诇 Micro Services 转拽诇讛 讘住专讘讬住 诪住讜讬诐 讬讻讜诇讛 讘拽诇讜转 诇注讘讜专 诇谞讜 诪转讞转 诇专讚讗专, 讗讜 诇讛砖驻讬注 注诇 住专讘讬住讬诐 讗讞专讬诐.
讘注讘讜讚讛 注诐 诪讬拽专讜 住专讘讬住讬诐 讞讜讘讛 诇讛讞讝讬拽 Dashboard 诪住讜讚专 砖诪专讗讛 诪讛 诪爪讘 讛讞讬讬诐 砖诇 讻诇 住专讘讬住 讜诪转专讬注 讻砖讗讞讚 讛住专讘讬住讬诐 诇讗 诪转驻拽讚. 讘谞讜住祝 爪专讬讱 讚专讱 讟讜讘讛 诇讛住转讻诇 讘爪讬谞讜专讜转 讘讬谉 讛住专讘讬住讬诐 讻讚讬 诇讜讜讚讗 砖讛讜讚注讜转 诇讗 谞转拽注讜转 讘讗讞讚 讛爪讬谞讜专讜转.
讛讬讘讟 谞讜住祝 砖诇 谞讬讟讜专 讛讜讗 谞讬讛讜诇 讘讬爪讜注讬诐: 讘诪注专讻转 诪讜谞讜诇讬讟 拽诇 诇专讗讜转 诪转讬 讻诇 讘拽砖讛 讛转拽讘诇讛 讜诪转讬 讛讟讬驻讜诇 讛住转讬讬诐. 讘诪注专讻转 Micro Services 讞砖讜讘 诇讛讬讜转 诪住讜讙诇讬诐 讙诐 讻谉 诇注拽讜讘 讗讞专 诪住诇讜诇 砖诇 "驻注讜诇讛 诪诇讗讛" 讜诇专讗讜转 讗转 讛讝诪谉 砖讻诇 Service 诪砖拽讬注 讘讟讬驻讜诇 讘讛 讻讚讬 诇讜讜讚讗 砖讗祝 Service 诇讗 诪讗讟 诇谞讜 讗转 讻诇 讛诪注专讻转.
## 谞讬讛讜诇 Logs
讛诪注讘专 诇 Micro Services 讬讻专讬讞 讗讜转谞讜 诇讛转诪讜讚讚 注诐 诪住驻专 诇讜讙讬诐 讘诪拽讘讬诇 讜诇讛讬讜转 诪住讜讙诇讬诐 诇讗讞讚 讘讬谞讬讛诐 讻讚讬 诇注拽讜讘 讗讞专 Request 诪住讜讬诐 诪讛专讙注 砖讛讜讗 谞讻谞住 诇诪注专讻转, 讚专讱 讻诇 讛 Services 砖讟讬驻诇讜 讘讜 讜注讚 砖讛转砖讜讘讛 讞讜讝专转 诇诇拽讜讞. 讻诪注讟 转诪讬讚 讘诪注专讻转 讙讚讜诇讛 谞砖转诪砖 讘诪注专讻转 谞讬讛讜诇 诇讜讙讬诐 诪住讜讚专转 砖转专讗讛 诇谞讜 讘诇讜讞 讘拽专讛 讗讞讚 讗转 讛诇讜讙讬诐 砖诇 讻诇 讛住专讘讬住讬诐.
## 拽讜砖讬 讘转讞讝讜拽讛 讻砖讛爪讜讜转 诪转讞诇祝
讬讞讚 注诐 讛讗转讙专讬诐 讛转驻注讜诇讬讬诐 讬讛讬讜 诇谞讜 讙诐 讗转讙专讬诐 讘爪讚 讛驻讬转讜讞 讜讛转讞讝讜拽讛 砖诇 讛拽讜讚. 讟讻谞讜诇讜讙讬讛 砖谞专讗转讛 诪讗讜讚 讟专谞讚讬转 讘专讙注 诪住讜讬诐 讬讻讜诇讛 讗讞专讬 砖谞转讬讬诐 诇讛讬专讗讜转 诪讬讜砖谞转. 诪讗讞专 讜 Micro Services 谞讻转讘讬诐 讘讚专讱 讻诇诇 讘讻诇 诪讬谞讬 砖驻讜转 转讻谞讜转 诇驻讬 讛注讚驻讜转 讛诪驻转讞讬诐 砖讻讜转讘讬诐 讗转 讛住专讘讬住, 拽诇 诇诪爪讜讗 讗转 注爪诪谞讜 砖谞转讬讬诐 讗讞专讬 注诐 住专讘讬住讬诐 讘 erlang 砖讗祝 讗讞讚 诇讗 讬讜讚注 讗讬讱 诇转讞讝拽. 讛讛诪诇爪讛 讘诪拽专讛 讻讝讛 讛讬讗 诇砖讻转讘 讗转 讛 Service 讻讜诇讜, 讗讘诇 诇讗 转诪讬讚 拽诇 诇诪爪讜讗 诇讝讛 讝诪谉.
## 谞讬讛讜诇 讙讬专住讗讜转
讗转讙专 讗讞专讜谉 诇专砖讬诪讛 讝讜 讛讜讗 讛讙讬专住讗讜转. 讘讛谞讞讛 砖讗转诐 诇讗 诪转讻讜讜谞讬诐 诇讛讬转拽注 注诐 住专讘讬住讬诐 诪讬讜砖谞讬诐 诇讗讜专讱 砖谞讬诐, 讻谞专讗讛 砖诪讬砖讛讜 讬爪讟专讱 诇转讞讝拽 讗转 讛住专讘讬住讬诐 砖讗转诐 讻讜转讘讬诐, 诇转拽谉 讘讗讙讬诐 讜诇讛讜爪讬讗 讙讬专住讗讜转 讞讚砖讜转. 砖讬谞讜讬 讘住专讘讬住 讬讻讜诇 诇讬爪讜专 讗驻拽讟 讚讜诪讬谞讜 讜诇讞讬讬讘 砖讬谞讜讬 诪拽讘讬诇 讘住专讘讬住讬诐 谞讜住驻讬诐 砖转诇讜讬讬诐 讘讜 讜诇讻谉 讚讜专砖 住讬谞讻专讜谉 砖诇 讻诪讛 爪讜讜转讬诐. 砖讬讟讛 讟讜讘讛 讻讗谉 讛讬讗 诇谞住讜转 诇讗 诇砖谞讜转 API 砖诇 住专讘讬住 讗诇讗 专拽 讗转 讛诪讬诪讜砖 讛驻谞讬诪讬, 讜讗诐 讻讘专 诪砖谞讬诐 API 诇谞住讜转 诇砖诪讜专 注诇 转讗讬诪讜转 讗讞讜专讛.
诇住讬讻讜诐 驻讬转讜讞 诪注专讻转 诪讘讜住住转 Micro Services 讚讜专砖 砖讬讟转 诪讞砖讘讛 讜讙讬砖讛 讗讞专转 诇拽讜讚: 拽讜讚诐 讻诇 诪讘讞讬谞转 讻诇讬 注讘讜讚讛 讜谞讬讛讜诇 砖诇 讻诇 讛住专讘讬住讬诐, 讜讚讘专 砖谞讬 诪讘讞讬谞转 讙讬砖讛 诇驻讬转讜讞 讜诪讜讻谞讜转 诇砖讻转讘 住专讘讬住讬诐 讬砖谞讬诐 讜诇讘谞讜转 讞讚砖讬诐 讘诪拽讜诪诐 讘讗讜驻谉 砖讜讟祝.
讘驻专讜讬拽讟讬诐 拽讟谞讬诐 驻讬转讜讞 诪讘讜住住 住专讘讬住讬诐 讬讛讬讛 讗讬讟讬 讬讜转专 诪讗砖专 驻讬转讜讞 诪讜谞讜诇讬讟, 讘注讬拽专 讘讙诇诇 讛讛砖拽注讛 讘讛拽诪转 讜转讞讝讜拽转 讛转砖转讬转. 诇注讜诪转 讝讗转 注讘讜专 讗专讙讜谞讬诐 讙讚讜诇讬诐 讗讜 驻专讜讬拽讟讬诐 注谞拽讬讬诐 注讘讜讚讛 讘 Micro Services 讘讛讞诇讟 讬讻讜诇讛 诇驻转讜讞 讻讬讜讜谞讬诐 讞讚砖讬诐 砖诇 讙讚讬诇讛.
1 419
# 讻诇 诪讛 砖转专爪讛
讗讬讝讛 谞驻诇讗 讛讬讛 讛注讜诇诐 讗诐 讛讬讬谞讜 讬讻讜诇讬诐 驻砖讜讟 诇注砖讜转 讗转 诪讛 砖讗谞讞谞讜 专讜爪讬诐: 讗转讛 专讜爪讛 诇讻转讜讘 驻讜住讟 诇讘诇讜讙 讗讝 讗转讛 讬讜砖讘 讜讻讜转讘; 讗转讛 专讜爪讛 诇诇诪讜讚 讟讻谞讜诇讜讙讬讛 讞讚砖讛 讗讝 讗转讛 讬讜砖讘 注诇 讛拽讜专住 讜诇讜诪讚; 讗转讛 专讜爪讛 诇讛转讞讬诇 诇讛转注诪诇 讗讝 讗转讛 砖诐 砖注讜谉, 拽诐 讘讘讜拽专 讜讬讜爪讗 诇专讬爪讛.
砖诪注转讬 讗驻讬诇讜 砖讬砖 讗谞砖讬诐 砖讛讞讬讬诐 砖诇讛诐 注讜讘讚讬诐 讻讻讛. 讗诐 讗转诐 诪讗诇讛 讗转诐 讬讻讜诇讬诐 诇讛驻住讬拽 诇拽专讜讗 讻讗谉.
专讜讘谞讜 讚讬 讟讜讘讬诐 讘诇讞诇讜诐 讞诇讜诪讜转, 讬讜讚注讬诐 诪讛 爪专讬讱 讘砖讘讬诇 诇讛讙砖讬诐 讗转 讛讞诇讜诪讜转 讛讗诇讛 讜注讜爪专讬诐 诇驻谞讬 讛砖诇讘 砖诇 讛注砖讬讛 讗讜 讗讬驻砖讛讜 讘砖讘讜注讜转 讛专讗砖讜谞讬诐. 诇讞抓 讞讬讜讘讬 讛讜讗 讛讚专讱 砖诇谞讜 诇注讘讜讚 注诇 注爪诪谞讜 讻讚讬 诇注砖讜转 讚讘专讬诐 砖讗谞讞谞讜 专讜爪讬诐. 讛谞讛 讻诪讛 讟专讬拽讬诐 砖诇驻注诪讬诐 注讜讘讚讬诐:
1. 诇讛讻讬谉 专砖讬诪转 诪讟诇讜转 砖转诪讬讚 转讛讬讛 讝诪讬谞讛 讜砖讬讛讬讛 讘专讜专 诪讛 讛诪砖讬诪讛 讛讘讗讛 砖爪专讬讱 诇注砖讜转 (诇专讜抓 讞爪讬 砖注讛 诪讞专 讘讘讜拽专; 诇讻转讜讘 驻讜住讟 注诇 ES2021).
2. 诇讗专讙谉 讞讘专讬诐 砖讬讘讜讗讜 讗讬转讻诐 (讻讬 诇讗 谞注讬诐 诇讛讘专讬讝 诇拽讘讜爪转 专讬爪讛 讗讞专讬 砖讻讜诇诐 拽诪讜 诪讜拽讚诐 讘讙诇诇讻诐).
3. 诇专砖讜诐 讘讬讜诪谉 讝诪谉 住驻爪讬驻讬 诇注讘讜讚 注诇 讛驻专讜讬拽讟 讛讝讛 砖讗转诐 专讜爪讬诐 诇拽讚诐.
4. 诇住驻专 诇讞讘专 诪讛 讗转诐 诪转讻谞谞讬诐 诇注砖讜转 讜诪转讬, 讜诇讘拽砖 诪诪谞讜 砖讬住诪住 诇讻诐 讞爪讬 砖注讛 诇驻谞讬 诇讛讝讻讬专 砖讗转诐 爪专讬讻讬诐 诇注砖讜转 讗转 讛讚讘专 讛讝讛 (讜讙诐 讞爪讬 砖注讛 讗讞专讬 诇砖讗讜诇 讗讬讱 讛诇讱).
5. 讜讛讻讬 拽砖讛 - 诇讛砖转讬拽 讗转 讛诪讞砖讘讜转 讛诪爪讬拽讜转 砖诪砖讻谞注讜转 讗转讻诐 诇讜讜转专: 讻诪讜 讛诪讞砖讘讛 讛诪爪讬拽讛 砖转讜拽驻转 诪讬讚 讗讞专讬 砖拽诪转诐 诇专讜抓 讘讘讜拽专 砖讗讜诪专转 砖讗讜诇讬 讘注爪诐 住驻讜专讟 讝讛 诇讗 讻讝讛 讞砖讜讘 讜讝讛 讘讟讜讞 讛专讘讛 驻讞讜转 讞砖讜讘 诪注讜讚 砖注讛 砖讬谞讛, 讜诪讬 爪专讬讱 讗转 讝讛 注讻砖讬讜. 讗讜 讛诪讞砖讘讛 砖诪讟专讬讚讛 砖诪讜驻讬注讛 讗讬讱 砖讛转讞诇转诐 诇诇诪讜讚 谞讜砖讗 讞讚砖 砖讗讜诪专转 砖诪诪讬诇讗 讗祝 驻注诐 诇讗 转讛讬讜 讟讜讘讬诐 讘讝讛 讻讬 讬砖 讛诪讜谉 诪讛 诇诇诪讜讚 讜讞讘诇 注诇 讛讝诪谉.
讛讞诇讟讛 注诇 诪砖讬诪讜转 砖讞砖讜讘讜转 诇谞讜 讜讘讬爪讜注谉 讘讛转诪讚讛 砖诇讘 讗讞专讬 砖诇讘 讝讜 诪讬讜诪谞讜转. 讝讜 诪讬讜诪谞讜转 砖讗驻砖专 诇注讘讜讚 注诇讬讛, 讜讗讜诇讬 讛诪讬讜诪谞讜转 砖讛讻讬 讞砖讜讘 诇注讘讜讚 注诇讬讛.
1 419
# 讘讜讗讜 谞诪诪砖 诇讘讚 讗转 Promise.any 讘砖讘讬诇 诇讛讘讬谉 讗讬讱 讝讛 注讜讘讚
讗谞讬 诪诪砖讬讱 讘住讬讚专转 ES2021 砖诇 讛讘诇讜讙 讜讛驻讬爪'专 砖诇 讛讬讜诐 讛讜讗 讛转讜住驻转 Promise.any - 驻讜谞拽爪讬讛 诇讗 讻诇 讻讱 诪诇讛讬讘讛 注诐 Use Case 讗讞讚 砖讬诪讜砖讬. 讘讜讗讜 谞专讗讛 诪讛 讛讬讗 注讜砖讛 讜谞讘谞讛 讙讬专住讛 驻砖讜讟讛 诪砖诇谞讜 讻讚讬 诇讛讘讬谉 讗讬讱 讝讛 注讜讘讚.
## 讛驻讜谞拽爪讬讛 Promise.any
讛驻讜谞拽爪讬讛 Promise.any 诪拽讘诇转 讗讜住祝 砖诇 Promises 讜诪讞讝讬专讛 讗转 讛转讜爪讗讛 砖诇 讛 Promise 讛专讗砖讜谉 诪讛讗讜住祝 砖讛爪诇讬讞, 讗讜 讗诐 讻讜诇诐 谞讻砖诇讜 讛讬讗 转讞讝讬专 诪注专讱 注诐 讻诇 讛讻讬砖诇讜谞讜转. 讛谞讛 讚讜讙诪讛 驻砖讜讟讛 诇砖讬诪讜砖 讘驻讜谞拽爪讬讛:
function sleep(ms) {
return new Promise((resolve, reject) => {
if (ms <= 0) {
reject("Invalid Sleep Time");
} else {
setTimeout(() => (resolve(ms)), ms);
}
});
}
Promise.any([sleep(10), sleep(20), sleep(-5)]).then((ms) => console.log(`Done: ${ms}`));
讛拽讜讚 讻讘专 注讜讘讚 讘讚驻讚驻谞讬诐 讛拽专讜讘讬诐 讗诇讬讻诐 讜诪讚驻讬住 注诇 讛诪住讱 讗转 讛讛讜讚注讛: Done: 10.
## 讗讬讱 讘讜谞讬诐 讗转 讝讛
诪谞讙谞讜谉 Promises 讘 JavaScript 拽谞讛 诇注爪诪讜 砖诐 砖诇 诪谞讙谞讜谉 讚讬 诪住讜讘讱 讗讘诇 诇讚注转讬 诇讗 讘爪讚拽. 讛讘讟讞讛 讛讬讗 讘住讱 讛讻诇 讗讜讘讬拽讟 砖讬讻讜诇 诇讛转诪诪砖 讗讜 诇讛讬讻砖诇 诪转讬砖讛讜 讘注转讬讚, 讜讗谞讞谞讜 讬讻讜诇讬诐 诇讛讜住讬祝 诇讗讜转讛 讛讘讟讞讛 讛讜专讗讜转 砖讬讙讬讚讜 诇讛 诪讛 诇注砖讜转 讗诐 讛驻注讜诇讛 讛爪诇讬讞讛 讗讜 谞讻砖诇讛. 讛 Promise 讛讬讗 讘住讱 讛讻诇 讚专讱 诇讬讬爪讙 讞讬砖讜讘 讗住讬谞讻专讜谞讬.
讘诪拽专讛 砖诇 Promise.any 讗谞讞谞讜 专讜爪讬诐 诇讛讜住讬祝 诇讻诇 讗讞转 诪讛讛讘讟讞讜转 砖拽讬讘诇谞讜 砖谞讬 拽讟注讬 拽讜讚:
1. 讗诐 讛讛讘讟讞讛 诪爪诇讬讞讛 讗谞讬 讬讻讜诇 诇讛讞讝讬专 讗转 讛注专讱 砖诇讛 诇拽讜讚 砖讬爪专 讗讜转讬.
2. 讗诐 讛讛讘讟讞讛 谞讻砖诇讛 讗谞讬 诪讜住讬祝 讗转 讛讻讬砖诇讜谉 诇专砖讬诪转 讛讻砖诇讜谞讜转 讜讘讜讚拽 讗诐 讬砖 注讚讬讬谉 讞讬砖讜讘讬诐 驻注讬诇讬诐 讘专拽注. 讗诐 讗讬谉 讗谞讬 诪住讬讬诐 讜诪讞讝讬专 讗转 专砖讬诪转 讛讻讬砖诇讜谞讜转 讘转讜专 讻讬砖诇讜谉 砖诇讬.
拽讜讚? 讘专讜专:
Promise.any = function(promises) {
return new Promise((resolve, reject) => {
const errors = [];
let activePromisesCount = promises.length;
function successHandler(...value) {
activePromisesCount--;
resolve(...value);
}
function errorHandler(err) {
activePromisesCount--;
errors.push(err);
if (activePromisesCount === 0) {
reject(errors);
}
}
for (const p of promises) {
p.then(successHandler).catch(errorHandler);
}
});
}
讛讙讬专住讛 砖诇讬 讬讜转专 驻砖讜讟讛 诪讛 Spec 讜诇讗 诪讟驻诇转 讘讻诇 讛诪拽专讬诐 (诇讚讜讙诪讛 驻讜谞拽爪讬讬转 Promise.any 讛讗诪讬转讬转 转讬讻砖诇 讗诐 诪注专讱 讛 Promises 砖拽讬讘诇讛 讛讜讗 专讬拽), 讗讘诇 讛讬讗 讻谉 注讜讝专转 诇谞讜 诇讛讘讬谉 讗讬讱 诇砖讞拽 注诐 讗讜讘讬拽讟讬 Promise:
1. 讻砖讬砖 诇讬 讗讜讘讬拽讟 Promise 讘讬讚 讗谞讬 讬讻讜诇 诇讛讜住讬祝 诇讜 拽讜讚 讛爪诇讞讛 注诐 then 讜拽讜讚 讟讬驻讜诇 讘砖讙讬讗讜转 注诐 catch.
2. 讗诐 讗谞讬 诪讜住讬祝 拽讜讚讬诐 讻讗诇讛 诇诪住驻专 Promises, 讗谞讬 讬讻讜诇 诇住谞讻专谉 讘讬谞讬讛谉 讘讗诪爪注讜转 诪砖转谞讬诐 诪砖讜转驻讬诐.
讛诪砖转谞讛 errors 诪讬讬爪讙 讗转 讻诇 讛砖讙讬讗讜转 讘讞讬砖讜讘讬诐 讜讻讱 诪讗驻砖专 诇讬 讘住讜祝 诇讛讞讝讬专 讗转 讛砖讙讬讗讜转 砖诇 讻讜诇诐 讘诪讻讛 讗讞转; 讛诪砖转谞讛 activePromisesCount 诪讬讬爪讙 讗转 诪住驻专 讛讞讬砖讜讘讬诐 讛驻注讬诇讬诐, 讜讘讗诪爪注讜转 讛讜专讚讛 砖诇讜 讘-1 讻诇 驻注诐 砖讞讬砖讜讘 诪住转讬讬诐 讗谞讬 讬讻讜诇 诇讚注转 诪转讬 讛住转讬讬诪讜 讻诇 讛讞讬砖讜讘讬诐.
诇诪讬讚注 谞讜住祝 注诇 讛驻讜谞拽爪讬讛 诪讜诪诇抓 诇拽专讜讗 讘讚祝 讛转讬注讜讚 讘拽讬砖讜专 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/any.
## 诇诪讛 讝讛 讟讜讘
注讻砖讬讜 讗谞讞谞讜 诪讙讬注讬诐 诇 Money Time 砖诇 Promise.any 讜讗谞讬 讞讬讬讘 诇讛讜讚讜转 砖讛转砖讜讘讛 诇讗 诪讗讜讚 驻砖讜讟讛. 讛 Use Case 讛讬讞讬讚 砖讛爪诇讞转讬 诇讙专讚 诇驻讜谞拽爪讬讛 讝讜 讬讛讬讛 讘讘谞讬讬转 住讜讙 砖诇 Load Balancer 讛驻讜讱 讘爪讚 讛诇拽讜讞, 讻诇讜诪专 拽讜讚 砖爪专讬讱 诇诪砖讜讱 诪讬讚注 诪砖专转 讜讬讜讚注 砖讛诪讬讚注 讛讝讛 讝诪讬谉 注诇 诪住驻专 砖专转讬诐 讗讝 讛讜讗 讬驻谞讛 诇讻讜诇诐 讜讬诪砖讬讱 讘专讙注 砖讗讞讚 注讜谞讛 诇讜. 讘诪讬诇讬诐 讗讞专讜转 诪砖讛讜 讘住讙谞讜谉 讛讝讛:
const userData = await Promise.any([
axios.get('https://server1.app.com/user/10'),
axios.get('https://server2.app.com/user/10'),
axios.get('https://server3.app.com/user/10'),
]);
console.log(userData);
讛拽讜讚 驻讜谞讛 诇-3 砖专转讬诐 讘诪拽讘讬诇 讻讚讬 诇诪砖讜讱 讗转 谞转讜谞讬 讛诪砖转诪砖 讜讬讚驻讬住 讗转 讛诪讬讚注 诪讛砖专转 讛专讗砖讜谉 砖讬注谞讛. 讛讞讬住专讜谉 讛讜讗 注讜诪住 注诇 讛砖专转讬诐 讻讬 注讻砖讬讜 讻诇 讘拽砖转 Ajax 驻讜谞讛 诇-3 砖专转讬诐, 讗讘诇 讘诪爪讘讬诐 诪住讜讬诪讬诐 诪谞讙谞讜谉 讻讝讛 讗讜诇讬 讬讻讜诇 诇砖驻专 讘讬爪讜注讬诐 讘爪讚 诇拽讜讞 讘爪讜专讛 砖转讛讬讛 砖讜讜讛 讗转 讝讛.
讗诐 讬砖 诇讻诐 专注讬讜谞讜转 谞讜住驻讬诐 诪讛 讗驻砖专 诇注砖讜转 注诐 Promise.any 讗砖诪讞 诇砖诪讜注 讘转讙讜讘讜转.1 419
# 诇诪讛 replaceAll 讞砖讜讘讛 讗讞专讬 讛讻诇
讗讞转 讛转讜住驻讜转 讛诪讜讝专讜转 砖诇 ES2021 讛讬讗 讛驻讜谞拽爪讬讛 replaceAll. 讘诪讘讟 专讗砖讜谉 讗驻砖专 诇讞砖讜讘 砖谞讙诪专讜 诇讞讘专'讛 砖诐 讻诇 讛专注讬讜谞讜转 讜注讻砖讬讜 驻砖讜讟 诪讜住讬驻讬诐 讘砖讘讬诇 诇讛讜住讬祝. 讗讘诇 诇 replaceAll 讬砖 讟专讬拽 讗讞讚 讘砖专讜讜诇 砖讛讜驻讱 讗转 讛讻诇 诇砖讜讜讛 讗转 讝讛.
## 诪讛 注讜砖讛 replaceAll
讛驻讜谞拽爪讬讛 string.replace 讘 JavaScript 诪讞诇讬驻讛 讚讘专讬诐 讘转讜讱 诪讞专讜讝转 讜诪讞讝讬专讛 诪讞专讜讝转 讞讚砖讛 诪讜讞诇驻转. 讗驻砖专 诇讛砖转诪砖 讘讛 讻讚讬 诇讛讞诇讬祝 讟拽住讟 讗讜 讘讬讟讜讬 专讙讜诇讗专讬 讘讟拽住讟 讗讞专 讗讜 讘转讜爪讗转 讛驻注诇讛 砖诇 驻讜谞拽爪讬讛. 讛谞讛 砖转讬 讚讜讙诪讗讜转 诪讛转讬注讜讚:
const p = 'The quick brown fox jumps over the lazy dog. If the dog reacted, was it really lazy?';
console.log(p.replace('dog', 'monkey'));
// expected output: "The quick brown fox jumps over the lazy monkey. If the dog reacted, was it really lazy?"
const regex = /Dog/i;
console.log(p.replace(regex, 'ferret'));
// expected output: "The quick brown fox jumps over the lazy ferret. If the dog reacted, was it really lazy?"
讛专讘讛 讗谞砖讬诐 讻砖讛讬讜 爪专讬讻讬诐 诇讛讞诇讬祝 诪住驻专 诪讜驻注讬诐 砖诇 诪讬诇讛 讘诪讬诇讛 讗讞专转 讛砖转诪砖讜 讘讬讻讜诇转 砖诇 replace 诇拽讘诇 讘讬讟讜讬 专讙讜诇讗专讬 讜讛讜住讬驻讜 讗转 讛讚讙诇 g 诇住讜祝 讛讘讬讟讜讬:
console.log(p.replace(/dog/g, 'monkey'));
// expected output: "The quick brown fox jumps over the lazy monkey. If the monkey reacted, was it really lazy?"
注讻砖讬讜 讘 ES2021 拽讬讘诇谞讜 讗转 讛驻讜谞拽爪讬讛 replaceAll 讜讗谞讞谞讜 讬讻讜诇讬诐 讻讘专 诇讻转讜讘:
console.log(p.replaceAll('dog', 'monkey'));
// expected output: "The quick brown fox jumps over the lazy monkey. If the monkey reacted, was it really lazy?"
## 讗讝 诇诪讛 讝讛 讞砖讜讘?
讛讘注讬讛 注诐 砖讬讟转 讛讘讬讟讜讬讬诐 讛专讙讜诇讗专讬讬诐 诪转讙诇讛 讻砖讗谞讞谞讜 专讜爪讬诐 诇讛讞诇讬祝 拽诇讟 砖讛讙讬注 诪诪拽讜专 讞讬爪讜谞讬. 讘讬讟讜讬 专讙讜诇讗专讬 讬讻讜诇 诇讻诇讜诇 转讜讜讬诐 诪讬讜讞讚讬诐 砖讗讜转诐 讬讛讬讛 拽砖讛 诇讛讞诇讬祝. 讛谞讛 讚讜讙诪讛 驻砖讜讟讛 砖诇讗 注讜讘讚转:
const t1 = '*** hello ***';
const t2 = '*';
console.log(t1.replace(/t2/g, '-'));
讻砖讛拽诇讟 诪讙讬注 诪诪拽讜专 讞讬爪讜谞讬 讗讬谉 诇谞讜 讚专讱 诇讛讘讟讬讞 砖讛讜讗 诇讗 讬讻诇讜诇 转讜讜讬诐 诪讬讜讞讚讬诐 砖讬拽诇拽诇讜 讗转 讛讘讬讟讜讬 讛专讙讜诇讗专讬. 谞讻讜谉, 讗驻砖专 转诪讬讚 诇讛专讬抓 拽讜讚 砖诪讘爪注 Escaping 诇讻诇 转讜 诪讬讜讞讚, 讗讘诇 诇讗 讻讜诇诐 讝讜讻专讬诐 诇注砖讜转 讗转 讝讛 讜讟注讜转 讘拽讜讚 讻讝讛 讬讻讜诇讛 诇讙专讜诐 诇讘讗讙讬诐 诪住转讜专讬讬诐.
注诐 replaceAll 讻讘专 讗讬谉 诇谞讜 讘注讬讜转, 讜讙诐 讛拽讜讚 讬讜爪讗 讛专讘讛 讬讜转专 讘专讜专:
const t1 = '*** hello ***';
const t2 = '*';
console.log(t1.replaceAll(t2, '-'));
// --- hello ---
诇诪讬讚注 谞讜住祝 注诇 讛驻讜谞拽爪讬讛 砖讜讜讛 诇讛注讬祝 诪讘讟 讘讚祝 讛转讬注讜讚 讘拽讬砖讜专: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/replaceAll.1 419
# 讛讘讚讬拽讛 讛专讗砖讜谞讛
讛讘讚讬拽讛 讛专讗砖讜谞讛 砖转讻转讘讬 讘诪注专讻转 诇讗 爪专讬讻讛 诇讘讚讜拽 讻诪注讟 讻诇讜诐: 诪住驻讬拽 诇讘讚讜拽 砖-1 砖讜讜讛 1 讗讜 砖诪砖讛讜 砖爪专讬讱 诇讛讜驻讬注 注诇 讛诪住讱 讘讗诪转 诪讜驻讬注. 讛讘讚讬拽讛 讛专讗砖讜谞讛 砖转讻转讘讬 讘诪注专讻转 讛讬讗 讻诪讜 讛住讬讘讜讘 讛专讗砖讜谉 砖诇 讘讜专讙 砖讛讬讛 转拽讜注 讛诪讜谉 讛诪讜谉 讝诪谉, 讜注讻砖讬讜 爪专讬讱 讗转 讻诇 讛讻诇讬诐 讛讻讘讚讬诐 专拽 讘砖讘讬诇 诇讛讝讬讝 讗讜转讜 讻诪讛 诪讬诇讬诪讟专讬诐.
讝讛 讘住讚专 讙诪讜专 讜讗驻讬诇讜 诪讗讜讚 诪砖诪讞 诇讛转讞讬诇 注诐 讘讚讬拽讛 砖谞专讗讬转 讻讱:
describe("my test", () => {
it("just works", () => {
expect(1).toEqual(1);
});
});
讻讬 讛讘讚讬拽讛 讛专讗砖讜谞讛 谞转谞讛 诇讱 讗转 npm run test 讜讗转 "讗讬驻讛 砖诪讬诐 讗转 转讬拽讬讬转 讛讘讚讬拽讜转?" 讜讗转 拽讜讘抓 讛讗讬转讞讜诇 砖诇 jest 讜讗转 讻诇 讛砖讙讬讗讜转 砖讬讜驻讬注讜 讻砖转驻注讬诇讬 讗转 讛诪注专讻转 讘诪爪讘 讘讚讬拽讛. 讗谞讬 讬讜讚注 砖讝讛 诇讗 谞专讗讛 讛专讘讛 讻砖诪住转讻诇讬诐 注诇 讛转讜爪讗讛, 讗讘诇 砖谞讬谞讜 讬讜讚注讬诐 砖讝讛 诇拽讞 讛诪讜谉 注讘讜讚讛 诇讛讙讬注 诇砖诐.
讛讘讚讬拽讛 讛专讗砖讜谞讛 讘诪注专讻转 讛讬讗 讛诪讚专讙讛 讛专讗砖讜谞讛. 注讻砖讬讜 讗驻砖专 诇注砖讜转 Copy/Paste 讜诇讛诪砖讬讱 诇讻转讜讘 讗转 讛讘讚讬拽讛 讛砖谞讬讛, 讛砖诇讬砖讬转 讜讛-500. 讜讘讻诇 爪注讚 诇讛诪砖讬讱 诇讙诇讜转 讟讻谞讬拽讜转 讘讚讬拽讛 讞讚砖讜转.1 419
# 讞讬讚转 React: 住讟讬讬讟 讜驻专讜驻住
讚谞讬转 讛转讜讻谞讬转谞讬转 专爪转讛 诇讻转讜讘 拽讜诪驻讜谞谞讟讛 砖诪讗驻砖专转 诇讛爪讬讙 注专讱 讜讙诐 诇注专讜讱 讗讜转讜. 讘砖讘讬诇 讝讛 讛讬讗 讬爪专讛 讘转讜讱 讛拽讜诪驻讜谞谞讟讛 砖讚讛 State 讘砖诐 isEditing 注诐 讛诇讜讙讬拽讛 讛讘讗讛:
1. 讗诐 讗谞讞谞讜 讘诪爪讘 爪驻讬讛 讛注专讱 砖诇 isEditing 讬讛讬讛 false 讜谞爪讬讙 讗诇诪谞讟 p 注诐 讛注专讱.
2. 讗诐 讗谞讞谞讜 讘诪爪讘 注专讬讻讛 讛注专讱 砖诇 isEditing 讬讛讬讛 true 讜谞爪讬讙 讗转 讛注专讱 讘转讜讱 input.
讛诪注讘专 讘讬谉 讛诪爪讘讬诐 讬讛讬讛 讘讗诪爪注讜转 诇讞讬爪讛 注诇 讻驻转讜专 砖讬讜驻讬注 诇讬讚 讛拽讜诪驻讜谞谞讟讛. 讛拽讜讚 谞专讗讛 讻讱:
function EditableText(props) {
const { value, setValue } = props;
const [ isEditing, setIsEditing ] = useState(false);
const inputRef = useRef(null);
function startEdit() {
setIsEditing(true);
}
function doneEdit() {
setValue(inputRef.current.value);
setIsEditing(false);
}
if (isEditing) {
return (
<>
<input type="text" ref={inputRef} defaultValue={value} />
<button onClick={doneEdit}>Save</button>
</>
);
} else {
return (
<>
<p>{value}</p>
<button onClick={startEdit}>Edit</button>
</>
);
}
}
讛讛专驻转拽谞讬诐 砖讘讬谞讬讻诐 讬讻讜诇讬诐 诇诪爪讜讗 讗转 讛拽讜讚 注讜讘讚 讘拽讜讚住谞讚讘讜拽住 讘拽讬砖讜专 https://codesandbox.io/s/objective-cloud-x4zm7?file=/src/App.js.
讗讞专讬 砖讘讜注讬讬诐 讻诇 讛诪讞诇拽讛 讛转讞讬诇讛 诇讛砖转诪砖 讘拽讜诪驻讜谞谞讟讛 砖诇 讚谞讬转 讜讛讞讘专讬诐 讛讙讬注讜 注诐 讚专讬砖讛 讞讚砖讛: 讗诐 讗驻砖专 砖讛拽讜诪驻讜谞谞讟讛 转讜驻讬注 讗讜讟讜诪讟讬转 讘诪爪讘 注专讬讻讛 讗诐 诇讗 注讘专 注专讱. 讗讬谉 讘注讬讛 讗诪专讛 讚谞讬转 讜注讚讻谞讛 讗转 砖讜专转 讛 useState 讘拽讜诪驻讜谞谞讟讛 诇讙讬专住讛 讛讘讗讛:
const [isEditing, setIsEditing] = useState(!value);
讛讗诐 讛转讬拽讜谉 砖诇 讚谞讬转 注讘讚? 诇诪讛? 讜讗诐 诇讗, 诪讛 注讜讚 爪专讬讱 讻讚讬 砖讗诐 讛注专讱 专讬拽 讛拽讜诪驻讜谞谞讟讛 转诪讬讚 转讜驻讬注 讘诪爪讘 注专讬讻讛?1 419
# 拽爪讘 注讘讜讚讛
讬砖讘转讬 诇讗 诪讝诪谉 注诐 讞讘专 诪转讻谞转 Java 砖注讜讘讚 讘转讞讜诐 砖诇 砖讬驻讜专 讘讬爪讜注讬诐 讘诪注专讻讜转 讙讚讜诇讜转. 讛讜讗 住讬驻专 砖讛讜讗 讬讜砖讘 注讻砖讬讜 讘专爪讬谞讜转 注诇 讗讬讝讛 讘讗讙 讜讗谞讬 讘砖讘讬诇 讛讛讝讚讛讜转 讛讜爪讗转 讗讬讝讛 诪砖驻讟 砖诇 "讻谉 诇驻注诪讬诐 讬讻讜诇 诇拽讞转 讻诪讛 讬诪讬诐 诇诪爪讜讗 讘注讬讬转 讘讬爪讜注讬诐 讘诪注专讻转". "讬诪讬诐?!" 讛讜讗 注谞讛 讘诇讬 诇讚注转 讗诐 诇爪讞讜拽 讗讜 诇讘讻讜转, "讻讘专 讻诪注讟 讞讜讚砖 讗谞讞谞讜 谞讗讘拽讬诐 讘讝讛 讜注讚讬讬谉 讗讬谉 拽爪讛 讞讜讟".
讻诪转讻谞转讬 Full Stack, 讞讜讚砖 注讘讜讚讛 注诇 讘讗讙 谞砖诪注 诇谞讜 谞爪讞. 讛转专讘讜转 讜讻诇讬 讛注讘讜讚讛 诪注讜讚讚讬诐 讗转 拽爪讘 讛驻讬转讜讞 讛讻讬 诪讛讬专 砖讗驻砖专 讜诇驻注诪讬诐 讬讜转专 诪讛讬专. 讛驻讬转专讜谉 讛谞驻讜抓 诇讘注讬讜转 讛讜讗 讞讬驻讜砖 讛讜讚注转 讛砖讙讬讗讛 讘 Stack Overflow. 讛驻讬转专讜谉 讛谞驻讜抓 诇讘谞讬讬转 专讻讬讘 诪诪砖拽 讞讚砖 讛讜讗 讞讬驻讜砖 讗讞专 讛讞讘讬诇讛 讛讞讜驻砖讬转 砖讻讘专 诪住驻拽转 讗转 讛专讻讬讘 讛讝讛, 讜讗驻讬诇讜 讻砖讻讘专 讻谉 讬讜砖讘讬诐 诇讻转讜讘 诇讘讚 拽讜讚 讻诇讬 讛驻讬转讜讞 砖诇谞讜 讛讜驻讻讬诐 讗转 讛讞讜讜讬讛 诇诪讬讬讚讬转: 砖谞讜 CSS 讜转专讗讜 讗转 讛转讜爪讗讛 诪讬讚 讘讚驻讚驻谉; 注讚讻谞讜 拽讜讚 JS 讜转专讗讜 讗转 讛转讜爪讗讛 讘 HMR 讗驻讬诇讜 讘诇讬 诇讟注讜谉 诪讞讚砖 讗转 讛注诪讜讚.
讗讬谉 专注 讘讝讛 砖诇讻诇 讚讬住讬驻诇讬谞讛 讬砖 讗转 讛拽爪讘 砖诇讛. 讻谉 讻讚讗讬 诇砖讬诐 诇讘 砖注讘讜讚讛 讘拽爪讘 诪讛讬专 讬讻讜诇讛 诇讘讜讗 注诇 讞砖讘讜谉 讗讬讻讜转 拽讜讚 讗讜 拽讬讚讜诐 诪拽爪讜注讬:
1. 讞讬驻讜砖 诪讛讬专 砖诇 讞讘讬诇讛 讘诪拽讜诐 诇讻转讜讘 诇讘讚 专讻讬讘 砖诇 Custom Select 讗讜诇讬 讬驻转讜专 讗转 讛讘注讬讛 讬讜转专 诪讛专, 讗讘诇 讬砖讗讬专 讗讜转谞讜 讘诇讬 讛谞讬住讬讜谉 讜讛转讜讘谞讜转 砖讛讬讬谞讜 诪拽讘诇讬诐 诪驻讬转讜讞 注爪诪讗讬 砖诇 专讻讬讘 讻讝讛.
2. 讞讬驻讜砖 诪讛讬专 砖诇 转砖讜讘讛 讜讛注转拽讛 诪 Stack Overflow 注诇讜诇 诇讛讘讬讗 讗讜转谞讜 诇讛讚讘拽转 拽讜讚 砖讗讬谞讜 讛讻讬 讬注讬诇 诇诪拽专讛 砖诇谞讜, 专拽 讘讙诇诇 砖讝讛 讛讚讘专 讛专讗砖讜谉 砖注讘讚.
3. 讛讚讞祝 诇讛专讗讜转 转讜爪讗讜转 诪讛专 诪讜谞注 诪讗讬转谞讜 诇注爪讜专 诇讘爪注 Refactoring 诇讞诇拽讬诐 讘诪注专讻转 砖讻讘专 讻转讘谞讜, 讗讜 诇讛砖拽讬注 讘讘谞讬讬转 转砖转讬讜转 砖诇 讘讚讬拽讜转 讬讞讬讚讛 砖讬注讝专讜 诇谞讜 诇驻转讞 拽讜讚 谞讻讜谉 讬讜转专 讘注转讬讚.
4. 讜诪讛 砖讬讜转专 讙专讜注, 讻砖讗谞讞谞讜 讻讘专 诪讙讬注讬诐 诇讛转诪讜讚讚 注诐 讘注讬讛 砖讘讗诪转 讗讬谉 诇讛 驻讬转专讜谉 诪讛讬专, 讗谞讞谞讜 谞砖讘专讬诐 讛专讘讛 诇驻谞讬 砖诪讙讬注讬诐 诇转讜爪讗讛 专拽 讘讙诇诇 砖讗谞讞谞讜 诇讗 诪注诇讬诐 讘讚注转谞讜 砖诪砖讛讜 讘转讻谞讜转 讗诪讜专 诇拽讞转 讬讜转专 诪讻诪讛 砖注讜转.
讘讚讬讜拽 讘讙诇诇 砖讛注讘讜讚讛 砖诇讻诐 讞砖讜讘讛 讜砖讛注转讬讚 砖诇讻诐 讞砖讜讘, 砖讜讜讛 诇砖讬诐 诇讘 诇 bias 砖讬砖 诇谞讜 诇讻讬讜讜谉 注讘讜讚讛 诪讛讬专讛 讜诇谞住讜转 诇砖讞拽 讗讬转讜. 诇讘讞讜专 诪砖讬诪讜转 (驻讞讜转 讞砖讜讘讜转) 砖讗谞讞谞讜 诪讜讻谞讬诐 诇讛转注诪拽 讘讛谉 讜诇驻转讜专 讗讜转谉 拽爪转 讬讜转专 诇讗讟 讗驻讬诇讜 砖讛讬讛 讗驻砖专 诪讛专. 讻讱 转讜讻诇讜 诇讛专讙讬诇 讗转 注爪诪讻诐 讜讗转 讛讗专讙讜谉 砖讬砖 讻诇 诪讬谞讬 住讜讙讬诐 砖诇 诪砖讬诪讜转, 讜砖讝讛 讘住讚专 讙诐 诇讛转注诪拽 讘诪砖讬诪讛 讬讜转专 诪讻诪讛 讬诪讬诐.
