# pages-tinygo - A template for starting a Cloudflare Pages Functions project with tinygo. - This template uses the [`workers`](https://github.com/syumai/workers) package to run. ## Usage - `main.go` includes a [chi](https://github.com/go-chi/chi) HTTP router implementation with three different routes. Feel free to edit this code and implement your own HTTP router. ## Requirements - Node.js - [wrangler](https://developers.cloudflare.com/workers/wrangler/) - just run `npm install -g wrangler` * tinygo 0.29.0 or later ## Getting Started * If not already installed, please install the [gonew](https://pkg.go.dev/golang.org/x/tools/cmd/gonew) command. ```console go install golang.org/x/tools/cmd/gonew@latest ``` * Create a new project using this template. - Second argument passed to `gonew` is a module path of your new app. ```console gonew github.com/syumai/workers/_templates/cloudflare/pages-tinygo your.module/my-app # e.g. github.com/syumai/my-app cd my-app go mod tidy make build # build Go Wasm binary make dev # start running dev server curl http://localhost:8787/api/hello # outputs "Hello, Pages Functions!" ``` ## Development ### Commands ``` make dev # run dev server make build # build Go Wasm binary make deploy # deploy worker ``` ### Testing dev server - You can send HTTP requests using tools like curl. ``` $ curl http://localhost:8787/api/hello Hello, Pages Functions! ``` ``` $ curl http://localhost:8787/api/hello?name=Example Hello, Example! ``` ``` $ curl http://localhost:8787/api/hello2 Hello, Hello world! ``` ``` $ curl http://localhost:8787/api/hello3 Hello, Hello, Hello world! ```