Loo ja juuruta üheleheküljeline rakendus Power Pages'is

Power Pages toetab ühe lehekülje rakenduse (SPA) koodi integreerimist, mis on loodud järgmise põlvkonna tehisintellekti abistatud tööriistadega, nagu GitHub Copilot. See võimalus võimaldab arendajatel tuua Power Pages'i kaasaegseid, komponentipõhiseid esipaneeli kogemusi, kasutades loomulikku keelt kodeerimisliidesena.

Tehisintellekti loodud koodi suunates, testides ja viimistledes saavad tegijad keskenduda korduvatelt rakendusülesannetelt kõrgema taseme orkestreerimisele. Selline lähenemine annab võimaluse intuitiivsemaks ja loovamaks arenguks, säilitades samas ettevõtte tasemel kvaliteedi ja standardid.

Selles artiklis selgitatakse, kuidas:

  • Loo ja seadista Power Pages jaoks SPA projekt, kasutades Power Platform CLI (PAC CLI).
  • Laadi ja laadi alla koodivarasid oma Power Pages'i saidile ja sealt välja.
  • Looge turvaline ja hooldatav projektistruktuur.
  • Õpi SPA-põhiste ja traditsiooniliste Power Pages rakenduste peamisi erinevusi.

Märkus.

  • SPA sait on Power Pages'i sait, mis töötab täielikult kasutaja brauseris (kliendipoolne renderdamine). Erinevalt traditsioonilistest Power Pages saitidest haldatakse SPA saite ainult lähtekoodi ja käsurea liidese (CLI) tööriistade kaudu.
  • Power Platform Git integratsioon ei ole Single-Page rakenduste (SPA) veebilehtedel Power Pages. aastal toetatud.

Eeltingimused

Enne alustamist veenduge, et teil on:

Luba JavaScripti failide üleslaadimist

Vaikimisi blokeerivad mõned Dataverse'i keskkonnad JavaScript (.js) failide üleslaadimise. Kui kohtate veateate "Import ebaõnnestus: manus ei ole kehtiv tüüp või liiga suur. Seda ei saa üles laadida ega alla laadida.", uuenda oma keskkonna seadeid, et lubada see failitüüp.

Keskkonna halduskeskuse sätete Power Platform kohandamiseks toimige järgmiselt.

  1. Logige sisse Power Platformi halduskeskusesse.
  2. Valige navigeerimispaanil Halda .
  3. Valige paanil Haldamine Keskkonnad .
  4. Valige keskkond.
  5. Valige käsuribal Sätted .
  6. Laiendage valikut Toode ja seejärel valige Privaatsus + turvalisus.
  7. Blokeeritud manuste sektsioonis eemalda js faililaiendite nimekirjast.
  8. Valige käsk Salvesta.

SPA saidi loomine ja juurutamine

Power Pages SPA saite hallatakse PAC CLI käskude upload-code-site ja download-code-site abil. Pärast saidi üleslaadimist ilmub see Inaktiivsed saidid> nimekirjas Power Pages

SPA saidi üleslaadimine

Kasuta käsku pac pages upload-code-site, et laadida üles oma kohalik allikas ja kompileeritud ressursid Power Pages keskkonda.

Süntaks

pac pages upload-code-site `
  --rootPath <local-source-folder> `
  [--compiledPath <build-output-folder>] `
  [--siteName <site-display-name>]

Parameetrid

Parameeter Pseudonüüm Nõutav Kirjeldus
--rootPath -rp Jah Kohalik kaust, kus on sinu saidi lähtefailid
--compiledPath -cp Nr Tee kompileeritud varadeni, nagu React build
--siteName -sn Nr Sinu Power Pages saidi kuvanimi

Näide

pac pages upload-code-site `
  --rootPath "../your-project" `
  --compiledPath "./build" `
  --siteName "Contoso Code Site"

Kui teil pole olemasolevat projekti, proovige SPA saitide näidisrakendusi, kasutades Reacti, Angulari ja Vue'i.

Üleslaadimise parameetrite määratlemine powerpages.config.json

Kohanda käsu upload-code-site käitumist, lisades powerpages.config.json faili oma saidi juurkausta. Kui see fail on olemas, käivita upload-code-site ainult parameetriga --rootPath . Käsk loeb ülejäänud väärtused konfiguratsioonifailist. Kui sisestate nii käsurea argumendid kui ka konfiguratsiooniväärtused, saavad käsurea argumendid prioriteediks.

Konfiguratsiooniväljad
Väli Tüüp Nõutav Kirjeldus
siteName string Jah Power Pages'i saidi kuvanimi.
compiledPath string Jah Tee kompileeritud väljundkaustani (näiteks Vite dist või React build kausta), suhteliselt .powerpages.config.json
defaultLandingPage string Jah HTML-lehte, mida teenindatakse, kui saidi juur avatakse, suhteliselt compiledPath (tavaliselt index.html).
bundleFilePatterns string[] Nr Nimekiri wildcard-mustritest, mis tuvastavad web-files saidi faile, mille CLI eemaldab enne uue versiooni üleslaadimist. Kasuta seda välja, et puhastada vananenud, sisuga räsitud komplekte, et vanad varad ei koguneks saidile. Vaata koodi jagamist ja komplektide puhastamist.
includeSource kahendmuutuja Nr Kui true, laadib käsk üles sinu lähtekoodi lisaks kompileeritud varadele. Vaikeväärtus on false.
sourceExcludePatterns string[] Nr Lähtefailide välistamise mustrid üleslaadimisest. Kehtib ainult siis, kui includeSource on true (näiteks vahelejätmise node_modules või kohalike keskkonnafailide puhul).

Kõige täpsema ja up-tokuupäevaga väljaviite leiate powerpages.config.json skeemist. Lisa vastavuse $schema omadus oma konfiguratsioonifaili, et võimaldada valideerimist ja automaatset täiendust JSON skeemi toetavates redaktorites.

Näide powerpages.config.json
{
  "$schema": "https://www.schemastore.org/powerpages.config.json",
  "siteName": "Contoso Bank",
  "compiledPath": "dist",
  "defaultLandingPage": "index.html",
  "bundleFilePatterns": [
    "index-*.js",
    "index-*.css"
  ]
}

SPA saidi allalaadimine

Kasutage käsku pac pages download-code-site , et laadida olemasoleva saidi kood redigeerimise või varundamise eesmärgil kohalikku kataloogi.

Süntaks

pac pages download-code-site `
  [--environment <env-url-or-guid>] `
  --path <local-target-folder> `
  --webSiteId <site-guid> `
  [--overwrite]

Parameetrid

Parameeter Pseudonüüm Nõutav Kirjeldus
--environment -env Nr Dataverse keskkond (GUID või täielik URL). Vaikimisi on teie aktiivne autentimisprofiil
--path -p Jah Kohalik kataloog saidikoodi allalaadimiseks
--webSiteId -id Jah Power Pages SPA saidi veebilehe GUID
--overwrite -o Nr Sihtkataloogis olemasolevate failide ülekirjutamine, kui need on olemas

Näide

pac pages download-code-site `
  --environment "https://contoso.crm.dynamics.com" `
  --path "./downloaded-site" `
  --webSiteId "11112222-bbbb-3333-cccc-4444dddd5555" `
  --overwrite

Saidi aktiveerimine ja testimine

  1. Mine Power Pages.
  2. Valige Passiivsed saidid, otsige üles oma sait ja valige Aktiveeri uuesti.
  3. Kui sait on aktiivne, minge juurutamise kontrollimiseks oma saidi URL-ile.

Näpunäide

Kõik hilisemad upload-code-site käsud värskendavad aktiivset saiti automaatselt.

Projekti struktuur ja konfiguratsioon

Ühtne projektipaigutus aitab tagada õige üleslaadimiskäitumise.

/your-project
│
├─ src/                       ← Your source code, like React components
├─ build/                     ← Compiled assets, output of the `npm run build` command
├─ powerpages.config.json     ← Optional CLI configuration file
└─ README.md

Kasutage valikulist powerpages.config.json faili, et kohandada upload-code-site käsu toimimist.

Koodi jagamine ja komplektide puhastamine

Kui üheleheküljeline rakendus kasvab, muutub üks JavaScripti komplekt suureks ja aeglaseks laadimiseks. Tänapäevased järgutööriistad lahendavad selle koodi tükeldamisega seotud probleemi. See tehnika tükeldab rakenduse väiksemateks osadeks , mille brauser nõudmisel alla laadib (näiteks ainult siis, kui kasutaja liigub kindlale marsruudile). Iga plokk saadakse välja koos faili nimes oleva sisu räsiga , näiteks Dashboard-BSbmIXoe.js, nii et brauserid saavad seda pikka aega vahemällu salvestada ja uuesti alla laadida alles siis, kui sisu muutub.

Koodi jagamine toob kaasa juurutamise kaalutluse, mis on ainulaadne Power Pages SPA saitidele: kuna iga versioon toodab uusi räsitud failinimesid, jätab korduv upload-code-site käivitamine vanad räsitud failid saidile maha. Paljude paigutuste jooksul kogunevad need orvuks jäänud tükid saidi web-files. Väli bundleFilePatternspowerpages.config.json on selleks, et neid puhastada.

Luba koodi jagamine

Koodi jagamine toimub sinu esipaneeli ehitustööriista poolt, mitte Power Pages'i poolt, seega sõltub lähenemine raamistikust ja bundlerist, mida kasutad. Kõige tavalisem tehnika on laadida rakenduse osi dünaamiliste importidega, mida sageli rakendatakse marsruudi või vaate tasandil, nii et iga sektsioon laaditakse alla ainult siis, kui kasutaja sinna navigeerib (laisk laadimine).

Bundlerid nagu Vite, webpack ja esbuild saavad samuti mooduleid selgelt nimetatud plokkideks grupeerida. Täpse konfiguratsiooni leiate oma raamistiku ja bundleri dokumentatsioonist.

dist/assets/
├─ index-BJltBIP-.js        ← app entry
├─ index-DMwMk7hv.css       ← styles
├─ Dashboard-BSbmIXoe.js    ← lazy route chunk
├─ InvoiceList-DwjrGrAI.js  ← lazy route chunk
└─ InvoiceDetail-D3DVGkeM.js← lazy route chunk

Ükskõik, millise lähenemise valid, tulemus on sama ja just see osa on juurutamise jaoks oluline: build kiirgab mitu väljundfaili, millest igaühel on nimes sisu räsi. Kuna need räsid muutuvad iga faili sisu muutudes, annab iga ehitus erineva failinimede komplekti. Järgmised osad selgitavad, kuidas hoida oma Dataverse'i keskkondi puhtana, kui nimed muutuvad.

Kuidas upload-code-site koristada vananenud kimbud

Enne kompileeritud varade üleslaadimist upload-code-site kustuta kõik saidi web-files failid, mis vastavad jokker-mustrile , bundleFilePatternsseejärel laadid üles praeguse versiooni. See kustuta ja siis üleslaadimine hoiab paigaldatud failikomplekti identsena sinu viimase kompileeritud väljundiga, selle asemel et iga ehitus eelmise peale kihistada.

Et puhastus toimiks, peavad wildcard-mustrid bundleFilePatterns vastama sinu ehitise väljastatud failinimedele. Nende täpseks hoidmiseks on kaks võimalust, sõltuvalt sellest, kuidas su ehitustööriist faile nimetab.

Variant 1: Loetle otse wildcard-mustrid

Paljud ehitustööriistad hoiavad stabiilset nime eesliitet ja muudavad ainult sisu räsi, näiteks index-[hash].js. Kui su väljundfailide nimed järgivad sellist etteaimatavat mustrit, pane iga faili jaoks jokker-muster .bundleFilePatterns Lisatööriistu pole vaja:

{
  "$schema": "https://www.schemastore.org/powerpages.config.json",
  "siteName": "Contoso Bank",
  "compiledPath": "dist",
  "defaultLandingPage": "index.html",
  "bundleFilePatterns": [
    "index-*.js",
    "index-*.css"
  ]
}

Wildcard-muster, näiteks index-*.js sobib see fail iga ehituse puhul, sõltumata räsist. Lisa iga väljundfaili kohta üks kirje ja lisa uus muster iga kord, kui su ehitus hakkab uut väljundfaili tootma.

Variant 2: Genereeri wildcard-mustrid post-build skriptiga

Kasuta seda lähenemist, kui väljundfailide nimed ei järgi ennustatavat mustrit või kui rakendus toodab palju faile, mille nimed muutuvad, kui lisad ja eemaldad marsruute, mis muudab käsitsi hooldatava nimekirja vigadele vastuvõtlikuks. Lühike skript, mis jookseb pärast ehitust, skaneerib kompileeritud väljundi ja kirjutab bundleFilePatterns ümber iga emissioonifaili jaoks jokker-mustriga. Näiteks, kui ehitustööriist nimetab faile kui [name]-[hash].[ext], siis skript taandub Dashboard-BSbmIXoe.js mustriks Dashboard-*.js.

scripts/postbuild.js:

#!/usr/bin/env node

/**
 * Post-build script: scans dist/assets/ and updates powerpages.config.json
 * with bundleFilePatterns that match all Vite-generated chunks.
 *
 * This ensures `pac pages upload-code-site` cleans up old hashed bundles
 * on each deploy instead of accumulating stale files.
 *
 * Usage: node scripts/postbuild.js
 * Or via npm: "postbuild": "node scripts/postbuild.js" in package.json
 */

import { readdirSync, readFileSync, writeFileSync } from 'fs'
import { join } from 'path'

const ROOT = join(import.meta.dirname, '..')
const DIST_ASSETS = join(ROOT, 'dist', 'assets')
const CONFIG_PATH = join(ROOT, 'powerpages.config.json')

// Vite output format: [name]-[hash].[ext]
// We want to extract "name" and "ext" to produce "name-*.ext" patterns
const HASH_PATTERN = /^(.+)-[A-Za-z0-9_-]{6,12}\.(js|css)$/

try {
  const files = readdirSync(DIST_ASSETS)
  const patternSet = new Set()

  for (const file of files) {
    const match = file.match(HASH_PATTERN)
    if (match) {
      const [, baseName, ext] = match
      patternSet.add(`${baseName}-*.${ext}`)
    }
  }

  const patterns = [...patternSet].sort()

  if (patterns.length === 0) {
    console.log('No hashed bundles found in dist/assets/ — skipping config update.')
    process.exit(0)
  }

  // Read current config
  const config = JSON.parse(readFileSync(CONFIG_PATH, 'utf-8'))
  const oldPatterns = config.bundleFilePatterns || []

  // Check if update is needed
  const oldSet = new Set(oldPatterns)
  const newSet = new Set(patterns)
  const changed = oldSet.size !== newSet.size || [...newSet].some(p => !oldSet.has(p))

  if (!changed) {
    console.log(`bundleFilePatterns already up-to-date (${patterns.length} patterns).`)
    process.exit(0)
  }

  // Update config
  config.bundleFilePatterns = patterns
  writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2) + '\n', 'utf-8')

  console.log(`Updated powerpages.config.json with ${patterns.length} bundle patterns:`)
  for (const p of patterns) {
    console.log(`  ${p}`)
  }
} catch (err) {
  console.error('postbuild error:', err.message)
  process.exit(1)
}

Ühenda skript oma ehitusega nii, et see jookseks alati pärast bundlerit:

{
  "scripts": {
    "build": "tsc -b && vite build && node scripts/postbuild.js"
  }
}

Nüüd on paigaldus kahe käsuga ja sait ei kogune kunagi orvuks jäänud tükke:

npm run build
pac pages upload-code-site --rootPath .

Pärast ehitust peegeldab powerpages.config.json täpseid praeguseid kimpe, näiteks:

{
  "$schema": "https://www.schemastore.org/powerpages.config.json",
  "siteName": "Contoso Bank",
  "compiledPath": "dist",
  "defaultLandingPage": "index.html",
  "bundleFilePatterns": [
    "Dashboard-*.js",
    "InvoiceDetail-*.js",
    "InvoiceList-*.js",
    "index-*.css",
    "index-*.js"
  ]
}

Autentimine ja autoriseerimine

Power Pages SPA saidid kasutavad sama turvamudelit nagu traditsioonilised Power Pages saidid.

Identiteedipakkujate konfigureerimine

  1. Mine Power Pages.
  2. Otsige üles oma sait ja valige Redigeeri.
  3. Valige Turbeidentiteedi>pakkujad.
  4. Lisa või seadista identiteedipakkujad, nagu Microsoft Entra ID.
  5. Igal uuel saidil on automaatselt vaikimisi Microsoft Entra ID pakkuja.

Juurdepääs kasutajakontekstile koodis

Hankige kliendi autentimise metaandmed:

  • Asutuse URL:

    Microsoft Entra ID autoriteet või sisselogimise URL on:

    https://login.windows.net/<tenantId>
    
  • Leia Authority URL teiste konfigureeritud identiteedipakkujate kohta, minnes Power Pages><your site>>Security>Identity providers> seadistusseadetesse.

  • Kasutaja andmed:

    window["Microsoft"].Dynamic365.Portal.User
    

Proovi React voog

import { IconButton, Tooltip } from '@mui/material';
import {
    Login,
    Logout
} from '@mui/icons-material';
import React from 'react';
export const AuthButton = () => {
    const username = (window as any)["Microsoft"]?.Dynamic365?.Portal?.User?.userName ?? "";
    const firstName = (window as any)["Microsoft"]?.Dynamic365?.Portal?.User?.firstName ?? "";
    const lastName = (window as any)["Microsoft"]?.Dynamic365?.Portal?.User?.lastName ?? "";
    const tenantId = (window as any)["Microsoft"]?.Dynamic365?.Portal?.tenant ?? "";
    const isAuthenticated = username !== "";
    const [token, setToken] = React.useState<string>("");

    React.useEffect(() => {
        const fetchAntiForgeryToken = async (): Promise<string> => {
            try {
                const tokenEndpoint = "/_layout/tokenhtml";

                const response = await fetch(tokenEndpoint, {});

                if (response.status !== 200) {
                    throw new Error(`Failed to fetch token: ${response.status}`);
                }

                const tokenResponse = await response.text();                
                const valueString = 'value="';
                const terminalString = '" />';
                const valueIndex = tokenResponse.indexOf(valueString);

                if (valueIndex === -1) {
                    throw new Error('Token not found in response');
                }

                const requestVerificationToken = tokenResponse.substring(
                    valueIndex + valueString.length,
                    tokenResponse.indexOf(terminalString, valueIndex)
                );

                return requestVerificationToken || '';
            } catch (error) {
                console.warn('[Impersonation] Failed to fetch anti-forgery token:', error);
                return '';
            }
        };

        const getToken = async () => {
            try {
                const token = await fetchAntiForgeryToken();
                setToken(token);
            } catch (error) {
                console.error('Error fetching token:', error);
            }
        };
        getToken();
    }, []);

    return (
        <div className="flex items-center gap-4">
            {isAuthenticated ? (
                <>
                    <span className="text-sm">Welcome {firstName + " " + lastName}</span>
                    <Tooltip title="Logout">
                        <IconButton color="primary" onClick={() => window.location.href = "/Account/Login/LogOff?returnUrl=%2F"}>
                            <Logout />
                        </IconButton>
                    </Tooltip>
                </>
            ) : (
                <form action="/Account/Login/ExternalLogin" method="post">
                    <input name="__RequestVerificationToken" type="hidden" value={token} />
                    <Tooltip title="Login">
                        <IconButton name="provider" type="submit" color="primary" value={`https://login.windows.net/${tenantId}/`}>
                            <Login />
                        </IconButton>
                    </Tooltip>
                </form>
            )}
        </div>
    );
};

Kasuta Power Pages veebiliidesid

Arendajad saavad kasutada Power Pages veebi API-sid sisu laadimiseks kasutajaliidesesse või kirjete loomiseks, uuendamiseks ja kustutamiseks. Enne nende API-de kasutamist veendu, et vajalikud veebipõhised API-d on lubatud ning sobivad tabeli õigused ja veebirollid on korrektselt seadistatud.


// Create query to get all cards from Dataverse
const fetchCards = async () => {
    const response = await fetch("/_api/cr7ae_creditcardses");
    const data = await response.json();
    const cards = data.value;
    const returnData = [];

    // Loop through the cards and get the name and id of each card
    for (let i = 0; i < cards.length; i++) {
        const card = cards[i];
        const cardName = card.cr7ae_name;
        const cardId = card.cr7ae_creditcardsid;
        const features = card.cr7ae_features
            ?.split(',')
            .map((feature: string) => feature.trim());
        const type = card.cr7ae_type;
        const image = card.cr7ae_image;
        const category = card.cr7ae_category
            ?.split(',')
            .map((cat: string) => cat.trim());
        
        // ...additional processing/pushing to returnData...
    }

    return returnData;
};

Seadista kohalik arendus, võimaldades veebipõhised API kõned localhostilt Microsoft Entra ID autentimise abil

Arendajad vajavad rakenduste loomisel kiiremaid iteratsioonitsükleid, kohalikku silumist ja kuumlaadimise võimalusi. SPA toetab neid töövooge, võimaldades turvalisi veebipõhiseid API kõnesid localhost kaudu, kasutades Microsoft Entra ID (Azure AD) v1 autentimist.

See seadistus võimaldab teil teha järgmist.

  • Käivitage oma rakendus kohalikult täieliku autentimise toega.
  • Kasutage kaasaegseid arendustööriistu, nagu Vite, kuumaks uuesti laadimiseks ja kiireks tagasisideks.
  • Väldi CORS-i probleeme Power Pages'i veebiliideste kutsumisel.
  • Kiirendage arendust ilma portaalis muudatusi juurutamata.

See konfiguratsioon võimaldab SPA-le produktiivset kohalikku arenduskogemust, nii et arendajad saavad kiiresti ehitada, testida ja iteratiivselt arendada täieliku API ligipääsu ja autentimise toega.

Oluline

  • Kasuta autentimiseks ainult Microsoft Entra v1 lõpp-punkte.
  • Esitaja autentimist toetatakse ainult portaali versioonides 9.7.6.6 või uuemates versioonides.
  • Rakendage neid sätteid ainult arenduskeskkondades.

Konfiguratsiooni etapid

  1. SPA autentimise lubamine

    1. Azure portaalis ava Microsoft Entra rakendus, mis on sinu portaalile registreeritud.
    2. Lubage ühelehelise rakenduse (SPA) autentimine.
    3. Lisa localhost suunamiseks URI, kasutades üheleheküljelist rakendusplatvormi konfiguratsiooni. Lisateabe saamiseks vaata "Kuidas lisada ümbersuunamise URI oma rakendusse".
      • Ümbersuunamise URI:http://localhost:<port>/ .
  2. Saidi sätete lisamine

    Authentication/BearerAuthentication/Enabled = true
    Authentication/BearerAuthentication/Protocol = OpenIdConnect
    Authentication/BearerAuthentication/Provider = AzureAD
    
  3. Kasuta ADAL.js autentimiseks

    • Rakenda kliendipoolne autentimine, kasutades ADAL.js.

    Märkus.

    MSAL.js ei ühildu, sest Power Pages kasutab Microsoft Entra v1 lõpp-punkte, samas kui MSAL kasutab v2. Väljaandja vorming on versiooniti erinev.

  4. Autoriseerimispäise lisamine

    • Lisage see päis kõigisse veebi API päringutesse.
    Authorization: Bearer <id_token>
    
  5. Saidi nähtavuse määramine avalikuks

    • See säte võimaldab localhost saidile arenduse ja testimise eesmärgil juurde pääseda.
  6. Arenduspuhverserveri konfigureerimine

    • Kui kasutad Vite'i, lisa see kood, vite.config.js et vältida CORS-i probleeme:
    export default defineConfig({
      plugins: [react()],
      server: {
        proxy: {
          '/_api': {
            target: 'https://site-foo.powerappsportals.com',
            changeOrigin: true,
            secure: true
          }
        }
      }
    });
    

Erinevused olemasolevatest Power Pages saitidest

Järgmine tabel võtab kokku peamised erinevused selle funktsiooniga loodud SPA saitide ja traditsiooniliste Power Pages saitide vahel:

Funktsioon SPA saidi käitumine
Serveripoolne värskendamine Tagastab alati saidi juurlehe ning kliendipoolne ruuter renderdab alammarsruute.
Marsruudi konfliktid Kliendipoolsed marsruudid on ülimuslikud ja kõva värskendus langeb tagasi juure.
Lehe tööruum Lehtede tööruumi ei toetata. Kasutage kliendi marsruutimist ja kliendi saidi lehti. Lehetaseme turvalisuse tagamiseks kontrollige määratud veebirolle globaalse kasutajaobjektiga ja renderdage kasutajaliides tingimuslikult.
Stiili tööruum Stiili tööruumiga kujundamist ei toetata. Kasuta oma raamistiku stiili, näiteks CSS, CSS-in-JSvõi utiliitklassid.
Lokaliseerimine Ühe keele tugi. Rakendage kliendipoolset ressursside laadimist.
Vedel mall Liquidi koodi ja Liquidi malle ei toetata. Andmetele pääse ligi oma raamistiku mallimootori ja veebi API-de abil.

KKK

Millist tuge saab ühik- ja integratsioonitestimiseks?

Praegu puudub sisseehitatud tugi ühik- ja integratsioonitestimiseks. Tegijad peaksid need testid kirjutama ja käivitama kohapeal või oma CI/CD torujuhtmetes.

Kas WebAssembly’i Power Fx abil on integratsiooni tugi?

Seda võimalust praegu ei toetata.

Kas lähtekood on Power Pages'is saadaval?

Praegu saavad loojad luua veebisaite TypeScripti või GitHub Copilot Agenti abil. Kompileeritud JavaScripti ja CSS failid on ligipääsetavad ning neid saab redigeerida Visual Studio Code'is. HTML-failide otsest ja ulatuslikku redigeerimist aga praegu ei toetata.

Kas ma saan selle funktsiooni abil luua komponendi väliselt ja tuua selle Power Pages'i saidile?

Ei, sa ei saa selle funktsiooni abil tuua väljastpoolt genereeritud komponenti olemasolevale Power Pages'i saidile.

Kas ma saan lisada valmiskomponente, nagu loendid ja vormid?

Valmiskomponentide (nt loendite ja vormide) lisamist praegu ei toetata. Kuid kohandatud vorme ja loendeid saab luua Reacti raamistiku ja veebi API-de abil.

Kas spa-saiti saab PWA-na lubada tööruumi häälestamise kaudu?

Nr SPA-saidid ei toeta tööruumi häälestamiselprogressiivse veebirakenduse (PWA) sätet. See piirang tähendab, et te ei saa kasutada jaotist Mobile saidi PWA-na lubamiseks. PWA funktsioonide (nt installitavate rakenduste ja ühenduseta lehtede) lisamiseks rakendage need oma raamistikukoodis. Näiteks saate lisada veebirakenduse manifesti ja hooldustöötaja.

Kuidas allika juhtimine töötab?

Arendajad saavad allika juhtimiseks kasutada Power Platform Giti integratsiooni. Hoidlasse lisatakse aga ainult kompileeritud veebifailid, mitte täielik lähtekood.

Kas need saidid toetavad SEO-d?

Kuna SPA saidid on üles ehitatud Reacti raamistikuga ja kasutavad kliendipoolset renderdamist, on SEO tugi piiratud.

Millist Power Pages'i turva- ja haldustuge pakuvad SPA saidid?

Power Pages rakendab tabeli õigusi ja turvalisuse veebirolle Web API kutsetel, tagades, et andmejuurdepääs vastab kasutajarollidele. Kasutage objekti window["Microsoft"].Dynamic365.Portal.User põhiliste kasutajaatribuutide hankimiseks ja kogemuste kohandamiseks kasutaja persoonade põhjal.

Lisaks toetavad SPA saidid:

  • Avaliku ja privaatse saidi konfiguratsioonid
  • Juhtimissätted, sh kontroll anonüümse andmejuurdepääsu üle
  • Autentimisteenuse pakkuja konfiguratsioonid

Need funktsioonid aitavad tagada kohandatud komponentide turvalise ja nõuetele vastava integreerimise Power Pages'is.