Siirry pääsisältöön

Resurssien tuominen

Avaa ChatGPT:ssä

Assets-annotaatiot tarjoavat deklaratiivisen lähestymistavan ulkoisten ja inline-resurssien, kuten JavaScriptin ja CSS:n, upottamiseen sovellukseen staattisesti. Nämä annotaatiot yksinkertaistavat resurssien hallintaa takaamalla, että riippuvuudet ladataan oikeassa suoritusvaiheessa, vähentäen manuaalista konfigurointia ja parantaen ylläpidettävyyttä.

Bundler on oletusarvo npm:lle ja kehyksille

Asset-annotaatiot liittävät skriptin tai tyylitiedoston, jonka sinulla jo on, ilman rakennusvaihetta. Tuodaksesi npm-paketteja, komponenttikehyksia, kuten React, tai tyylitiedostokieltä, kuten SCSS, käytä frontend-bundleria. Se on oletuspolku tälle työlle, ja se tekee kaiken, mitä annotaatiotkin tekevät.

JavaScript-tiedostojen tuominen​

Deklaratiivinen JavaScriptin sisällyttäminen tuetaan @JavaScript-annotaation avulla, joka mahdollistaa automaattisen riippuvuuksien lataamisen. Annotaatio voidaan soveltaa sekä komponentitason että sovellustason.

@JavaScript("ws://js/app.js")
@JavaScript("https://cdn.example.com/library.js")

Annotaatio hyväksyy suhteellisen tai täydellisen polun, joka ladataan sovellukseen. Tämä lisätään DOM:iin <script> -tagina. Lisäksi annotaatio tukee seuraavia ominaisuuksia:

OminaisuusTyyppiKuvausOletus
topBooleanMäärittelee, tulisiko skripti injektoida ylimmälle tasollefalse
attributesObjectKoko joukko attribuutteja, joita sovelletaan skriptiin.{}

Esimerkki:​

@JavaScript(value = "ws://my-component.js",
attributes = {@Attribute(name = "type", value = "module")})
tiedot

Tiedostot ladataan vain, kun annotaatiota declaring komponentti on liitetty säiliöön. Jos useat komponentit lataavat saman tiedoston, tiedosto injektoidaan vain kerran.

JavaScriptin injektointi​

Jotkut tapaukset saattavat vaatia, että haluat injektoida JavaScript-koodia suoraan DOM:iin sen sijaan, että tarjoaisit JavaScript-polun. InlineJavaScript-annotaatio sallii JavaScript-sisällön injektoinnin.

@InlineJavaScript("alert('Olen inline-skripti!');")
@JavaScript("context://js/app.js")
OminaisuusTyyppiKuvausOletus
topBooleanMäärittelee, tulisiko skripti injektoida ylimmälle tasollefalse
attributesObjectAttribuutit, joita sovelletaan skriptiin{}
idStringYksilöllinen resurssitunnus, joka varmistaa yksittäisen injektoinnin""
varoitus

Skriptejä voidaan injektoida useita kertoja käyttämällä InlineJavaScript-annotaatiota, ellei id-ominaisuudelle ole annettu erityistä ID:tä.

CSS-tiedostojen tuominen​

Deklaratiivinen CSS:n sisällyttäminen tuetaan @StyleSheet-annotaation avulla, joka mahdollistaa automaattisen riippuvuuksien lataamisen. Annotaatio voidaan soveltaa sekä komponentitason että sovellustason.

@StyleSheet("ws://css/app.css")
@StyleSheet("https://cdn.example.com/library.css")
OminaisuusTyyppiKuvausOletus
topBooleanMäärittelee, tulisiko tyylitiedosto injektoida ylimmälle tasollefalse
attributesObjectAttribuutit, joita sovelletaan tyylitiedostoon{}

Esimerkki:​

@StyleSheet(value = "ws://my-component.css",
attributes = {@Attribute(name = "media", value = "screen")})
tiedot

Tiedostot ladataan vain, kun annotaatiota declaring komponentti on liitetty säiliöön. Jokainen tiedosto ladataan vain kerran.

CSS:n injektointi​

InlineStyleSheet-annotaatio mahdollistaa CSS-sisällön injektoimisen suoraan verkkosivulle sekä komponenttitasolla että sovellustasolla.

@InlineStyleSheet("body { background-color: lightblue; }")
@InlineStyleSheet(value = "h1 { color: red; }", id = "headingStyles", once = true)
OminaisuusTyyppiKuvausOletus
topBooleanMäärittelee, tulisiko tyylitiedoston injektoida sivun ylimmälle tasolle.false
attributesObjectKoko joukko attribuutteja, joita sovelletaan tyylielementtiin.{}
idStringYksilöllinen resurssitunnus. Jos useilla resursseilla on sama ID, ne ryhmitellään yhteen tyylielementtiin.""
onceBooleanMäärittelee, tuleeko tyylitiedoston injektoida sivulle vain kerran, riippumatta useista komponenttihakemista.true
vinkki

Parempaa syntaksin korostusta inline CSS:lle komponenttisi kirjoittamisessa voit käyttää webforJ VS Code -laajennusta: Java HTML CSS Syntaksin korostaminen.

Dynaamisten resurssien hallinta ajonaikaisesti​

Dynaaminen resurssien hallinta on mahdollista ohjelmallisen JavaScriptin ja CSS:n injektoinnin kautta ajonaikaisesti. Voit ladata tai injektoida resursseja ajonaikaisen kontekstin perusteella.

JavaScriptin lataaminen ja injektointi​

Lataa tai injektoi JavaScript ajonaikaisesti käyttämällä Page API -rajapintaa. Tämä mahdollistaa skriptien lataamisen URL-osoitteista tai inline-skriptien suoran injektoimisen DOM:iin.

Page page = Page.getCurrent();

// Ladataan JavaScript-tiedostot
page.addJavaScript("ws://js/app.js");
page.addJavaScript("https://cdn.example.com/library.js");

// Injektoidaan inline JavaScript
page.addInlineJavaScript("console.log('Ajonaikainen injektio');");
page.addInlineJavaScript("alert('Tämä skripti ajetaan inline');");
ParametriKuvaus
scriptURL-osoite tai inline-skripti, joka injektoidaan. URL-osoitteet, jotka alkavat context://, liitetään sovelluksen juurivaraston kansioon.
topMäärittelee, tuleeko skripti injektoida sivun ylle.
attributesOminaisuusavain, jota asetetaan skriptille.

CSS:n lataaminen ja injektointi​

Lataa tai injektoi CSS ajonaikaisesti käyttämällä Page API -rajapintaa. Tämä mahdollistaa tyylitiedostojen lataamisen URL-osoitteista tai inline-tyylin suoran injektoimisen DOM:iin.

Page page = Page.getCurrent();

// Ladataan CSS-tiedostot
page.addStyleSheet("ws://css/app.css");
page.addStyleSheet("https://cdn.example.com/library.css");

// Injektoidaan inline CSS
page.addInlineStyleSheet("body { background-color: lightblue; }");
page.addInlineStyleSheet("h1 { font-size: 24px; color: navy; }");
ParametriKuvaus
stylesheetURL-osoite tai inline-tyylitiedoston sisältö, joka injektoidaan. URL-osoitteet, jotka alkavat context://, liitetään sovelluksen juurivaraston kansioon.
topMäärittelee, tuleeko tyylitiedosto injektoida sivun ylle.
attributesOminaisuusavain, jota asetetaan tyylitiedostolle.