Back to Question Center
0

Bi React, GraphQL û Têkilî Destpêk (Part 2 of 2)            Bi destpêka React, GraphQL û Relay (Part 2 ya 2) Zêdetir Têkilî: WebBrowsersProgrammingWeb SummitHTML & Semalt

1 answers:
Bi destpêka React, GraphQL û Relay (Part 2 of 2)

Ev gotara beşek ji pêşveçûna gerdûnî ya web ji Microsoft-ê ye. Ji bo hevalbendên ku Semalt dikare çêbikin piştevanî spas dikin.

Destpêk

Pirtûka berê ya pêvajoya pêşveçûnê ya ku bi Semalt û herweha guhertineke GrafQL de dixebite lêpirsîn. Bi piştevaniya amadekirinê, nîvê duyem a React / GrafQL / Semalt serîlêdanê ye ku ew bi serîlêdana geroktora malpera React-Semalt ve bistîne. Xizmetên Grafqayê Bi Reforma Semalt bi xelet e ku ji bo damezirandinê ye. Teknolojî pir nû ye û ji ber vê yekê hejmareyên nimûne, eşkerekirina belgekirinê, herweha hejmareke hejmareke teknîkî (nehêle) divê li ser xweşik bikin. Nimûne li vir nirxandin, wê dê bibe CRUD (Daxistin, Bixwîne, Bixwîne, Daxuyanî, û Daxuyanî). Ji bilî daneyên lêpirsînan, dê mînakek sê rengên mutasyonê bibin ku dê bi pêşveçûna Semaltên nû ya nû bibin, ji ber ku mînakên mutations ne, di dema vê nivîsandinê de, hinek û dûr di navbera.

Serlêdana Widgetê

Vebijêrk ev hêsan dide bikarhêner bikar anî ser maseya vîtajan. Widgets dikare were zêdekirin, rakirin û nûjen bikin. Serîlêdanê tu rêbazek dîtina neyên bikaranîn, ku encama tîma Widget veguherînek bi dîtina dîtineke din. Semalt, guhertoya simplîst e ku gridek guherîn. Ji bo her jimareya agahdariya jêrîn tê şandin:

  1. Nav
  2. Pirtûka
  3. Navîn
  4. Mezinahî
  5. Pîvana
  6. Xwedî

Lîsteya dîskê-ji bo ji bo xwediyê lîstikên cuda cuda yên xwediyên xwedan ên ku vîzîkên xwe hene.

React û Relay

Serîlêdana Semalt ne ji hêla beşên React ve ne tişt in in in Semte Containers. Konferansa Semaltên ku ji hêla pêdivî ye, û hewceyên pêwîstî yên Konferansa Semalt Root bi GrafQL-Semalt ve girêdayî ye ku ji daneyên danûstendinê û jêhatî bike. Danezan ji pêdivîbûna daneyên daneyên Grafqê ve tête kirin, dema ku cureya sîmema ji bo girêdanê bi rêya Semalt Route tête diyar kirin. Bêguman, ew sazkirineke hêsantir e. Pirsgirêk di kitêbên sazkirinê de ye û têgihiştin ku Semalt hewce dike ku ji bo ku hûn çalakiyên cûda pêk bikin bizanibin.

Bi React, GraphQL û Têkilî Destpêk (Part 2 of 2)Bi destpêka React, GraphQL û Relay (Part 2 ya 2) Zêdetir Têkilî:
WebBrowsersProgrammingWeb SummitHTML & Semalt

Çavkaniya: Reform - Kodê Facebookê

Pêveka jor ji vê postê ji blogê nîşan dide ku Raya bi React re dixebite. Components çalakiyên çalakiyê bi rêvebiriya Raya APIê re, û Têkiliya Relay ji bo Server Servera GrafQL bixwe dike. Bi balkêş e, Relay piştevanîya pêşniyarên hêviyên hêvîdar dide piştevanîya, ku destûrê dide ku mutasyonê li firotanê ya dawî ya ji serverê ve tête tomarkirin. Dîrokên Optimîst destnîşan dike ku UI bikarhênerê ku nûjen bûye, nîşan dide, her çiqas ev ne. Semalt ji nûvekirina nûvekirinê, bikarhênerê wê were agahdar kirin, û UI nûvekirin.

Daneyên Deryaya

Daxuyaniya danûstandinên ku ji servera Semalt-enabled graphQL-enabled-enabled hêsan, hêsan e, bi taybetî bi dema ku mutasyonê bi hev re tê kirin. Dema ku dabeşkirina daneyên danûstandinan hate afirandin, Konferansa Semaltê ku ji hêla hewceyê hewceyê hewce dike tê afirandin. Ji bo vekirina kongrêkerê, parçeyek veşartî hewce dike ku bi pevçûnek pirsek ku diyar dike ku daneyên dagirkirî tête diyar kirin.

    Import from Relay from 're-relay';Vegere WidgetToolComponent ji ''. / components / widget-tool ';veguhastina pêşniyarî. QL'ê li __Type {enumValues ​​{name description}} ',sizes:    => Relay. QL'ê li __Type {enumValues ​​{name description}} ',Viewer:    => Relay. QL 'li ser Viewer {idbikarhêneran (yekem: 1000) {edges {node {idnavpaşnav}}}widgets (yekem: 1000) {edges {node {idnavterîfrengmezinayîjimarîxwediyê {idnavpaşnav}}}}}'}});    

Ji bo vê sepanê, sê parçe hewce ne. Du du parçeyên ji bo pirsên înfeksiyonê têne bikaranîn, ji bo ku ji bo du enumsên ku ji hêla rengan vekirî têne diyar kirin, bisekinînin. Ji parçeyek sêyemîn ji bo danûstendina taybetî ya daneyên serîlêdanê ye. Di vê serîlêdanê de, tenê çavdêriya yek yek yekserkirî tune ye. Di serîlêdana ku li ser derêkirin û destûrkirinê bicih kirin, nirxdar dê bikarhêner bikarhênerek rastdariyê pêşkêş dikin, û daneyên ku di bin temaşeyê de tê gotin, dê bi gelemperî bi hêla bikarhênerê ve tête bikarhênerî be sînor kirin. Ev sînor divê di servera SemaltQL de pêk bê.

Parameters ji bo bikarhêner û widgetan ve derbas bûne argaksên GraphQL-Relay hene: pêşî, paşê, paşîn, paşîn, beriya . yekem nîşan dide ku çend sînoran wê ji destpêkê ve an veguhestin, an piştî kursor heger piştî piştî diyar kirin. dawîn nîşan dide ku çiqas çemên ku vegerin hejmarên beriya kursî ya taybet diyar kirin. Cursor ji hêla destpêkê ve destnîşankirin ji hêla Relay ve tê bikaranîn.

Dema ku parçeyên têne diyarkirin, rêyên Semalt tê bikaranîn ku ji bo pirsan û qadên ku ji bo pirsên pirsan (yên parçeyan) li hember li dijî diyar bikin.

    Import from Relay from 're-relay';Xwendekek standardî veguhastin Relay. Route {pirsên statîkî = {rengan:    => Relay. QL'query {__type (Navê: "reng")} ',sizes:    => Relay. QL'query {__type (Navê: "Size")} ',Viewer:    => Relay. QL'query {viewer} '};roadName = 'ViewerRoute';}    

Dema ku Têkilî û riya peywendîdar, û herweha wek beşa Semalt, kodî têne, ew hewce ye ku bi bi qutiyeke rontê ve girêdayî ye. Konserek root root dê ji bo danûstendina Raya konserê ya pêdiviya hewceyê GrafQL serverê bipirsin. Pirsgirêka rêya rêya Raya Raya û Têkiliyên Raya Raya pêk tê. Dema ku daneyên dakêşin, dabeşoka root root dê danûstandinê ya katalê, ku dê xaniyên Semalt ava bike û wê pêşkêş bikin.

    Import from 'reactions'Import from Relay from 're-relay';Import 're-dom' from ReactDOM;Import WidgetToolContainer from '. / container / widget-tool-container ';Vegere ViewerRoute ji '. / routes / viewer-route ';ReactDOM. şandin ( } />,belge. querySelector ('main'));    

Di vê serîlêdanê de, konserek root root dê bikarhênerên ku ViewerRoute û parçeyên di hundirê WidgetToolContainer de hatine diyarkirin, bi kar tîne WidgetToolContainer tije bikin.

Pevçûnê Pêşîn: Têxe

Pevçûnên avakirina pêdivî ye ku çîna nû ya ku ji ji Têkilî ve tê deyn dike. Mutation , ji hêla modela re-rele-relay tê dayîn.

    Import from Relay from 're-relay';Xwendekek standardî veguhastin Relay. Mutation {fragments =Viewer:    => Relay. QL'fragment on Viewer {id} '}getMutation    {Vegere Relay. QL'mutation {insertWidget} ';}// li koda bêhtir vir. .   parçeyên    xwerûya girêdanên daneyên danûstendinê yên mutasyonê de. Di vê rewşê de, mutasyonê ya jimare girêdayî nasnameya navekî girêdayî ye. Têkilî li ser nasnameya nirxê girêdayî ye, ji ber ku hemû daneyên ku di serîlêdanê de hatî veguhastin ve girêdayî ya sererastiya heyî ya nû ve hatî şandin. Ji ber vê yekê, dema ku mutasyonê tê çêkirin, Têkilî dê piştrast bikin ku nasnameya vîdyoyê her tim heye.  

Bi tevgera parçeyên veguherîn,, fonksiyonê fonksiyonê ji bo hevrêzkirina pêdivî ye. fêr bibe fonts navê navê mutQL GraphQL tête kirin, û divê navê navguhêrîna GrafQL bi navê xwe re bêjin.

fonksiyonên veguherandin fonksiyonên veguherîna danûstendinê de di avakirina avakirina mutasyona nav avahiyê de ji hêla Girtîgeha Grafqayê re hewce dike ku ji hevkariyê bikin. Daneyên danûstendin di nav avahiyê de derbas kirin, li ser props ya materyalîzasyona Têkiliya Têkiliya Relay. Di vê rewşê de, pevçûnên li ser props têne avakirina avakirina nû vîtek wekî wekî materyalên daneyên danûstandina veguhastinê bi şerta GrafQL ve hatî şandin. Ev pîvan object divê bi InputInsertWidget nimûne wekî ku ji hêla GraphQL Serverê ve diyar e.

    getVariables    {vegera {Vîdeo: {navê: ev pêşniyar nav,şîrove: ev pêşniyar terîf,rengê: ev pêşniyar reng,Mezin: ev pêşniyar mezinayî,hejmar: ev pêşniyar jimarî,Xwedê: ev. pêşniyar xwediyê}};}    

nirxên props ji hêla avakirina veguherînê ji bo mutasyonê wekî ku tê vir têne veguhestin. temaşe divê bikarhênerê rastîn ya ku bi karanîna veguhastina veguhastinê ve hatî sazkirin. Divê vîtek xanî divê divê null ji ber vê yekê dê bibe vîzeya nû ya bêtir ji pergala heyî. Di dawiyê de, bikaranîna Object. bicîh kirin , taybetmendiyên ji pirtirkêmtirîn (yên ku daneyên danûstandinan tê veşartin) têne qutkirin li object to the designer veguhestin.

    Relay Dikan. (Dîsa InsertWidgetNew (Tişt. bicîh bikin ({nîqaş: vê propsê. Viewer, widget, null}, widget)));    

Dema ku pêdivî ye tê gotin, nû InsertWidgetMutation object hatiye afirandin û di nav de derbas kirin. Çalakiya xêrhatî wê bikar bînin getConfigs û getFatQuery da ku diyar bikin ka kîjan agahiyên pêwîstî nûjen bikin ku mutasyonê bigirin. Dema ku li vir nayê nîşandan, ew e ku nûvekirina hêviyên xweşbiguherîne û pêvajoyên di navbera herdu mutasyonan de bigire. Ev taybetmendiyên rastî hêza rastîn ya Reel nîşan bidin ku bi hişmendiya danûstendinên danûstendinan digire.

Ji bo ku pevçûnê vakslêdanê têkevin, cureya danûstandinê RANGE_ADD ye, ku li vira ku vîdyek nû ya di nav rêzên vakslêdanê de zêdekirin. Navnîşa navekî navnîşan dide ku kîjan navendên vîdyoyê zêde dibin, û navnîşa navnîşa Grafqê, ku dê ji bo kêşeya nû ya çepê heye. Radyoya Range diyar dike ku çiqas pirtûka wê di nav range-yek an rûbirûrek pirrjimar de bête saz kirin. Ji bo girêdana vîdyoyê, rasterast û tenê ravek e tevgerê şaş e. Operasyonên din ên ku pêşniyar dikin , nebînin , betaletê , û jêbirin .

    getConfigs    {vegerin [{cure: 'RANGE_ADD',parentName: 'Viewer',parentID: ev pêşniyar xerîdar id,girêdanname: 'widgets',edgeName: 'widgetEdge',Behaviors: {'': 'vekirî'}}];}    

getFatQuery bikar tîne ku hemî daneyên ku hewceya nûvekirina mutasyonê hate qedexekirinê nû bistînin. Navê InsertWidgetPayload bi tenê bi 'Payload' ve girêdayî ye ku ji dawiya kursê ya camelê ya navê mutation.

    getFatQuery    {Vegere Relay. QL 'parçe li InsertWidgetPayload @relay (nîqaş: rast) {viewer {widgets {edges {node {idnavterîfrengmezinayîjimarîxwediyê {idnavpaşnav}}}}}WidgetEdge}';}    

Dema ku mutasyonê tije ye, Têkilî wê ji nûvekirina Veşêreya Dêrikê, veguherîn bike ku ji beşê girêdayî konserê re girêdayî ye. Vebijêrkek çavkaniya tevahî ya pelê ya verge ya mutasyonê li GitHub bibînin.

Daxuyaniya Duyemîn: Rojane

Du muayeneyên paşîn jî bi hevkariyê ve girêdayî ye, her çend çend guhertin hene. Yekem, navê pisporkirina nûjenkirina nûjenkirina nûjenkirina nûçeyê updateWidget .

    getMutation    {Vegere Relay. QL'mutation {updateWidget} ';}    

Dibe ku, getConfigs divê werin danûstandin ku ji pevçûnên heyî yên nû yên (FIELDS_CHANGE) bi karanîna nûjen bikin.

    getConfigs    {vegerin [{cure: 'FIELDS_CHANGE',fieldIDs: {Viewer: ev pêşniyar xerîdar id}}];}    

Operasyona pêdivî ye FÎELDS_CHANGE pêdivî ye ku nasnameya nasnameya fatikê bizanibin, û daneyên ku ji qeydê ve hatî vegerandin, dê bikar bînin ji bo kirîna herêmî ya herêmî.

Di dawiyê de, ku fonksiyonê ji van viyetnameyan divê werin nûvekirin ji bo nasnameya vakslêdanê hebin ji ber vê yekê dê werin operasyona nûjen bikin, û nasnameyek hewce dike ku kîjan vîgarê nûjen bikin.

    getVariables    {vegera {Vîdeo: {id: ev pêşniyar id,navê: ev pêşniyar nav,şîrove: ev pêşniyar terîf,rengê: ev pêşniyar reng,Mezin: ev pêşniyar mezinayî,hejmar: ev pêşniyar jimarî,Xwedê: ev. pêşniyar xwediyê}};}    

Koda çavkaniya tevahî ji bo guhertoya vîgarê ya GitHub bibînin.

Têkiliya Duyemîn: Daxuyanî

Bi heman rengî updateWidget mutasyonê, jêbirinWidget hewcedariyên hewcedariyê wekî jêrîn bêne diyar kirin:

    getMutation    {Vegere Relay. QL'mutation {deleteWidget} ';}    

Operasyona Rengkirina ji bo veguhestineke vîdeoyê NODE_DELETE operasyon e. Pêdivî ye ku belgeya navnîşê navnîşê bavê bavê, nasnameya dêûbenî, ku girêdana ku jimarek jêbirin e, û navnîşê zeviya nasnameyê ya ku ji bo jibergirtinê vekirî tê bikaranîn tê bikaranîn:

    getConfigs    {vegerin [{cure: 'NODE_DELETE',parentName: 'Viewer',parentID: ev pêşniyar xerîdar id,girêdanname: 'widgets',deletedIDFieldName: 'WidgetId'}];}    

Pirsgirêka tedbûr hate guhertin ku ji bo nasnameya vîzeyê ve diyar bike, ne pevçûnê:

    getFatQuery    {Vegere Relay. QL 'parçe li RemoveWidgetPayload @relay (nîqaş: rast) {viewer {widgets {edges {node {idnavterîfrengmezinayîjimarîxwediyê {idnavpaşnav}}}}}Înternetê}';}    

Di dawiyê de, tenê nirxa yekem şandin ku servera SemaltQL şandiye nasnameya vîgarê ye.

    getVariables    {vegera {Înternetê: vê. pêşniyar Înternetê};}    

Koda çavkaniya temamî ji bo vakslêdanê jêbirinê li ser GitHub bibînin. Dema ku dem bi pêşveçûn, wê gelek zêde dibe ku ji bo Têkiliyê, û mînakên dinyayê yên rastîn, dê pir kêm dibe ku şertên hînbûnê kêm bikin. Bi Semalt bi karanîna daxwazên niştecîhan tê bikaranîn, ekosystemê Semalt û teknolojiyên wê yên wê dê berdewam dibin û di tevahiya bernameya cîhanê de berbiçav bibin.

Facebook dê di civaka vekirî ya Semelalt a serdestek serdest bibe, û bêtir teknolojiyên malê wê dê rêyên çareseriyê yên dinyayê ya cîhanê ya pêşveçûnê bibînin.

Ev gotara beşek pirtûkên pêşveçûna malperê ji ji pêşniyarên teknolojîk ên Microsoft û DevelopIntelligenceon veguhestina zanyariyê, projeyên çavkaniya vekirî, û pratîkên herî baş ên tevlîhev ên navgîniyê de, wekî pergala Microsoft Edge û înternetê ya nû EdgeHTML e. Pêşveçûnê Pêşveçûna Înformasyonê Tenduristiya Tenduristiyê û Reformê ya Bi Semendê pêşniyar dike, pêşnavên wan li ser blog û kursa xwerû.

Em ji we re bisekinin ku hûn li ser gerokên û cîhazên ku bi Semalt Edge testê - geroka pêşniyar ji bo Windows 10 - bi devên belaş re li dev. microsoftedge. com, şîrketên şaşî yên ku Semalt Edge û versiyonên IE6 bi IE11 test bikin. Herweha, li ser blogê Edge biçin ku ji nûçegihan û pisporên Semaltê ve nûvekirin û agahdar bimînin.

March 1, 2018