ガイド
tug ガイド
このページの英語版は翻訳後に更新されているため、内容が古い可能性があります。 英語で読む
tug は、フロントエンドに Inertia.js を使う Go アプリのための Web フレームワークです。Go のハンドラーが、間に API を挟まずに、props を渡して React、Vue、Svelte のページをレンダリングし、アプリ全体は単一のバイナリになります。このガイドでは、新しいアプリを作るところからデプロイまでを扱います。さらに詳しいことは、pkg.go.dev にある各パッケージのドキュメントを参照してください。
- はじめに
tug をインストールし、アプリを作って実行し、ページとフォームを追加します。
- ルーティングとハンドラー
App、ルート、絶対 URL と署名付きリンク、グループ、ミドルウェア(セキュリティヘッダーもその 1 つ)、リクエストに応答したルート、プロキシの背後にいるクライアントのアドレス、
Ctx、ファイル、ダウンロード、ストリームとイベント、リクエストのバインド、エラー。 - ページ
Inertia のページとその props、ルートテンプレートとその nonce、後から計算される props、共有 props、リダイレクト、ページでのダウンロードとイベント、エラーページ、Vite、Inertia の DevTools。
- サーバーサイドレンダリング
初回訪問のページを、アプリと並んで動く Node がサーバーでレンダリングする仕組みと、
ssrパッケージ。 - フォームとセッション
バリデーション、アプリ独自のルール、フォーカスが外れた時点で各フィールドを検証するフォーム、フラッシュメッセージ、セッション、CSRF。
- 多言語対応
tug とアプリの文言を言語ごとのファイルから読み、リクエストの言語で表示する仕組み、
langパッケージ、tug lang。 - ファイル
サイズと種類で検証されるアップロード、
storageパッケージによるアプリのディスクや S3 への保存、公開または署名付きのファイルへのリンク。 - アカウント
SQLite、Postgres、MySQL で動く認証スターターと、その API トークンと通知。
authパッケージと、CC や BCC、添付ファイル、ワンクリックの配信停止リンクに対応したmailパッケージ。 - マイグレーション
SQL ファイルによるデータベースのテーブルの作成と変更。各ファイルは、アプリの起動時か
migrateコマンドで、順番に 1 回ずつ実行されます。次のファイルを作るtug migrate newと、migrateパッケージ。 - 認可
ユーザーがある対象に対して何をしてよいか、
authパッケージのアビリティ、理由を伝える 403 としての拒否、ページのユーザーにできることを props で渡す方法。 - 暗号化
アプリのキー、tug がそのキーで暗号化・署名するもの、アプリ独自の値のための
cryptパッケージ、キーのローテーション。 - バックグラウンドジョブ
リクエストより長くかかる処理のための
queueパッケージ。失敗したときの再実行、スケジュールによる実行(タイムゾーンの指定も可能)、何度投入されても 1 つしか待機しないジョブ、すべてのインスタンスを通じた同時実行数や 1 秒あたりの実行数の制限、最終的な失敗と各実行の結果の通知。 - キャッシュ
計算に時間のかかるものを、アプリのどのインスタンスからも見つけられる場所に保存する
cacheパッケージと、同時に二重に実行してはならない処理のためのロック。 - ブロードキャスト
チャンネル上のイベントを扱う
broadcastパッケージ。イベントはアプリのデータベースを通じて、すべてのインスタンスで開かれているページに届き、ページは変わったものを再読み込みします。 - TypeScript
tug genが Go のコードから書き出す型。 - テスト
アプリのページ、フォーム、アップロード、ログインを Go でテストするための Inertia のクライアントである
tugtestパッケージ、メールのためのmailtest、イベントのテスト。 - デプロイ
バイナリ 1 つ、Dockerfile、環境変数、アプリ自身が提供する HTTPS と Let's Encrypt の証明書、ブラウザーがアプリのページで何をしてよいかを伝えるヘッダー(Content-Security-Policy もその 1 つ)、ログ、メトリクス。
- CLI
tug new、tug dev、tug gen、tug routes、tug lang、tug migrate、tug build、tug keyの詳細。