mirror of
https://github.com/ksyasuda/dotfiles.git
synced 2026-03-21 18:11:27 -07:00
164 lines
4.4 KiB
Markdown
164 lines
4.4 KiB
Markdown
# Configuration
|
|
|
|
## Getting Started
|
|
|
|
Navigate to [workers.cloudflare.com/playground](https://workers.cloudflare.com/playground)
|
|
|
|
- **No account required** for testing
|
|
- **No CLI or local setup** needed
|
|
- Code executes in real Cloudflare Workers runtime
|
|
- Share code via URL (never expires)
|
|
|
|
## Playground Constraints
|
|
|
|
⚠️ **Important Limitations**
|
|
|
|
| Constraint | Playground | Production Workers |
|
|
|------------|------------|-------------------|
|
|
| **Module Format** | ES modules only | ES modules or Service Worker |
|
|
| **TypeScript** | Not supported (JS only) | Supported via build step |
|
|
| **Bindings** | Not available | KV, D1, R2, Durable Objects, etc. |
|
|
| **wrangler.toml** | Not used | Required for config |
|
|
| **Environment Variables** | Not available | Full support |
|
|
| **Secrets** | Not available | Full support |
|
|
| **Custom Domains** | Not available | Full support |
|
|
|
|
**Playground is for rapid prototyping only.** For production apps, use `wrangler` CLI.
|
|
|
|
## Code Editor
|
|
|
|
### Syntax Requirements
|
|
|
|
Must export default object with `fetch` handler:
|
|
|
|
```javascript
|
|
export default {
|
|
async fetch(request, env, ctx) {
|
|
return new Response('Hello World');
|
|
}
|
|
};
|
|
```
|
|
|
|
**Key Points:**
|
|
- Must use ES modules (`export default`)
|
|
- `fetch` method receives `(request, env, ctx)`
|
|
- Must return `Response` object
|
|
- TypeScript not supported (use plain JavaScript)
|
|
|
|
### Multi-Module Code
|
|
|
|
Import from external URLs or inline modules:
|
|
|
|
```javascript
|
|
// Import from CDN
|
|
import { Hono } from 'https://esm.sh/hono@3';
|
|
|
|
// Or paste library code and import relatively
|
|
// (See patterns.md for multi-module examples)
|
|
|
|
export default {
|
|
async fetch(request) {
|
|
const app = new Hono();
|
|
app.get('/', (c) => c.text('Hello'));
|
|
return app.fetch(request);
|
|
}
|
|
};
|
|
```
|
|
|
|
## Preview Panel
|
|
|
|
### Browser Tab
|
|
|
|
Default interactive preview with address bar:
|
|
- Enter custom URL paths
|
|
- Automatic reload on code changes
|
|
- DevTools available (right-click → Inspect)
|
|
|
|
### HTTP Test Panel
|
|
|
|
Switch to **HTTP** tab for raw HTTP testing:
|
|
- Change HTTP method (GET, POST, PUT, DELETE, PATCH, etc.)
|
|
- Add/edit request headers
|
|
- Modify request body (JSON, form data, text)
|
|
- View response headers and body
|
|
- Test different content types
|
|
|
|
Example HTTP test:
|
|
```
|
|
Method: POST
|
|
URL: /api/users
|
|
Headers:
|
|
Content-Type: application/json
|
|
Authorization: Bearer token123
|
|
Body:
|
|
{
|
|
"name": "Alice",
|
|
"email": "alice@example.com"
|
|
}
|
|
```
|
|
|
|
## Sharing Code
|
|
|
|
**Copy Link** button generates shareable URL:
|
|
- Code embedded in URL fragment
|
|
- Links never expire
|
|
- No account required
|
|
- Can be bookmarked for later
|
|
|
|
Example: `https://workers.cloudflare.com/playground#abc123...`
|
|
|
|
## Deploying from Playground
|
|
|
|
Click **Deploy** button to move code to production:
|
|
|
|
1. **Log in** to Cloudflare account (creates free account if needed)
|
|
2. **Review** Worker name and code
|
|
3. **Deploy** to global network (takes ~30 seconds)
|
|
4. **Get URL**: Deployed to `<name>.workers.dev` subdomain
|
|
5. **Manage** from dashboard: add bindings, custom domains, analytics
|
|
|
|
**After deploy:**
|
|
- Code runs on Cloudflare's global network (300+ cities)
|
|
- Can add KV, D1, R2, Durable Objects bindings
|
|
- Configure custom domains and routes
|
|
- View analytics and logs
|
|
- Set environment variables and secrets
|
|
|
|
**Note:** Deployed Workers are production-ready but start on Free plan (100k requests/day).
|
|
|
|
## Browser Compatibility
|
|
|
|
| Browser | Status | Notes |
|
|
|---------|--------|-------|
|
|
| Chrome/Edge | ✅ Full support | Recommended |
|
|
| Firefox | ✅ Full support | Works well |
|
|
| Safari | ⚠️ Broken | Preview fails with "PreviewRequestFailed" |
|
|
|
|
**Safari users:** Use Chrome, Firefox, or Edge for Workers Playground.
|
|
|
|
## DevTools Integration
|
|
|
|
1. **Open preview** in browser tab
|
|
2. **Right-click** → Inspect Element
|
|
3. **Console tab** shows Worker logs:
|
|
- `console.log()` output
|
|
- Uncaught errors
|
|
- Network requests (subrequests)
|
|
|
|
**Note:** DevTools show client-side console, not Worker execution logs. For production logging, use Logpush or Tail Workers.
|
|
|
|
## Limits in Playground
|
|
|
|
Same as production Free plan:
|
|
|
|
| Resource | Limit | Notes |
|
|
|----------|-------|-------|
|
|
| CPU time | 10ms | Per request |
|
|
| Memory | 128 MB | Per request |
|
|
| Script size | 1 MB | After compression |
|
|
| Subrequests | 50 | Outbound fetch calls |
|
|
| Request size | 100 MB | Incoming |
|
|
| Response size | Unlimited | Outgoing (streamed) |
|
|
|
|
**Exceeding CPU time** throws error immediately. Optimize hot paths or upgrade to Paid plan (50ms CPU).
|