INTEGRITY Документация

Поддержка модулей

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" },
	});
}