← Cloudflare Pages / pages / functions
Směrování
Functions využívají směrování založené na souborech. Váš /functions struktura adresáře určuje trasy, na kterých budou vaše Functions běžet. Můžete vytvořit /functions adresář s tolika úrovněmi, kolik váš projekt potřebuje. Prohlédněte si následující adresář:
- ...
- functions
- index.js
- helloworld.js
- howdyworld.js
- fruits
- index.js
- apple.js
- banana.js
Na základě výše uvedené struktury souborů se vygenerují následující trasy. Tyto trasy mapují vzor URL adresy na /functions soubor, který se spustí, když návštěvník přejde na URL:
| Cesta k souboru | Trasa |
|---|---|
| /functions/index.js | example.com |
| /functions/helloworld.js | example.com/helloworld |
| /functions/howdyworld.js | example.com/howdyworld |
| /functions/fruits/index.js | example.com/fruits |
| /functions/fruits/apple.js | example.com/fruits/apple |
| /functions/fruits/banana.js | example.com/fruits/banana |
Pokud se nenajde odpovídající Function, dojde k návratu na statické aktivum, pokud existuje. V opačném případě se Function vrátí na výchozí chování směrování pro statická aktiva Pages.
Dynamické trasy
Dynamické trasy umožňují porovnávat URL adresy se segmenty obsahujícími parametry. To se hodí při tvorbě dynamických aplikací. Změnou názvu souboru můžete přijímat dynamické hodnoty, které se mapují na jedinou cestu.
Jednotlivé segmenty cesty
Chcete-li vytvořit dynamickou trasu, umístěte kolem názvu souboru jednu dvojici závorek, například /users/[user].js. Tímto vytváříte zástupný symbol pro jeden segment cesty:
| Cesta | Shoda? |
|---|---|
| /users/nevi | Ano |
| /users/daniel | Ano |
| /profile/nevi | Ne |
| /users/nevi/foobar | Ne |
| /nevi | Ne |
Vícecestné segmenty
Pokud název souboru obalíte dvěma páry hranatých závorek, například /users/[[user]].js : shoda platí pro libovolnou hloubku trasy za /users/:
| Cesta | Shoda? |
|---|---|
| /users/nevi | Ano |
| /users/daniel | Ano |
| /profile/nevi | Ne |
| /users/nevi/foobar | Ano |
| /users/daniel/xyz/123 | Ano |
| /nevi | Ne |
Příklady dynamických tras
Projděte si následující /functions/ struktura adresáře:
- ...
- functions
- date.js
- uživatelé
- special.js
- [user].js
- [[catchall]].js
Následující požadavky budou odpovídat těmto souborům:
| Požadavek | Soubor |
|---|---|
| /foo | Pokud je k dispozici statické aktivum, požadavek se na něj přesměruje. |
| /date | /date.js |
| /users/daniel | /users/[user].js |
| /users/nevi | /users/[user].js |
| /users/special | /users/special.js |
| /users/daniel/xyz/123 | /users/[[catchall]].js |
Segment(y) URL adresy, které odpovídají zástupnému symbolu ([user]) bude k dispozici v požadavku context objekt. context.params objekt lze použít k nalezení odpovídající hodnoty pro daný zástupný symbol názvu souboru.
Pro soubory, které odpovídají jedinému segmentu URL (použijte jednu dvojici závorek), se hodnoty vracejí jako řetězec:
export function onRequest(context) {
return new Response(context.params.user);
}Výše uvedená logika vrátí daniel pro požadavky na /users/daniel.
Pro soubory, které odpovídají více segmentům URL (použijte dvojitou dvojici závorek), se hodnoty vracejí jako pole:
export function onRequest(context) {
return new Response(JSON.stringify(context.params.catchall));
}Výše uvedená logika vrátí ["daniel", "xyz", "123"] pro požadavky na /users/daniel/xyz/123.
Trasy vyvolání Functions
U čistě statického projektu nabízí Pages neomezený počet požadavků zdarma. Jakmile ale do projektu Pages přidáte Functions, všechny požadavky ve výchozím nastavení spustí vaši Function. Aby vám statické požadavky zůstaly zdarma a bez omezení, vyřaďte statické trasy svého projektu vytvořením _routes.json soubor. Tento soubor se automaticky vygeneruje, pokud functions adresář je ve vašem projektu detekován při jeho publikování pomocí Pages CI nebo Wrangler.
Vytvořte _routes.json soubor
Vytvořte _routes.json soubor pro řízení toho, kdy se vaše Function spustí. Měl by být umístěn v sestavovacím adresáři vašeho projektu.
Výchozí sestavovací adresáře
Níže najdete standardní sestavovací příkazy a adresáře pro oblíbené frameworky a nástroje.
| Framework/nástroj | Příkaz sestavení | Adresář sestavení |
|---|---|---|
| React (Vite) | npm run build | dist |
| Gatsby | npx gatsby build | public |
| Next.js (statický export HTML) | npx next build | out |
| Nuxt.js | npm run build | dist |
| Qwik | npm run build | dist |
| Remix | npm run build | build/client |
| Svelte | npm run build | public |
| SvelteKit | npm run build | .svelte-kit/cloudflare |
| Vue | npm run build | dist |
| Analog | npm run build | dist/analog/public |
| Astro | npm run build | dist |
| Angular | npm run build | dist/cloudflare |
| Brunch | npx brunch build --production | public |
| Docusaurus | npm run build | build |
| Elder.js | npm run build | public |
| Eleventy | npx @11ty/eleventy | _site |
| Ember.js | npx ember-cli build | dist |
| GitBook | npx gitbook-cli build | _book |
| Gridsome | npx gridsome build | dist |
| Hugo | hugo | public |
| Jekyll | jekyll build | _site |
| MkDocs | mkdocs build | site |
| Pelican | pelican content | output |
| React Static | react-static build | dist |
| Slate | ./deploy.sh | build |
| Umi | npx umi build | dist |
| VitePress | npx vitepress build | .vitepress/dist |
| Zola | zola build | public |
Tento soubor bude obsahovat tři různé vlastnosti:
- verze: Definuje verzi schématu. V současnosti existuje pouze jedna verze schématu (verze 1), do budoucna však plánujeme přidávat další a usilujeme o zpětnou kompatibilitu.
- zahrnout: Definuje trasy, které budou vyvolávat Functions. Podporuje zástupné znaky.
- vyloučit: Definuje trasy, které nebudou vyvolávat Functions. Podporuje zástupné znaky.
excludemají vždy přednost předinclude.
Příklad konfigurace
Níže je příklad _routes.json.
{
"version": 1,
"include": ["/*"],
"exclude": []
}Tento _routes.json zavolá vaše Functions na všech trasách.
Níže je další příklad _routes.json soubor. Jakákoli cesta uvnitř /build adresář nevyvolá Function a nebude účtován poplatek za vyvolání Functions.
{
"version": 1,
"include": ["/*"],
"exclude": ["/build/*"]
}Fail open / closed
Pokud používáte tarif Workers Free, můžete nastavit, jak se Pages zachová po vyčerpání denního limitu bezplatného tarifu pro požadavky Pages Functions. Pokud například ve svých Pages Functions provádíte ověřování uživatelů nebo jinou kritickou funkcionalitu, možná budete chtít po vyčerpání limitu svůj projekt Pages vypnout.
-
V dashboardu Cloudflare přejděte na Workers & Pages stránce.
Přejděte na Workers & Pages ↗ -
Vyberte svůj projekt Pages.
-
Přejděte na Nastavení > Runtime > Fail open / closed.
"Fail open" znamená, že se statické soubory budou obsluhovat i nadále, i když by za normálních okolností nejprve proběhly Pages Functions. "Fail closed" znamená, že se místo statických souborů vrátí chybová stránka.
Denní limit požadavků pro Pages Functions lze zcela odstranit přechodem na Workers Standard.
Limity
Trasy vyvolání Functions mají následující limity:
- Musíte mít alespoň jedno pravidlo include.
- Celkem můžete mít nejvýše 100 pravidel include/exclude.
- Každé pravidlo může mít maximálně 100 znaků.