← Cloudflare Pages / pages / functions
Поддержка модулей
Pages Functions поддерживают несколько типов модулей, подобно Workers ↗. Это означает, что вы можете импортировать и использовать внешние модули, такие как WebAssembly (Wasm), text и binary файлы внутри кода Functions.
Это руководство расскажет, как использовать эти разные типы модулей в Pages Functions.
Модули ECMAScript
Модули ECMAScript (или сокращенно ES Modules) являются официальным стандартизированный ↗ система модулей для JavaScript. Это рекомендуемый способ писать модульный и переиспользуемый код на JavaScript.
ES Modules ↗ определяются с помощью import и export инструкции. Ниже приведён пример скрипта, написанного в формате ES Modules, и Pages Function, который импортирует этот модуль:
export function greeting(name: string): string {
return `Hello ${name}!`;
}import { greeting } from "../src/greeting.ts";
export async function onRequest(context) {
return new Response(`${greeting("Pages Functions")}`);
}Модули WebAssembly
WebAssembly (сокращенно Wasm) позволяет компилировать код на таких языках, как Rust, Go или C, в бинарный формат, который может выполняться в самых разных средах, включая веб-браузеры, Cloudflare Workers, Cloudflare Pages Functions и другие среды выполнения WebAssembly.
Распространяемая, загружаемая и исполняемая единица кода в WebAssembly называется модуль ↗.
Ниже приведён простой пример импорта модулей Wasm в код Pages Functions:
import addModule from "add.wasm";
export async function onRequest() {
const addInstance = await WebAssembly.instantiate(addModule);
return new Response(
`The meaning of life is ${addInstance.exports.add(20, 1)}`,
);
}Текстовые модули
Текстовые модули представляют собой нестандартизированный способ импорта ресурсов, например HTML-файлов, в виде String.
Чтобы импортировать приведённый ниже HTML-файл в код Pages Functions:
<!DOCTYPE html>
<html>
<body>
<h1>Hello Pages Functions!</h1>
</body>
</html>Используйте следующий скрипт:
import html from "../index.html";
export async function onRequest() {
return new Response(html, {
headers: { "Content-Type": "text/html" },
});
}Binary Modules
Binary Modules представляют собой нестандартизированный способ импорта двоичных данных (например, изображений) в виде ArrayBuffer.
Ниже приведён простой пример импорта данных из бинарного файла в код Pages Functions:
import data from "../my-data.bin";
export async function onRequest() {
return new Response(data, {
headers: { "Content-Type": "application/octet-stream" },
});
}