Skip to content

Commit 9ccae0d

Browse files
authored
feat(experimental): add fetchable environment interface (#694) (#1033)
Co-authored-by: Rush Ali <[email protected]> closes #694 #1033
1 parent 953faa9 commit 9ccae0d

File tree

1 file changed

+42
-1
lines changed

1 file changed

+42
-1
lines changed

docs/guide/api-environment-frameworks.md

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,48 @@ if (isRunnableDevEnvironment(server.environments.ssr)) {
3737
```
3838

3939
:::warning
40-
Der `Runner` wird eifrig ausgewertet, wenn das erste Mal auf ihn zugegriffen wird. Achten Sie darauf, dass Vite die Source-Map-Unterstützung aktiviert, wenn der `Runner` erstellt wird, indem Sie `process.setSourceMapsEnabled` aufrufen oder `Error.prepareStackTrace` überschreiben, wenn es nicht verfügbar ist.
40+
Der `Runner` wird faul ausgewertet, wenn das erste Mal auf ihn zugegriffen wird. Achten Sie darauf, dass Vite die Source-Map-Unterstützung aktiviert, wenn der `Runner` erstellt wird, indem Sie `process.setSourceMapsEnabled` aufrufen oder `Error.prepareStackTrace` überschreiben, wenn es nicht verfügbar ist.
41+
:::
42+
43+
Frameworks die mit ihrer Laufzeit via [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch) kommunizieren, können `FetchableDevEnvironment` nutzen, welches über die `handleRequest`-Methode einen standardisierten Weg bereitstellt, Anfragen zu bearbeiten:
44+
45+
```ts
46+
import {
47+
createServer,
48+
createFetchableDevEnvironment,
49+
isFetchableDevEnvironment,
50+
} from 'vite'
51+
52+
const server = await createServer({
53+
server: { middlewareMode: true },
54+
appType: 'custom',
55+
environments: {
56+
custom: {
57+
dev: {
58+
createEnvironment(name, config) {
59+
return createFetchableDevEnvironment(name, config, {
60+
handleRequest(request: Request): Promise<Response> | Response {
61+
// bearbeite Anfragen und gib eine Antwort zurück
62+
},
63+
})
64+
},
65+
},
66+
},
67+
},
68+
})
69+
70+
// Jeder Konsument der Umgebungs API kann nun `dispatchFetch` aufrufen
71+
if (isFetchableDevEnvironment(server.environments.custom)) {
72+
const response: Response = await server.environments.custom.dispatchFetch(
73+
new Request('/request-to-handle'),
74+
)
75+
}
76+
```
77+
78+
:::warning
79+
Vite validiert den Input und den Output der `dispatchFetch`-Methode: Die Anfrage muss eine Instanz der globalen Klasse `Request` sein und die Antwort eine Instanz der globalen Klasse `Response`. Vite wird einen `TypeError` hervorrufen, wenn dies nicht der Fall ist.
80+
81+
Beachten Sie, dass auch wenn `FetchableDevEnvironment` als Klasse implementiert wurde, wird sie vom Vite-Team als Implementationsdetail betrachtet und könnte jederzeit geändert werden.
4182
:::
4283

4384
## Standardwert `RunnableDevEnvironment`

0 commit comments

Comments
 (0)