Kopīgot, izmantojot


Veidojiet lielas un sarežģītas audekla programmas

Lielākā daļa rakstu šajā dokumentācijas sadaļā attiecas uz lietotņu izpildlaika veiktspēju, ko pieredzējuši cilvēki, kuri tās izmanto. Šajā rakstā ir aplūkota lietotņu veiktspēja, ko pieredzējuši cilvēki, kuri tās veido.

Tā kā programmas kļūst lielākas un sarežģītākas, Power Apps Studio ir jāielādē un jāpārvalda lielāks skaits vadīklu, formulu un datu avotu, un tas viss notiek ar savstarpēju atkarību, kas pieaug eksponenciāli. Power Apps Studio ielāde var aizņemt ilgāku laiku, un tādas funkcijas kā IntelliSense un krāsu kodēšana var aizkavēties. Izmantojiet tālāk sniegtos ieteikumus, lai labāk strādātu ar lielām un sarežģītām programmām Power Apps Studio. Tie var arī palīdzēt uzlabot jūsu lietotņu izpildlaika veiktspēju.

Šajā rakstā sniegtajos piemēros tiek izmantots slimnīcas ārkārtas atbilde parauga risinājums.

Izmantojiet App.Formulas, nevis App.OnStart

Padoms

Varat izmantot ar funkciju un audekla komponentu pielāgotus izvades rekvizītus kā alternatīvu nosauktām formulām.

Labākais veids, kā samazināt ielādes laiku abiem Power Apps Studio un jūsu lietotnei, ir aizstāt mainīgo un kolekcijas inicializāciju programmā App.OnStart ar nosauktām formulām programmā App.Formulas.

Apskatīsim šo piemēru, kurā tiek izmantots App.OnStart.

// Get the color of text on a dark background.
Set(varColorOnDark,RGBA(0, 0, 0, 1));

// Get the color of the menu icons.
Set(varColorMenuIcon,"#0070a9");

// Get the styles for a form.
Set(varFormStyle,
    {
        DataCard: { Height: 50 },
        Title: { Height: 50, Size: 21, Color: varColorOnDark },
        Control: { Height: 50, Size: 18 },
        Label: { Size: 18, Color: varColorOnDark }
    }
);

ClearCollect(
    FacilitiesList,
    ForAll(
        Facilities,
        { Name: 'Facility Name', Id: Facility }
    )
);
If(
    Not IsBlank(Param("FacilityID")),
    Set(ParamFacility,
        LookUp(
            FacilitiesList,
            Id = GUID(Param("FacilityID"))
        ).Name
    );
);

Tā kā tie ir paziņojumu secība, jūsu lietotnei ir jānovērtē šie iestatītie un apkopotie zvani secībā, pirms tā var parādīt pirmo ekrānu, kas padara programmas ielādi lēnāku. Un, tā kā viss App.OnStart ir jāskata kopumā, jāsaglabā secība un jāapkopo kļūdas pirms gala rezultāta atgriešanas, formula ir sarežģīta analīzei Power Apps Studio .

Ir labāks veids. Tā vietā izmantojiet App.Formulas un definējiet šos mainīgos un kolekcijas kā nosauktas formulas, kā tas ir tālāk sniegtajā piemērā.

// Get the color of text on a dark background.
varColorOnDark = RGBA(0, 0, 0, 1);

// Get the color of the menu icons.
varColorMenuIcon = "#0070a9";

// Get the styles for a form.
varFormStyle = 
    {
        DataCard: { Height: 50 },
        Title: { Height: 50, Size: 21, Color: varColorOnDark },
        Control: { Height: 50, Size: 18 },
        Label: { Size: 18, Color: varColorOnDark }
    };

FacilitiesList =
    ForAll(
        Facilities,
        { Name: 'Facility Name', Id: Facility }
    );

ParamFacility = 
    If( Not IsBlank(Param("FacilityID")),
        LookUp(
            FacilitiesList,
            Id = GUID(Param("FacilityID"))
        ).Name,
        Blank()
    );

Šīs izmaiņas var šķist nelielas, taču tām var būt milzīga ietekme. Tā kā katra nosauktā formula ir neatkarīga no citām, Power Apps Studio var tos analizēt neatkarīgi, efektīvi sadalot lielu App.OnStart mazākos gabalos. Mēs esam redzējuši, ka Power Apps Studio ielādes laiks ir samazinājies pat par 80%, tikai ar šīm izmaiņām.

Jūsu programma tiek ielādēta arī ātrāk, jo tai nav jānovērtē šīs formulas, līdz tai ir nepieciešams rezultāts. Lietotnes pirmais ekrāns tiek parādīts nekavējoties.

Nosauktas formulas nevar izmantot visās situācijās, jo tās nevar modificēt vai izmantot kopā ar iestatīšanu. Dažās situācijās ir nepieciešams izmantot stāvokļa mainīgo, ko var mainīt. Komplekts ir lieliski piemērots šādām situācijām, un jums vajadzētu turpināt to izmantot. Taču visbiežāk pakalpojumā OnStart tiek izmantoti globālie mainīgie, lai iestatītu statiskās vērtības, kas nemainās. Šādos gadījumos labāka izvēle ir nosaukta formula.

Tā kā nosauktās formulas ir nemainīgas, prefikss var (saīsinājums no "mainīgais") kā nosaukumdošanas metode vairs nav piemērots. Šajā piemērā nosaukumi netika mainīti, jo, lai tie atbilstu, būs jāveic izmaiņas pārējā programmā.

Ir vilinoši ievietot nosauktu formulu app.OnStart ·, bet nedariet to. Viņi tur neiederas. Kā rekvizīts On behavior App.OnStart · novērtē katru savu apgalvojumu secībā, izveidojot globālos mainīgos un runājot ar datu bāzēm tikai vienu reizi, kad lietotne ir ielādēta . · Nosauktās formulas ir formulas, kas definē, kā kaut ko aprēķināt, kad vien tas ir nepieciešams, un vienmēr ir patiesas. Tieši šī formulas daba ļauj viņiem būt neatkarīgiem un ļauj lietotnei pabeigt ielādi, pirms tā tiek novērtēta.

Garo formulu sadalīšana

App.OnStart ir viens no sliktākajiem pārkāpējiem garām formulām un noteikti tur, kur jums vajadzētu sākt, taču tas nav vienīgais gadījums.

Mūsu pētījumi ir parādījuši, ka gandrīz visām lietotnēm ar ilgu ielādes laiku Power Apps Studio ir vismaz viena formula, kuras garums pārsniedz 256 000 rakstzīmju. Dažām lietotnēm ar visilgāko ielādes laiku ir formulas, kuru garums pārsniedz 1 miljonu rakstzīmju. Formulas, kas ilgi radīja ievērojamu spriedzi Power Apps Studio.

Lai situāciju padarītu vēl sliktāku, vadīklas kopēšana un ielīmēšana ar garu formulu dublē formulu vadīklas īpašībās, to nerealizējot. Power Apps tiek modelēts pēc programmas Excel, kur bieži ir vairākas formulas kopijas. Tomēr programmā Excel formulas ir ierobežotas līdz vienai izteiksmei un ir ierobežotas līdz 8 000 rakstzīmēm. Power Apps Formulas var augt daudz ilgāk, ieviešot obligātu loģiku un ķēdes operatoru (; vai ;;, atkarībā no lokalizācijas).

Vispārīgais risinājums ir sadalīt garās formulas mazākās daļās un atkārtoti izmantot detaļas, kā mēs to darījām iepriekšējā sadaļā, kad mainījām Set/Collect priekšrakstus lietotnē App.OnStart uz nosauktām formulām programmā App.Formulas. Citās programmēšanas valodās atkārtoti izmantojamas daļas bieži sauc par apakšprogrammām vai lietotāja definētām funkcijām. Nosauktās formulas var uzskatīt par vienkāršu lietotāja definētas funkcijas formu bez parametriem vai blakusparādībām.

Nosauktu formulu izmantošana visur

Iepriekšējā piemērā mēs izmantojām nosauktas formulas, aizstājot App.OnStart. Tomēr tos var izmantot, lai aizstātu aprēķinu jebkurā programmas vietā.

Piemēram, vienā no ekrāniem slimnīcas neatliekamās palīdzības atbilde parauga risinājumā ir iekļauta šī loģika sadaļā Screen.OnVisible:

ClearCollect(
    MySplashSelectionsCollection,
    {
        MySystemCol: First(
            Filter(
                Regions,
                Region = MyParamRegion
            )
        ).System.'System Name',
        MyRegionCol: First(
            Filter(
                Regions,
                Region = MyParamRegion
            )
        ).'Region Name',
        MyFacilityCol: ParamFacility,
          MyFacilityColID:  LookUp(
            FacilitiesList,
            Id = GUID(Param("FacilityID"))
        ).Id
    }
); 

Šo formulu var sadalīt nosauktu formulu kopā. Tas arī padara formulu vieglāk lasāmu.

MyRegion = LookUp(
                    Regions,
                    Region = MyParamRegion
           );

MyFacility = LookUp(
                    FacilitiesList,
                    Id = GUID(Param("FacilityID")
            );

MySplashSelectionsCollection = 
    {
        MySystemCol: MyRegion.System.'System Name',
        MyRegionCol: MyRegion.'Region Name',
        MyFacilityCol: ParamFacility,
        MyFacilityColID:  MyFacility.Id
    };

Mēs izvilkām ParamFacility kā nosauktu formulu agrāk, kad lielāko daļu Set zvanu no App.OnStart pārvietojām uz nosauktām formulām lietotnē App.Formulas.

Nosauktās formulas tiek novērtētas tikai tad, ja ir nepieciešamas to vērtības. Ja sākotnējais nolūks, izmantojot Screen.OnVisible, bija atlikt darbu, līdz tiek parādīts ekrāns, tad darbs joprojām tiek atlikts kā globālas nosauktas formulas programmā App.Formulas.

Funkcijas Ar izmantošana

Formulā var arī izmantot funkciju Ar, lai sadalītu loģiku. Pirmajā parametrā izveidojiet ierakstu ar vērtībām, kuras vēlaties izmantot kā laukus, un pēc tam izmantojiet šos laukus otrajā parametrā, lai aprēķinātu atgriezto vērtību no With. Piemēram, iepriekšējo piemēru var rakstīt tikai kā vienu nosauktu formulu:

MySplashSelectionsCollection = 
    With( { MyRegion: LookUp(
                            Regions,
                            Region = MyParamRegion
                      ),
            MyFacility: LookUp(
                            FacilitiesList,
                            Id = GUID(Param("FacilityID")
                      ) 
           },
           {
                MySystemCol: MyRegion.System.'System Name',
                MyRegionCol: MyRegion.'Region Name',
                MyFacilityCol: ParamFacility,
                MyFacilityColID:  MyFacility.Id
           }
    )

Viens no trūkumiem, izmantojot Ar šādu veidu, ir tas, ka MyFacility nevar izmantot MyRegion , jo tie ir definēti tajā pašā funkcijā Ar — problēma, kas nav saistīta ar nosauktajām formulām. Viens risinājums ir ligzdot ar funkcijām un izmantot As atslēgvārdu, lai katram piešķirtu ierakstu nosaukumu, lai nodrošinātu vieglu piekļuvi visiem mainīgajiem ar lielumiem.

Kanvas komponentu izmantošana

Audekla komponentus visbiežāk izmanto, lai izveidotu lietotāja interfeisa vadīklu, ko var novietot uz audekla tāpat kā vadīklu. Varat arī tos izmantot, neievietojot tos lietotāja saskarnē, lai veiktu aprēķinus ar pielāgotiem izvades rekvizītiem kā alternatīvu nosauktām formulām. Pamatnes komponentus ir viegli koplietot dažādās programmās, izmantojot komponentu bibliotēkas, un atšķirībā no nosauktajām formulām tie tiek pilnībā atbalstīti. Tomēr tās ir grūtāk konfigurēt un izmantot nekā nosauktās formulas.

Lai sadalītu loģiku:

  1. Iekšā Power Apps Studio pārslēdzieties uz cilni Komponenti koka skatā.
  2. Jauna komponenta izveide.
  3. Rūtī Rekvizīti ieslēdziet Access lietojumprogrammas tvērumu.
  4. Pievienojiet pielāgotu rekvizītu.
  5. Iestatiet rekvizīta tipu attiecīgi uz Izvade un datu tipu .
  6. Atlasiet Izveidot.
  7. Rekvizītu atlasītājā blakus formulu joslai ekrāna augšdaļā atlasiet jauno rekvizītu.
  8. Uzrakstiet formulu, lai loģika sadalītu un atkārtoti izmantotu.

Lai izmantotu loģiku:

  1. Pārslēdzieties uz cilni Ekrāni koka skatā.
  2. Rūtī Ievietošana izvērsiet Pielāgots un ievietojiet komponentu.
  3. Lai aprēķinātu vērtību ar rekvizītu, izmantojiet ComponentName.PropertyName.

Izmantojiet opciju Atlasīt ar slēptu vadīklu obligātai loģikai

Imperatīvā loģika tiek izmantota, lai modificētu stāvokli ar opciju Iestatīt un apkopot, paziņotu lietotājam ar Notify, naviģētu uz citu ekrānu vai lietotni ar navigācijas un palaišanas funkciju un rakstītu vērtības datu bāzē, izmantojot Patch,SubmitForm vai RemoveIf.

Nosauktās formulas un audekla komponentu pielāgotie izvades rekvizīti neatbalsta obligāto loģiku. Izplatīts veids, kā sadalīt obligāto loģiku, ir izmantot slēptās vadīklas rekvizītu OnSelect .

  1. Pogas vadīklas pievienošana ekrānam.
  2. Iestatiet rekvizītam OnSelect uz obligāto loģiku, kuru vēlaties izpildīt.
  3. Iestatiet rekvizītu Redzams kā aplams, jo lietotājam tas nav jāredz vai ar to jāmijiedarbojas.
  4. Zvaniet Select( Button ) , kad vēlaties izpildīt obligāto loģiku.

Piemēram, vienam no mūsu parauga ekrāniem pogas vadīklā ir šāds rekvizīts OnSelect (OnSelect ·). (Šis vienkāršais piemērs ir paredzēts tikai ilustratīviem nolūkiem. Parasti šo paņēmienu izmanto tikai garākām formulām.)

btnAction_17.OnSelect = 
    Trace("Feedback Screen: Submit Button",TraceSeverity.Information);
    If(
        // Proceed if all forms are validated.
        And(
            FormFeedback.Valid
        ),
    
        // Set the updates to static variables.
        Set(updatesFeedback,Patch(Defaults('App Feedbacks'), FormFeedback.Updates));
        // Submit the first form. Subsequent actions can be found in the OnSuccess.
        SubmitForm(FormFeedback);
        ,
    
        Notify("Please complete all fields before proceeding",
               NotificationType.Warning,2000)
    );

Lai sadalītu šo loģiku daļās, mēs varam ievietot daļas atsevišķās pogas vadīklās un atlasīt tās no oriģināla:

btnTrace.OnSelect = 
    Trace("Feedback Screen: Submit Button",TraceSeverity.Information);

btnSubmit.OnSelect = 
    If(
        // Proceed if all forms are validated.
        And(
            FormFeedback.Valid
        ),
    
        // Set the updates to static variables.
        Set(updatesFeedback,Patch(Defaults('App Feedbacks'), FormFeedback.Updates));
        // Submit the first form. Subsequent actions can be found in OnSuccess.
        SubmitForm(FormFeedback);
        ,
    
        Notify("Please complete all fields before proceeding",
               NotificationType.Warning,2000)
    );

btnAction_17.OnSelect = 
    Select( btnTrace );
    Select( btnSubmit );

Šī metode darbojas tikai tajā pašā ekrānā. Citi paņēmieni, kas ir nedaudz sarežģītāki, darbojas visos ekrānos, piemēram, pārslēgšanas vadīklas izmantošana, OnCheck iestatīšana uz loģiku, kuru vēlaties palaist, noklusējuma iestatīšana uz globālu mainīgo un pēc tam globālā mainīgā pārslēgšana ar punktu, kurā vēlaties palaist loģiku. Set( global, true ); Set( global, false )

Šajā piemērā jau bija veikta zināma loģiskā sadalīšana. Komentārā minēts, ka "Turpmākās darbības var atrast OnSuccess." Šis notikums izpilda obligāto loģiku pēc tam, kad ieraksts ir veiksmīgi iesniegts, kas ir risinājums, kas raksturīgs funkcijai SubmitForm .

Programmas nodalīšana

Dažas programmas palielinās līdz tūkstošiem vadīklu un simtiem datu avotu, kas palēninās Power Apps Studio. Tāpat kā garās formulās, lielas programmas var sadalīt mazākās sadaļās, kas darbojas kopā, lai izveidotu vienu lietotāja pieredzi.

Atsevišķas pamatnes programmas

Viena pieeja ir ieviest sadaļas atsevišķās audekla programmās un izmantot palaišanas funkciju, lai pārvietotos starp atsevišķām programmām un nodotu nepieciešamo kontekstu.

Šī pieeja tika izmantota slimnīcas ārkārtas atbilde parauga risinājumā. Atsevišķas lietotnes pārvalda katru no galvenajām lietotnes jomām. Lietotnēm ir kopīgs sadales paneļa komponents, izmantojot komponentu bibliotēka, ko katra programma rāda sākuma ekrānā:

Ekrānuzņēmums, kurā redzama slimnīcas ārkārtas atbilde parauga risinājuma audekla programma, kas darbojas tālrunī, parādot sadales paneļa audekla komponentu.

Kad lietotājs atlasa apgabalu, komponents izmanto metadatus par pieejamajām programmām un to, kura programma vieso komponentu. Ja vēlamais ekrāns ir šajā lietotnē (tas ir,ThisItem.Screen · nav tukšs), tad tiek veikts navigācijas zvans. Bet, ja vēlamais ekrāns atrodas citā lietotnē (tas ir,ThisItem.PowerAppID · nav tukšs), tad palaišanas funkcija tiek izmantota ar mērķa lietotnes ID un FacilityID kontekstu:

If(
    IsBlank(ThisItem.Screen),
    If(IsBlank(ThisItem.PowerAppID), 
        Launch(ThisItem.URL),           
        Launch("/providers/Microsoft.PowerApps/apps/" & ThisItem.PowerAppID, 
               "FacilityID", Home_Facility_DD.Selected.Id)
    ),
    Navigate(
        ThisItem.Screen,
        Fade
    )
);

Statuss sākotnējā programmā tiek zaudēts, kad tiek palaista cita lietojumprogramma. Noteikti saglabājiet jebkuru stāvokli, pirms zvanāt uz palaišanas funkciju. Ierakstiet to datu bāzē, izsauciet SaveData vai nododiet statusu mērķa programmai ar parametriem, kas tiek nolasīti, izmantojot funkciju Param .

Modeļa vadīta programma ar pielāgotām lapām

Sadaļas var ieviest arī kā pielāgotas lapas. Pielāgotas lapas darbojas kā mini audekla programma ar modeļa vadītu programmas konteineru navigācijai.

Piezīme

Kādas ir jūsu dokumentācijas valodas preferences? Aizpildiet īsu aptauju. (ņemiet vērā, ka aptauja ir angļu valodā)

Aptaujai būs nepieciešamas aptuveni septiņas minūtes. Nekādi personas dati netiks vākti (paziņojums par konfidencialitāti).