Frontend-bundler 26.01
Frontend-bundleri mahdollistaa webforJ-luokan hyödyntävän npm ekosysteemiä, komponenttien kirjoittamisen React, Svelte tai Lit avulla sekä SCSS -koodin laatimisen, kaikki Java-projektista ilman Node-työkaluketjun asentamista tai käyttöä. Luokka nimeää tarvitsemansa frontendin annotaatiolla, ja rakentaminen asentaa paketit, kääntää lähdekoodit ja lataa tuloksen, kun kyseisestä luokasta luodaan komponentti.
Bundleri toimii osana webforJ-build-pluginia, joka lisätään kerran Maven- tai Gradle-rakennukseen. Tietynlaisten lähdejärjestelmien, kuten SCSS:n, Less, Tailwind jne., kääntäminen on laajennusten vastuulla.
Kun tarvitset bundlerin
webforJ toimii ilman bundleria. Jos sinulla on jo skripti tai tyylitiedosto ja haluat liittää sen komponenttiin tai sovellukseen, assets-annotaatiot tekevät sen ilman rakentamisvaihetta, ilman npm:ää ja ilman käännöstä.
Bundleri ansaitsee paikkansa, kun frontend on enemmän kuin staattinen tiedosto:
- Haluat paketin npm:stä, nimeltä ja versiolta, asennettuna ja käännettynä sovellukseesi.
- Haluat kirjoittaa komponentin Reactissa, Sveltessä tai Litissä ja käyttää sitä Javasta.
- Haluat laatia SCSS-, Sass- tai Less-tiedostoja tai kääntää Tailwind-työkaluja.
- Haluat suorittaa frontend-testit osana rakennusprosessia.
Bundleri on oletuspolku tälle työlle, ja se tekee kaiken, mitä assets-annotaatiot tekevät, joten projekti, joka ottaa sen käyttöön, ei menetä yksinkertaisempaa vaihtoehtoa.
Sen lisääminen olemassa olevaan projektiin
Bundleri on valinnainen, joten voit lisätä sen sovellukseen, joka jo käyttää assets-annotaatioita, ja käyttää sitä vain siellä, missä tarvitset.
- Lisää webforJ-build-plugin Maven- tai Gradle-rakennukseesi. Se hallinnoi Bunia puolestasi, joten Node-työkaluketjua ei tarvitse asentaa.
- Laadi frontend-lähteesi kansioon
src/main/frontend. - Julista, mitä luokka tarvitsee, käyttämällä
@BundlePackageja@BundleEntry.
Olemassa olevat @StyleSheet, @JavaScript ja muut assets-annotaatiot toimivat muuttumattomina, joten voit siirtää resurssin bundlerin käyttöön, kun tarvitset pakettia, käännettyä lähdettä tai testiä, ja jättää loput rauhaan.
Luokan sitominen merkintään
@BundleEntry sitoo luokan frontend-merkintään, ja @BundlePackage julistaa npm-paketit, joita merkintä tuo. Molemmat sijaitsevat luokassa, joten tarvittava frontend näkyy näkymän mukana.
@Route("/greeting")
@BundlePackage(value = "lit", version = "^2.0.0")
@BundleEntry("greeting/hello-greeting.ts")
public class GreetingView extends Composite<FlexLayout> {
private final FlexLayout self = getBoundComponent();
public GreetingView() {
self.add(new Element("hello-greeting"));
}
}
import { LitElement, html } from 'lit';
import { customElement } from 'lit/decorators.js';
@customElement("hello-greeting")
class HelloGreeting extends LitElement {
render() {
return html`<p>Greetings from webforJ</p>`;
}
}
Merkintä rekisteröi hello-greeting -räätälöidyn elementin ja omistaa sen renderöinnin. Java-puoli käyttää sitä new Element("hello-greeting") ja kuuntelee sen tapahtumia. Rakennus kääntää merkinnän, asentaa lit-kirjaston ja lataa tuloksen, kun /greeting renderöidään.
Aiheet
Packages and assets
Declare npm packages, load a module straight from one, install build-only dependencies, rely on tree shaking, and import CSS and assets from a component's entry.
Build and tests
What the bundler does across the build, the development watch, running frontend tests, tuning a compiler, and producing a minified production bundle.
Extensions
4 kohdetta