Habr-dhamaadka hore ee diiwaanka horumariyaha: dib-u-habayn iyo milicsi

Habr-dhamaadka hore ee diiwaanka horumariyaha: dib-u-habayn iyo milicsi

Waxaan had iyo jeer xiisayn jiray sida Habr ay uga qaabaysan tahay gudaha, sida socodka shaqadu u habaysan yahay, sida isgaadhsiinta loo habeeyey, heerarka loo isticmaalo iyo sida koodka guud ahaan halkan loogu qoray. Nasiib wanaag, waxaan helay fursadan oo kale, sababtoo ah waxaan dhawaan ka mid noqday kooxda habra. Anigoo isticmaalaya tusaale yar oo dib u habeyn ah oo ah nooca mobilada, waxaan isku dayi doonaa inaan ka jawaabo su'aasha: waa maxay sida ay u egtahay in halkan laga shaqeeyo. Barnaamijka: Node, Vue, Vuex iyo SSR oo leh suugo laga soo qaatay qoraalo ku saabsan khibrad shakhsiyeed ee Habr.

Waxa ugu horreeya ee aad u baahan tahay inaad ka ogaato kooxda horumarinta ayaa ah inay jiraan dad yar oo naga mid ah. Kuma filna - kuwani waa saddex weji, laba gadaal iyo hormoodka farsamada Habr - Baxley oo dhan. Waxaa jira, dabcan, sidoo kale tijaabiye, naqshadeeye, saddex Vadim, xaaqin mucjiso ah, khabiir suuqgeyn ah iyo Bumburums kale. Laakiin waxaa jira lix wax ku biiriye toos ah oo keliya ilaha Habr. Tani waa dhif iyo naadir - mashruuc leh dad badan oo malaayiin doolar ah, kaas oo dibadda ka muuqda sida shirkad weyn, dhab ahaantii waxay u egtahay bilow raaxo leh oo leh qaab-dhismeedka urureed ee ugu macquulsan.

Sida shirkado kale oo badan oo IT ah, Habr wuxuu qirayaa fikradaha Agile, dhaqamada CI, waana intaas oo dhan. Laakiin marka loo eego dareenkayga, Habr ahaan badeecad ahaan waxay ku kobcayaan hirarka si ka badan si joogto ah. Haddaba, dhowr orod oo isku xigta, waxaan si taxadar leh wax u codeyneynaa, naqshadeyneynaa oo dib u habeyneynaa, wax jebineynaa oo hagaajineynaa, xallineynaa tigidhada oo aan abuurnay kuwo cusub, tillaabo qaadno oo naftayada lugaha ku toogan, si aan ugu dambeyntii u sii deyno astaanta wax soo saarka. Dabadeedna waxaa imanaysa waqti gaaban, muddo dib-u-horumarin ah, oo ah wakhti lagu sameeyo waxa ku jira "muhiim-maaha degdegga ah" afargeesoodka.

Si sax ah waa orodka "xilli-ka-baxsan" kaas oo hoos looga hadli doono. Markan waxa ku jiray dib-u-habayn lagu sameeyay nooca mobilka ee Habr. Guud ahaan, shirkaddu waxay rajo weyn ka qabtaa, mustaqbalkana waa inay beddeshaa dhammaan xayawaanka Habr ee jir-dhiska oo ay noqoto xal caalami ah oo isku-dhafan. Maalin maalmaha ka mid ah waxaa jiri doona qaabayn la qabsi ah, PWA, qaabka offline, habaynta isticmaalaha, iyo waxyaabo kale oo badan oo xiiso leh.

Aynu dejinno hawsha

Mar, meel-ka-soo-bax caadi ah, mid ka mid ah kuwa hore ayaa ka hadlay dhibaatooyinka ka jira qaab-dhismeedka qaybta faallooyinka ee nooca mobilada. Annaga oo tan maskaxda ku hayna, waxaan qabanqaabinay kulan-yar oo qaabaysan kooxda daaweynta nafsiga. Qof kastaa waxa uu ku celceliyay in uu yidhi meesha ay wax ku noqotay, wax walba warqad ayay ku duubeen, way u damqadeen, way fahmeen, marka laga reebo in aanay cidina u sacabbin. Natiijadu waxay noqotay liis ka kooban 20 dhibaato, taas oo caddaynaysa in Habr mobile uu weli leeyahay waddo dheer oo qodax leh oo guusha.

Waxaan ugu horrayn ka walaacsanahay waxtarka isticmaalka kheyraadka iyo waxa loo yaqaan interface fudud. Maalin kasta, wadada shaqada-guri-guriga, waxaan arkay teleefankeygii hore oo si quus ah isku dayaya inuu soo bandhigo 20 cinwaan oo quudinta ah. Waxay u ekayd sidan:

Habr-dhamaadka hore ee diiwaanka horumariyaha: dib-u-habayn iyo milicsiInterface Mobile Habr ka hor inta aan dib loo soo saarin

Maxaa halkan ka socda? Marka la soo koobo, server-ku wuxuu qof walba ugu adeegay bogga HTML si isku mid ah, iyadoon loo eegin in isticmaaluhu uu galay iyo in kale. Kadibna macmiilka JS waa la raray wuxuuna codsadaa xogta lagama maarmaanka ah mar labaad, laakiin lagu hagaajiyay ogolaanshaha. Taasi waa, run ahaantii waxaanu qabanay shaqo isku mid ah laba jeer. Interface-ka ayaa soo booday, isticmaaluhuna waxa uu soo dejiyay boqol kilobytes oo dheeraad ah. Si faahfaahsan wax kastaa waxay u muuqdeen kuwo aad uga sii foolxun.

Habr-dhamaadka hore ee diiwaanka horumariyaha: dib-u-habayn iyo milicsiNidaamkii hore ee SSR-CSR. Oggolaanshaha waxa kaliya oo suurtagal ah marxaladaha C3 iyo C4, marka Node JS aanu ku mashquulsanayn soo saarista HTML oo ay wakiil u tahay codsiyada API.

Qaab dhismeedkayaga wakhtigaas waxaa si sax ah u sharaxay mid ka mid ah isticmaalayaasha Habr:

Nooca moobilka ayaa ah mid xun. Waxaan u sheegayaa sida ay tahay. Isku darka xun ee SSR iyo CSR.

Waxay ahayd inaan qirno, si kasta oo ay u murugootay.

Waxaan qiimeeyay fursadaha, waxaan ku abuuray tigidh Jira oo leh sharraxaad heerka "waa xun hadda, si sax ah u samee" waxaanan kala gooyay hawshii istaroogga ballaaran:

  • dib u isticmaal xogta,
  • yaree tirada dib-u-celinta,
  • tirtir codsiyada nuqul ka mid ah,
  • ka dhig habka rarka si cad.

Aan dib u isticmaalno xogta

Aragti ahaan, gudbinta dhinaca server-ka waxaa loogu talagalay in lagu xalliyo laba dhibaato: in aan la dhibin xaddidaadaha mashiinka raadinta marka la eego Tilmaanta HBS oo hagaaji mitirka FMP (waxaa lama huraan ah inay sii xumaanayso TTI). In xaalad caadi ah in ugu dambeyntii waxaa lagu sameeyay Airbnb 2013 sanadka (wali ku yaal Laf-dhabarka.js), SSR waa isla codsi JS isomorphic ah oo ka socda deegaanka Node. Seerfarku wuxuu si fudud u soo diraa qaabka la sameeyay si uu uga jawaabo codsiga. Kadib fuuq-celinta waxay ku dhacdaa dhinaca macmiilka, ka dibna wax walba way shaqeeyaan iyada oo aan bogga dib loo soo celin. Habr, sida agabyo kale oo badan oo leh nuxurka qoraalka, samaynta serverku waa shay muhiim u ah dhisidda xidhiidh saaxiibtinimo oo lala yeesho makiinadaha raadinta.

Inkasta oo xaqiiqda ah in in ka badan lix sano ay ka soo wareegtay soo ifbaxa tignoolajiyada, iyo inta lagu jiro wakhtigan biyo badan ayaa dhab ahaantii ku qulqulay buundada adduunka hore, dad badan oo horumariya fikraddan ayaa weli ah mid qarsoodi ah. Ma aanan istaagin oo aan soo saarnay codsi Vue ah oo ay ku taageerayso SSR wax soo saarka, iyadoo ay naga maqan tahay hal tafaasiil yar: umaanaan dirin xaalada bilowga ah macmiilka.

Waa maxay sababtu? Su'aashan jawaab sax ah looma hayo. Ama ma aysan dooneynin inay kordhiyaan cabbirka jawaabta server-ka, ama sababtoo ah farabadan dhibaatooyinka kale ee dhismaha, ama si fudud uma dhicin. Si uun ama si kale, tuurista gobolka iyo dib u isticmaalida wax kasta oo serverku sameeyay waxay u muuqdaan kuwo ku habboon oo faa'iido leh. Hawshu runtii waa hawl yar- gobolka si fudud ayaa loo duraa gudaha macnaha fulinta, iyo Vue si toos ah ugu daraa qaabka la soo saaray sida doorsoome caalami ah: window.__INITIAL_STATE__.

Mid ka mid ah dhibaatooyinka soo kordhay waa karti la'aanta in loo beddelo qaab-dhismeedka meertada JSON (tixraac wareeg ah; waxaa lagu xalliyay in si fudud lagu beddelo qaab-dhismeedyadan oo kale kuwa dhiggooda ah.

Intaa waxaa dheer, marka aad la macaamilayso nuxurka UGC, waa inaad xasuusataa in xogta loo beddelo qaybaha HTML si aan loo jebin HTML. Ujeedooyinkan waxaan u isticmaalnaa he.

Yaraynta dib-u-qaabaynta

Sida aad ka arki karto jaantuska sare, kiiskeena, hal tusaale oo Node JS ah ayaa qabta laba hawlood: SSR iyo "proxy" ee API, halkaasoo oggolaanshaha isticmaaluhu uu dhaco. Xaaladdan ayaa ka dhigaysa mid aan suurtagal ahayn in la oggolaado inta koodhka JS uu ku shaqaynayo serferka, maadaama ay noodhka hal-xidhaale yahay, shaqada SSR-na ay tahay mid siman. Taasi waa, Server-ku si fudud uma soo diri karo codsiyo iyada oo wicitaanku ku mashquulsan yahay wax. Waxaa soo baxday in aan dib u cusbooneysiinay gobolka, laakiin interface-ku ma joojin kicinta, maaddaama xogta macmiilka ay ahayd in la cusbooneysiiyo iyada oo la tixgelinayo fadhiga isticmaalaha. Waxaan u baahanahay inaan barno codsigeena si aan u dhigno xogta saxda ah xaalada bilowga ah, anagoo tixgelinayna gelitaanka isticmaalaha.

Waxaa jiray laba xal oo kaliya ee dhibaatada:

  • ku lifaaq xogta oggolaanshaha codsiyada isdhaafsiga;
  • U kala qaybin lakabyada Node JS laba tusaale oo kala duwan.

Xalka ugu horreeya wuxuu u baahday isticmaalka doorsoomayaasha caalamiga ah ee server-ka, kan labaadna wuxuu kordhiyay waqtiga kama dambaysta ah ee dhammaystirka hawsha ugu yaraan hal bil.

Sidee loo doortaa? Habr inta badan waxa ay ku socotaa dariiqa iska caabinta ugu yar. Si aan rasmi ahayn, waxaa jira rabitaan guud oo ah in la dhimo wareegga laga bilaabo fikradda tusaalaha ilaa ugu yaraan. Qaabka hab-dhaqanka ku wajahan alaabada ayaa xoogaa xasuusinaysa qoraalada booking.com, iyada oo ay ku kala duwan yihiin kaliya in Habr uu si dhab ah u qaato jawaab celinta isticmaalaha oo uu kugu kalsoonaado, horumariye ahaan, inaad samayso go'aamadan.

Anigoo raacaya macquulkan iyo rabitaankayga ah inaan si dhakhso ah u xalliyo dhibaatada, waxaan doortay doorsoomayaasha caalamiga ah. Iyo, sida badanaa dhacda, waa inaad bixisa si dhakhso ah ama dambe. Waxaan bixinay ku dhawaad ​​isla markiiba: waxaan shaqeynay usbuuca dhammaadka, nadiifinta cawaaqibka, qor dhimashada dhimashada wuxuuna bilaabay inuu server-ka u qaybiyo laba qaybood. Khaladku aad buu doqonnimo u ahaa, bug-ku-dheggiisuna ma fududayn in la soo saaro. Oo haa, waa ceeb tan, laakiin si uun ama si kale, ku turunturood iyo taah, PoC-gayga oo leh doorsoomayaal caalami ah si kastaba ha ahaatee wuxuu galay wax soo saarka wuxuuna si guul leh u shaqeynayaa isagoo sugaya u dhaqaaqista qaab dhismeedka "laba-node" cusub. Tani waxay ahayd tallaabo muhiim ah, sababtoo ah si rasmi ah yoolkii ayaa la gaaray - SSR waxay baratay inay bixiso bog gebi ahaanba diyaar u ah in la isticmaalo, UI-guna wuxuu noqday mid aad u deggan.

Habr-dhamaadka hore ee diiwaanka horumariyaha: dib-u-habayn iyo milicsiInterface Mobile Habr ka dib marxaladii ugu horeysay ee dib u habeynta

Ugu dambayntii, nashqada SSR-CSR ee nooca moobilka ayaa keenaya sawirkan:

οΏΌHabr-dhamaadka hore ee diiwaanka horumariyaha: dib-u-habayn iyo milicsi"Laba-node" SSR-CSR wareegga. Node JS API had iyo jeer waxay diyaar u tahay asynchronous I/O oo aan xannibin shaqada SSR, maadaama kan dambe uu ku yaal tusaale gaar ah. Silsilad weydiinta #3 looma baahna.

Tirtirka codsiyada nuqul ka mid ah

Ka dib markii wax-is-daba-marinta la sameeyay, samayntii hore ee bogga ma sii kicinin qalalka. Laakiin isticmaalka dheeraadka ah ee Habr ee qaabka HBS ayaa wali keenay jahawareer.

Maadaama saldhigga socodka isticmaaluhu uu yahay wareejinta foomka liiska maqaallada β†’ maqaal β†’ faallooyin iyo lidka ku ah, waxaa muhiim ahayd in la wanaajiyo isticmaalka kheyraadka silsiladan marka hore.

Habr-dhamaadka hore ee diiwaanka horumariyaha: dib-u-habayn iyo milicsiKu soo noqoshada quudinta boostada waxay kicisaa xog cusub

Looma baahnayn in la qodo. Shaashadda kor ku xusan waxaad arki kartaa in codsigu dib u codsanayo liiska maqaallada marka dib loo soo celinayo, iyo inta lagu jiro codsiga ma aragno maqaallada, taas oo macnaheedu yahay in xogtii hore ay meesha ka baxdo. Waxay u egtahay in qaybta liiska maqaalku isticmaasho dawlad maxalli ah oo ay ku lumiso burburinta. Dhab ahaantii, codsigu wuxuu isticmaalay dawlad caalami ah, laakiin dhismaha Vuex ayaa si madax-bannaan loo dhisay: modules waxay ku xiran yihiin bogag, taas oo iyana ku xiran waddooyinka. Intaa waxaa dheer, dhammaan cutubyada waa "la tuuri karo" - booqasho kasta oo xigta ee bogga waxay dib u qortaa cutubka oo dhan:

ArticlesList: [
  { Article1 },
  ...
],
PageArticle: { ArticleFull1 },

Guud ahaan, waxaan haysanay module Liiska Maqaallada, oo ka kooban walxo nooca Qodobka iyo module Maqaalka Bogga, kaas oo ahaa nooca la fidiyay ee shayga Qodobka, nooc ka mid ah ArticleFull. Guud ahaan, hirgelintani ma aha mid laftiisa sidday wax laga cabsado - waa mid aad u fudud, xitaa waxaa laga yaabaa in la yiraahdo wax fudud, laakiin si aad ah loo fahmi karo. Haddii aad dib u dejiso moduleka mar kasta oo aad beddesho jidka, markaa xitaa waad la noolaan kartaa. Si kastaba ha ahaatee, u dhaqaaqista inta u dhaxaysa quudinta maqaallada, tusaale ahaan /feed β†’ /dhammaan, waa la dammaanad qaaday inuu iska tuuro wax kasta oo la xidhiidha quudinta shakhsi ahaaneed, maadaama aan mid keliya haysano Liiska Maqaallada, kaas oo aad u baahan tahay inaad geliso xog cusub. Tani waxay mar kale noo horseedaysaa nuqul ka mid ah codsiyada.

Markii aan ururiyay wax kasta oo aan awooday in aan dul istaago mowduuca, waxaan sameeyay qaab-dhismeed cusub oo dawladeed oo aan u bandhigay asxaabtayda. Dooduhu waxay ahaayeen kuwo aad u dheer, balse ugu dambayntii dooda la isku raacay ayaa ka miisaan badnayd shakigii, waxaanan bilaabay fulinta.

Caqliga xalku waxa uu si fiican u muujinayaa laba tallaabo. Marka hore waxaan isku dayeynaa inaan ka saarno moduleka Vuex boggaga oo si toos ah ugu xirno wadooyinka. Haa, waxaa jiri doona xog yar oo badan oo dukaanka ah, getters waxay noqon doontaa wax yar oo kakan, laakiin ma dhejin doono maqaallo laba jeer ah. Nooca mobaylka, tani waa laga yaabaa inay tahay doodda ugu adag. Waxay u ekaan doontaa sidatan:

ArticlesList: {
  ROUTE_FEED: [ 
    { Article1 },
    ...
  ],
  ROUTE_ALL: [ 
    { Article2 },
    ...
  ],
}

Laakiin ka waran haddii liisaska maqaalku ay isku dhejin karaan inta u dhaxaysa wadooyin badan iyo maxaa dhacaya haddii aan rabno inaan dib u isticmaalno xogta shayga Qodobka si loo sameeyo bogga boostada, oo loo rogo ArticleFull? Xaaladdan oo kale, waxay noqon doontaa mid macquul ah in la isticmaalo qaab-dhismeedkan:

ArticlesIds: {
  ROUTE_FEED: [ '1', ... ],
  ROUTE_ALL: [ '1', '2', ... ],
},
ArticlesList: {
  '1': { Article1 }, 
  '2': { Article2 },
  ...
}

Liiska Maqaallada halkan waa nooc ka mid ah kaydka maqaallada. Dhammaan maqaallada la soo dejiyay intii lagu jiray kalfadhiga isticmaalaha Waxaan ula dhaqanaa si taxadar leh, sababtoo ah tani waa taraafikada laga yaabo in lagu soo dejiyo xanuunka meel ka mid ah metro inta u dhaxaysa saldhigyada, waxaana hubaal ah ma rabno inaan xanuunkan u keeno isticmaalaha mar kale annaga oo ku qasbaya inuu ku shubo xogta uu hore u haystay. la soo degsaday. Shay ArticlesIds si fudud waa noocyo kala duwan oo aqoonsi ah (sida haddii "links") walxaha Qodobka. Qaab dhismeedkani wuxuu kuu ogolaanayaa inaad iska ilaaliso nuqul ka mid ah xogta caadiga ah ee wadooyinka iyo dib u isticmaalka shayga Qodobka markaad samaynayso bogga boostada adoo ku daraya xogta la dheereeyey.

Waxa kale oo ka soo baxay liiska maqaaladu waxa ay noqotey mid hufan: qaybta dib u habaynta waxa ay ku soo celisaa habaynta iyada oo wadata aqoonsiga maqaalka oo ay sawirtaa qaybta teaserka, iyada oo u gudbisa Id sida qalab ahaan, qaybta ilmahana, waxay ka soo saartaa xogta lagama maarmaanka ah Liiska Maqaallada. Markaad tagto bogga daabacaadda, waxaan ka helnaa taariikhda hore u jirtay Liiska Maqaallada, waxaan codsaneynaa inaan helno xogta maqan oo aan si fudud ugu darno shayga jira.

Waa maxay sababta habkani u wanaagsan yahay? Sida aan kor ku qoray, habkani waa mid aad u jilicsan marka la eego xogta la soo dejiyey wuxuuna kuu ogolaanayaa inaad dib u isticmaasho. Laakiin tan ka sokow, waxay u furaysaa qaar ka mid ah fursadaha cusub ee ku habboon qaab-dhismeedka noocaas ah. Tusaale ahaan, codaynta iyo rarista maqaallada quudinta sida ay u muuqdaan. Waxaan si fudud u gelin karnaa qoraaladii ugu dambeeyay "kaydinta" Liiska Maqaallada, kaydi liis gaar ah oo aqoonsiyo cusub ah ArticlesIds oo ogeysii isticmaalaha wax ku saabsan. Marka aan gujino badhanka "muuji daabacaado cusub", waxaan si fudud u gelin doonaa Ids cusub bilawga liiska maqaallada hadda wax walbana waxay u shaqeyn doonaan sixir.

Ka dhigaya soo dejinta mid aad u xiiso badan

Cajiibka keega dib-u-soo-celinta ayaa ah fikradda qalfoofka, taas oo ka dhigaysa habka wax looga soo dejiyo internetka gaabis ah wax yar oo laga yaqyaqsado. Ma jirin wax wada hadal ah oo arrintan ku saabsan, dariiqa laga bilaabo fikradda ilaa tusaalaha waxay qaadatay macno ahaan laba saacadood. Naqshaduhu si dhab ah ayuu isu sawiray, waxaanan barnay qaybahayagu inay sameeyaan kuwo fudud, oo si dhib yar u libiqsanaya div blocks inta aan sugeyno xogta. Ujeeddo ahaan, habkan rarida ayaa dhab ahaantii hoos u dhigaya qadarka hormoonnada walaaca ee jidhka isticmaalaha. Qalfoofka ayaa u eg sidan:

Habr-dhamaadka hore ee diiwaanka horumariyaha: dib-u-habayn iyo milicsi
Habraloading

Milicsiga

Waxaan ka shaqaynayay HabrΓ© lix bilood saaxiibadayna wali way i weydiyaan: si fiican, sideed u jeceshahay halkaas? Hagaag, raaxo - haa. Laakiin waxaa jira wax ka dhigaya shaqadan mid ka duwan kuwa kale. Waxaan ka shaqeeyay kooxo gebi ahaanba aan dan ka lahayn alaabtooda, aan garanayn ama aan fahmin cidda isticmaaleysa. Laakiin halkan wax walba way ka duwan yihiin. Halkaan waxaad ka dareemeysaa mas'uul waxaad qabato. Inta lagu jiro habka horumarinta muuqaalka, waxaad qayb ahaan noqonaysaa mulkiilaheeda, ka qayb qaado dhammaan shirarka alaabta ee la xidhiidha shaqadaada, soo jeedi talooyin oo samee go'aanno naftaada. Samaynta badeeco aad isticmaasho maalin kasta waa mid aad u fiican, laakiin qorista koodka dadka laga yaabo inay kaa fiican yihiin waa uun dareen cajiib ah (majirto wax jeesjees ah).

Ka dib markii la sii daayay dhammaan isbeddelladan, waxaan helnay jawaab celin wanaagsan, waxayna ahayd mid aad iyo aad u fiican. Waa dhiirigelin Mahadsanid! Wax badan qor.

Aan ku xasuusiyo in ka dib doorsoomayaasha caalamiga ah waxaan go'aansanay inaan bedelno qaab-dhismeedka oo aan u qoondeyno lakabka wakiillada tusaale gaar ah. Nashqadaynta "laba-node" ayaa mar hore gaadhay siidaynta qaabka tijaabada beta ee dadweynaha. Hadda qof kastaa wuu u wareegi karaa oo wuxuu naga caawin karaa inaan Habr mobile ka wanaajino. Maanta waa intaas. Waxaan ku farxi doonaa inaan ka jawaabo dhammaan su'aalahaaga faallooyinka.

Source: www.habr.com

Add a comment