ENbext.dev
DocumentationIntégrations de frameworks

Traduction automatique depuis l’anglais. Consulter l’original.

Sur cette page

Intégration Qwik

Qwik est un framework repris qui ne fournit pratiquement aucun JavaScript lors de la première peinture – les composants s'hydratent paresseusement, lors de l'interaction. qwik-bext est l'adaptateur Qwik City qui cible bext : vous conservez l'expérience de création de Qwik, et bext fournit la couche HTTP, le cache, le WAF, HTTP/2/3 et l'écosystème de plugins que chaque adaptateur réinvente autrement.

Version préliminaire. L'adaptateur et le framework côté Rust exécution dans le navire crates/bext-framework-qwik dans le cadre de l'E7 de bext jalon. Voir le feuille de route de l'écosystème pour ce qui a atterri et ce qui est encore sur la liste de suivi.

Installer#

bash
bun add -d qwik-bext

Dépendances homologues : @builder.io/qwik-city ^1.

Configurer#

Dans vite.config.ts :

ts
import { defineConfig } from "vite";
import { qwikVite } from "@builder.io/qwik/optimizer";
import { qwikCity } from "@builder.io/qwik-city/vite";
import bext from "qwik-bext";

export default defineConfig({
  plugins: [
    qwikCity(),
    qwikVite(),
    bext({
      outDir: "dist",
      runtime: "bun",
    }),
  ],
});

qwik-bext renvoie un plugin Vite qui s'exécute sur closeBundle, écrivant un manifeste bext-adapter.json à côté de la propre sortie de build de Qwik afin que crates/bext-framework-qwik puisse le récupérer.

Possibilités#

Option Taper Défaut Description
outDir string "dist" Répertoire de sortie relatif à la racine du projet.
ssr string "server/entry.ssr.mjs" Entrée SSR relative à outDir.
runtime "node" | "bun" "bun" Temps d'exécution préféré pour le travailleur SSR. Informatif.
staticGenerate boolean false Exécutez le pass de génération statique de Qwik City pendant la construction.

Construire#

bash
bun run build

La build émet :

code
dist/
  build/              hashed client assets (JS, CSS, fonts)
  static/             optional prerendered HTML
  server/
    entry.ssr.mjs     SSR entry — exports default { render }
  q-manifest.json     Qwik manifest with symbol → chunk map
  bext-adapter.json   metadata for the bext runtime

bext-adapter.json est le contrat entre qwik-bext et crates/bext-framework-qwik. Cela ressemble à :

json
{
  "adapter": "qwik-bext",
  "version": "0.1.0-preview",
  "runtime": "bun",
  "serverEntry": "server/entry.ssr.mjs",
  "clientDir": "build",
  "staticDir": "static",
  "manifest": "q-manifest.json",
  "generatedAt": "2026-04-11T12:00:00.000Z"
}

Servir#

Via bext.config.toml#

toml
[framework]
type = "qwik"
build_dir = "dist"

[build]
script = "dist/server/entry.ssr.mjs"
watch_dirs = ["src"]
live_reload = true

Alors:

bash
bext serve

Le vhost de bext détecte le projet comme étant Qwik (sur qwik.config.* ou vite.config.* + @builder.io/qwik-city dans package.json ), lit la sortie de build et distribue les requêtes au gestionnaire Qwik via l'adaptateur d'exécution du framework.

Via bext new#

bash
bext new my-qwik-app --template @bext/starter-qwik
cd my-qwik-app
bun install
bun run build
bext serve

Le démarreur est livré avec vite.config.ts, un layout.tsx partagé, deux pages ( / et /about ) et la plomberie bext.config.toml pré-câblée.

Comment ça s'articule#

Trois pièces mobiles collaborent sur chaque demande Qwik via bext :

  1. qwik-bext (ce package) — Plugin Vite qui se connecte à Qwik Pipeline de construction de la ville. S'exécute au moment de la construction. Produit dist/ et bext-adapter.json.
  2. crates/bext-framework-qwik — Rouille FrameworkAdapter mise en œuvre. S'exécute au moment de la configuration du serveur. Détecte le projet, appelle bunx qwik build (ou npx qwik build ), normalise la sortie et vend un adaptateur d'exécution.
  3. bext-server vhost — par demande. Acheminer les demandes entrantes à l'adaptateur d'exécution Qwik, qui à son tour est distribué au sous-processus Node / Bun exécutant dist/server/entry.ssr.mjs.

Comment cela se compare-t-il à @builder.io/qwik-city/adapters/node#

L'adaptateur node de Qwik City produit un serveur Node autonome que vous exécutez vous-même. qwik-bext ignore la couche HTTP — bext le fournit — et émet simplement l'entrée SSR compilée ainsi que les actifs client hachés. bext ajoute ensuite TLS, HTTP/2/3, le cache, WAF, la compression et l'écosystème complet de plugins sans que Qwik n'ait besoin d'en connaître aucun.

Si vous exécutez actuellement adapter-node derrière nginx, qwik-bext remplace les deux couches en un seul mouvement - et la possibilité de reprise de Qwik maintient les octets de connexion à un niveau bas avant même que le cache de bext n'intervienne.

Ce qui fonctionne aujourd'hui#

  • Routage du système de fichiers ( src/routes/** )
  • Mises en page imbriquées ( layout.tsx )
  • Chargeurs de route ( routeLoader$ )
  • Actions de formulaire ( routeAction$ )
  • Itinéraires dynamiques ( [param], [...rest] )
  • Passe de génération statique (facultatif, via staticGenerate: true)
  • Actifs statiques servis à partir de dist/build/
  • TypeScript + Qwik 1.x
Remarque

L'adaptateur E7 est un aperçu : la répartition par demande n'est pas encore câblée. Si vous avez besoin de trafic de production aujourd'hui, utilisez @builder.io/qwik-city/adapters/node derrière bext comme proxy inverse (voir multi-application ) pendant que le suivi arrive.

Limites actuelles#

  • L'envoi du sous-processus est toujours TODO. Pour l'aperçu E7, le l'adaptateur d'exécution est uniquement un descripteur - bext-framework-qwik handle_request renvoie une erreur non encore câblée. Le suivi consiste à apprendre au vhost du serveur bext à envoyer au sous-processus Node / Bun qui importe dist/server/entry.ssr.mjs, en réutilisant la même plomberie de sous-processus que bext a déjà pour PHP / FastCGI.
  • Aucune réponse en streaming pour l’instant. Le renderToStream de Qwik est un véritable API de diffusion en continu. L'aperçu met sa sortie en mémoire tampon. Le faire passer par le rédacteur de réponses de bext atterrit avec le streaming Crochet FrameworkAdapter::render.
  • Aucune prise en charge du runtime Edge. Cet adaptateur cible Node / Bun. Cloudflare -La sortie Edge de type Workers est hors de portée pour E7.
  • Assistant viteAdapter partagé non encore utilisé. Nous écrivons bext-adapter.json directement depuis un plugin plutôt que de passer par @builder.io/qwik-city/adapters/shared/vite. Une fois que nous serons à l’aise avec le peer-dep direct, nous migrerons.
  • Aucune version native de Rust. qwik-bext débourse pour qwik build — La version de Qwik est un ensemble de plugins Vite et sa réécriture dans Rust est hors de portée pour l'E7. Un pipeline direct turbopack / chignon figure sur la feuille de route de l'écosystème.

Dépannage#

  • qwik build produced no dist/ directory — la build s'est exécutée mais n'a pas émis la mise en page attendue. Vérifiez à nouveau que vite.config.ts inclut les plugins qwikCity() et qwikVite() aux côtés de bext(), et qwik-bext est installé en tant que dépendance de développement.
  • QwikRuntime::handle_request is not wired yet — vous êtes voir la limitation du descripteur E7 uniquement. La construction fonctionne, la détection fonctionne, mais l'envoi par demande est prévu pour le suivi. En attendant, utilisez @builder.io/qwik-city/adapters/node derrière bext comme proxy inverse si vous avez besoin de trafic de production maintenant.
  • Incompatibilité de dépendance avec Qwik City v0 — peerDependencies est défini sur "@builder.io/qwik-city": "^1". Si votre fichier de verrouillage code v0, le contrat de l'adaptateur ne sera pas résolu : mettez à niveau Qwik City ou utilisez un adaptateur plus ancien.

Documents associés#

  • Qwik — Documentation officielle de la ville Qwik et Qwik
Modifier cette page ↗Besoin d’aide ? ↗
Rechercher dans la documentation

Saisissez un sujet, une commande ou une question.