Skip to main content

Guía del marco: SvelteKit

Variables de entorno público vs privado

SvelteKit distingue explícitamente entre variables públicas (accesibles en el cliente) y privadas (solo servidor) a través de $env/static/public / $env/dynamic/public vs $env/static/private / $env/dynamic/private.
.env
Si usa createConvertStore/MarkpdfClient en un componente .svelte (código de cliente), solo puede pasarle una variable PUBLIC_*, y esa clave está expuesta en el paquete, como en cualquier SPA.

Patrón A: clave pública en el cliente (prototipos, herramientas internas)

Al igual que con cualquier SPA, esta clave es visible para cualquiera que inspeccione el paquete o el tráfico de la red. Úselo solo si acepta ese riesgo (consulte consideraciones clave de exposición, que se aplican de la misma manera aquí).

Patrón B (recomendado): proxy con +server.ts

Mantenga la clave en el servidor y exponga su propio punto final:
src/routes/api/convert/+server.ts
Y desde el componente del cliente, cargue el archivo en su propio punto final en lugar de hacerlo directamente en markpdf:
Con este patrón, createConvertStore no se aplica en el lado del cliente (no tiene sentido llamarlo contra su propio punto final a menos que también implemente el mismo contrato de progreso). Si necesita un progreso de carga real en su propio punto final, implemente el mismo patrón XMLHttpRequest que createConvertStore usa internamente, apuntando a /api/convert en lugar de API de markpdf.

Acciones de formulario como alternativa a +server.ts

Si el formulario de carga se encuentra en la misma página, una acción de formulario (+page.server.ts) es una alternativa sin necesidad de un punto final separado:
src/routes/convert/+page.server.ts
Utilice acciones de formulario cuando el formulario sea tradicional (envío de página completa, mejora progresiva con use:enhance). Utilice un punto final +server.ts cuando necesite cargar el progreso a través de XMLHttpRequest/fetch desde el cliente JS, o cuando otro servicio necesite llamar a su proxy directamente.