Cloudflare Worker试用

TO BE DONE…

首先我们需要了解一下 service worker 是什么,简单来说可以认为是一个基于请求/响应模型的代理服务器。 Workers 是 Cloudflare 提供的一种 serverless 计算能力,基于 v8 实现(非 node 环境),运行在 CDN 网络的边缘节点上。功能与其类似,区别是运行在了服务端。

Workers 提供了两种编程界面:service worker 和 module worker。它们的主要区别在于如何处理请求(request)以及如何将处理逻辑绑定到 Worker 实例上。

  1. Service Worker
    • 在 Service Worker 模式中,你需要手动挂载(attach)请求处理器(request handler)。这意味着你需要通过 addEventListener 来监听 fetch 事件,并在事件处理程序中定义你的请求处理逻辑。
    • 举例来说,你需要编写类似于 addEventListener('fetch', event => {...}) 的代码来注册一个事件监听器,然后在其中定义如何处理来自客户端的请求。
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
// Initialize Worker
addEventListener('fetch', event => {
  event.respondWith(handler(event.request));
});

async function handler(request) {
  return new Response('Hello worker!', {
    headers: { 'content-type': 'text/plain' },
  });
}
  1. Module Worker
    • 在 Module Worker 模式中,你只需使用 export default 来导出一个对象,该对象包含一个或多个事件处理函数。在这种情况下,你无需手动挂载请求处理器。
    • 你可以简单地导出一个包含了 fetch 处理逻辑的对象,不需要手动添加事件监听器。
1
2
3
4
5
6
7
export default {
  fetch(request) {
    return new Response('Hello worker!', {
      headers: { 'content-type': 'text/plain' },
    });
  },
};

总的来说,Service Worker 较为底层,需要手动挂载请求处理器,这使得你能够更灵活地控制请求的处理逻辑。而 Module Worker 则更加简洁,你只需定义处理函数并导出即可,无需手动添加事件监听器。选择使用哪种取决于你的具体需求和偏好。

Wrangler最初是开源的,用于Workers的Rust CLI,现已升级为正式的Workers CLI,可满足您所有Workers部署需求。

1
npm install -g @cloudflare/wrangler

使用现有的 Workers 模板创建新项目。

https://developers.cloudflare.com/workers/wrangler/commands/#generate

1
wrangler generate [<NAME>] [TEMPLATE]
  • NAME string 可选(默认:工作目录名称)

  • TEMPLATE string 可选