7 padomi un triki programmā React
Vai meklējat veidus, kā uzlabot savu React kodu? Šajā rakstā sniegti padomi un triki, kas jāzina katram React izstrādātājam. Iegremdēsimies!
Uzziniet, kā JavaScript un TypeScript nodrošina ātru tīmekļa, mobilo un backend lietojumprogrammu izstrādi, izmantojot React, Node.js un modernās mākoņtehnoloģiju arhitektūras.
Frāzi "ātra attīstība" var interpretēt daudzos nepareizos veidos. Lai no tā izvairītos, paskaidrosim, kādas ir mūsu gaidas. Galvenais un svarīgākais ir budžets. Lai izveidotu daudzas vienas un tās pašas lietojumprogrammas versijas, mums ir vajadzīgi daudzi izstrādātāji no vairākiem tehnoloģiju pakāpieniem un jāmaksā katram no viņiem. Lai izveidotu vietējās mobilās lietotnes, mums ir nepieciešams dublēt mūsu kods labi darboties abās platformās - Android un iOS. Kopējā pieeja ir saglabāt abas lietojumprogrammas līdzīgas, izmantot vienu un to pašu API, saglabāt vienādu uzvedību utt. Rezultātā mums ir jādublē kods, lai izveidotu divas vienas un tās pašas lietojumprogrammas versijas. JS ir valoda, kas ļauj mums lai izveidotu mobilās lietojumprogrammas un tīmekļa vietne lietojumprogrammas vienlaicīgi. Šķiet neiespējami? Ļaujiet man paskaidrot, par ko es runāju.
Pieņemsim, ka vēlamies izveidot lietojumprogrammu, kas izmanto React bibliotēka. Šo bibliotēku var izmantot tīmekļa lietojumprogrammu un mobilo lietojumprogrammu veidošanai, izmantojot React. Lietojumprogrammas loģiskie mehānismi, piemēram, autorizācija, skaitļošana, filtrēšana. dati un tā tālāk, var veikt ar React āķiem. Svarīgākais ir tas, ka šos āķus var koplietot abas lietojumprogrammas versijas - tīmekļa un mobilā lietojumprogramma. Pateicoties šai iespējai, mums ir šādi ietaupījumi:
Apkopojot šo punktu - runa nav par to, ka viena kodu bāze darbosies ar visām lietojumprogrammas versijām, lai gan mēs varam sadalīt koplietošanas kodu un izmantot to katrā versijā, lai izstrādes process patiešām ātrāk.
Secinājums - ja vēlaties vienlaikus izveidot tīmekļa lietojumprogrammu un mobilo lietojumprogrammu, apsveriet React bibliotēku, kas var koplietot kodu bāzi lietojumprogrammas mobilajā un tīmekļa versijā.
Pirms dažiem gadiem, runājot par backend, droši vien tikai retais būtu iedomājies, ka tā uzturēšana būtu iespējama ar tādas valodas palīdzību kā. JS. Šīs valodas attīstība ir pārsteidzoša, un tās augļus var novākt līdz pat šai dienai.
Par ko es runāju? Ja jūs nolīgstat pareizo JS izstrādātāji, izrādās, ka viņi var rakstīt ne tikai lietojumprogrammas frontend, bet arī backend - tas ir, būt atbildīgi par datu apstrādi serverī, saziņu ar datubāzi, dažāda veida integrāciju utt. Joprojām šaubāties vai neesat pārliecināts par šo valodu? Šādai attieksmei nav iemesla! Backend izmantošana JS var īstenot divos populāros veidos - paplašināmā un konfigurējamā režīmā, ko mums var nodrošināt express.js, un strukturētā režīmā, izmantojot DI modeli - nest.js.
Abi risinājumi ir ļoti populāri un nodrošina daudzas ražošanas lietojumprogrammas, kuru īpašnieki ir savas nozares "tehnoloģiju giganti". Es domāju, ka tie ir pietiekami nobrieduši, lai pārliecinātu jūs izvēlēties kādu no tiem.
Ar to joprojām nepietiek? Līdzīgi kā kodu koplietošana starp tīmekļa un mobilajām lietojumprogrammām, backend var koplietot resursus gan ar pirmo, gan ar otro lietojumprogrammu. Atslēgas vārds, kas šeit jāizmanto, ir TypeScript - cita starpā tas ļauj mums koplietot kodu bāzi, t.i., kopīgu datu tipa definīciju visām platformām.
Ar lietojumprogrammām, kas veidotas tikai uz JavaScript / TypeScript kaudze, izmantojot monolītu, mēs ietaupām daudz kodu rindu, kas mums būtu jāduplicē dzimtajā programmēšanas valodā. No otras puses, izmantojot vienu un to pašu valodu visās frontēs, mēs varam dalīties ar milzīgu loģikas apjomu starp visām lietojumprogrammām, kas noteikti paātrinātu laiku, kurā var izveidot konkrētu lietojumprogrammu. Vai tas neizklausās lieliski?
Izrādās, ka pārlūkprogrammu lietojumprogrammu veidošanas tehnoloģijas ir lieliski piemērotas to lietojumprogrammu uzturēšanai, kuras izmantojam darbvirsmas formā - labs piemērs šeit var būt Slack. Slack ir lietojumprogramma, ko izmanto komanda saziņa - papildus standarta ziņojumapmaiņai tā piedāvā daudz dažādu funkcionalitāšu un dažāda veida ārējo integrāciju. Tas viss padara to par vienu no populārākajām lietojumprogrammām, ko galvenokārt izmanto IT nozarē.
Izrādās, ka arī Slack izmanto tīmekļa tehnoloģijas (un līdz ar to arī JavaScript), lai izveidotu lietojumprogrammas saskarni. Pamats, kas ļauj darbvirsmā palaist šādas lietojumprogrammas, ir elektrons. Grafisko saskarņu izveide, izmantojot tīmekļa tehnoloģijas, ļauj daudz vieglāk, ātrāk un vispārīgi vienlaicīgi izstrādāt lietojumprogrammas dažādām platformām.
Runājot par lietojumprogrammas frontend daļu, nav ilūziju, ka JS ir vienīgā un ekskluzīvā valoda, kas nodrošina šīs ekosistēmas darbību. Pagaidām nav dzīvotspējīgu alternatīvu, kas varētu aizstāt šo lietojumprogrammas daļu (lai gan es domāju, ka WebAssembly nākotnē var mūs pārsteigt). Tātad, runājot par JS briedumu frontendā - nav šaubu, ka tā ir vienīgā karaliskā.
Runājot par backend, daudzi izstrādātāji var šķist šokēti vai uzreiz noliegt, ka JS ir piemērota backend programmēšanas valoda. Tomēr šis jautājums ir jāanalizē objektīvi.
Daudzi mākoņa pakalpojumu sniedzēji nodrošina SDK, kas ļauj tieši izmantot mākonis metodes. Dīvaini, bet viena no populārākajām cilnēm, tieši blakus C#, Go un Java, ir Node.js. Izrādās, ka šī platforma ir ideāli piemērota, lai mērogotu un veidotu lietojumprogrammas, pamatojoties uz mikroservisi vai bezserveru arhitektūra. Secinājums - JS ir viena no populārākajām valodām, lai izstrādātu lietojumprogrammas, kas balstītas uz mikroservisu/bezserveru arhitektūru. Tālāk redzamajos ekrānos redzams, ka svētā trīsvienība (Google skaitļošanas pakalpojumi, AWS, Azure) no mākoņtelevīzijas pakalpojumu sniedzējiem ļauj mums veidot lietojumprogrammas, izmantojot mezgls.js.


Runājot par mezgla.js ekosistēmu, droši vien ikviens ir iepazinies ar bibliotēku express.js - tas ir vienkāršs un vienkāršs rīks, kas ļauj definēt ceļus un pēc tam tiem ievadīt atbilstošus datus, kas ir pareizi apstrādāti JS pusē. Vēl jo vairāk, modelis, kas tiek izmantots starp express.js apstrādātajiem HTTP pieprasījumiem, ir kļuvis par vienu no populārākajiem visā ekosistēmā un ir sava veida paraugs dažādām citām bibliotēkām, kas izmanto, piemēram, serverless arhitektūru.
Secinājums - JS ir pietiekami nobriedusi valoda, lai tajā varētu ievietot visas kartes un veidot gan frontendus, gan backendus. Turklāt tā ir diezgan svaiga valoda, kas viegli atrod savu vietu mūsdienu lietojumprogrammu arhitektūrā. Tas ir lieliski, ka programmētājs, kurš pārzina vienu valodu, var apgūt abas lietojumprogrammas puses (full stack).
JS koda izpildei visbiežāk tiek izmantots v8 dzinējs, ko darbina C++ valoda. Šis dzinējs, ko izstrādājusi Google, ir paredzēts tīmekļa platformām paredzēto lietojumprogrammu darbināšanai. Interesanti ir tas, ka šis dzinējs neinterpretē JS kodu. Tā vietā tas veic tā saukto "JIT" - "just in time compilation". Pateicoties tam, mums nav jāinterpretē JS kods rindu pa rindai, mēs to vienkārši kompilējam un izpildām. Tas ir vēl ātrāk un dod mums patiešām labus veiktspējas rezultātus.
Vai JS ir pietiekami godīgs attiecībā uz veiktspēju? Jā, ir. Ja vien algoritmi ir pietiekami godīgi, servera pusē nav problēmu izmantot JS. Otra lieta ir saglabāt savu kodu pēc iespējas asinhronāku. Izmantojot šos paņēmienus, jūsu kods var bez problēmām apstrādāt paralēlus pieprasījumus. Jums nav jārūpējas par tehnoloģiju maiņu veiktspējas dēļ - īpaši, ja lietojumprogrammas arhitektūra ir mērogojama.
Šajā rakstā jau esmu detalizēti aprakstījis veiktspēju un etalonus.
Šie ir desmitiem viedokļu par to, ka JS valoda dažos gadījumos uzvedas dīvaini, un tās lietošana ir kaut kas tāds, kas liks jums eksplodēt galvu izstrādes procesā. Es nevaru piekrist 🙂 Tāpat kā jebkurai citai valodai, arī tai ir vairāki modeļi/uzvedība, kas nav eleganti, bet, saprotot, kā tie darbojas un kādi ir to mērķi, izstrādāt lietojumprogrammas ar JS nav nepatīkami.
Īpaši piezīme par "asinhrono" tieši pirms JS dažiem izstrādātājiem liek satraukties. To ir grūti saprast, ja nav bijusi nekāda pieredze ar to. Tomēr tā ir JS daļa, kas ļauj mums viegli veidot mūsdienīgus risinājumus. Aplūkosim websockets: tā kā tās ir uz notikumiem balstītas - katra no savienotajām vienībām - lietotājs un serveris - var paralēli raidīt un saņemt notikumus. Ja kods, kas nodrošina šīs lietotnes darbību, ir pietiekami asinhronizēts un nebloķē galveno pavedienu, mēs varam viegli apstrādāt tūkstošiem pieprasījumu īsā laikā.
Salīdzināsim JS un PHP ar tīmekļa ligzdu kontekstu. PHP ir sinhronā programmēšanas valoda, tāpēc websocket tēmu risināšana sagādā lielas galvassāpes. Mēs redzam, ka PHP iegūst modeļus no JS, lai veidotu interaktīvas backend lietojumprogrammas, kurās var izmantot modernās tehnoloģijas, piemēram, webrtc vai websockets.
Apkopojot visus punktus kopā, varam konstatēt dažus faktus:
JavaScript ir valoda, ko var izmantot visdažādāko lietojumprogrammu veidošanai - gan tīmekļa, gan mobilo, gan darbvirsmas lietojumprogrammu;
JS rakstītās lietojumprogrammas var savstarpēji kopīgot dažādus koda fragmentus, piemēram, tos, kas ir atbildīgi par datu formatēšanu vai tipiem Typescript;
Pateicoties tīmekļa izaugsmei, JS piedāvātais veiktspējas līmenis ir pietiekami labs, lai izvēlētos gan frontend, gan backend lietojumprogrammu izstrādi;
Pateicoties neparastajam dizainam, JavaScript spēj atbalstīt modernas lietojumprogrammu infrastruktūras, piemēram, websockets un WebRTC;
Izstrādātājs ar atbilstošu kvalifikāciju var izmantot tās potenciālu katrā pieejamajā frontendā, kas nodrošina šo valodu;
JS ir valoda, kas jau vairākus gadus ieņem arvien augstāku vietu popularitātes tabulās, un nekas neliecina, ka tas varētu mainīties.
Lai sniegtu savu, protams, neobjektīvo viedokli - JavaScript iespējas atkārtoti izmantot vienu un to pašu kodu visās pieejamajās frontēs izmantošana noteikti paātrinās lietojumprogrammu izstrādi un samazinās to izstrādātāju skaitu, kas iesaistīti citās tehnoloģijās rakstītu lietojumprogrammu backend uzturēšanā. Kā apstiprinājumu atcerēsimies faktu, ka milzīgs skaits tā saukto IT milžu ievēro šo modeli un koplieto diezgan lielu daļu kodbāzes dažādās platformās. Neraugoties uz atšķirīgajiem viedokļiem par šo valodu, jāņem vērā, ka lietošanas statistika un apmierinātība ar tās lietošanu JS gadu no gada augt, un tās izstrādātāji var viegli iesaistīties pilna žetona tendencē.
Lasīt vairāk:
Kāpēc jums (iespējams) vajadzētu izmantot Typescript