tug v0.45.0

ガイド

tug ガイド

このページの英語版は翻訳後に更新されているため、内容が古い可能性があります。 英語で読む

tug は、フロントエンドに Inertia.js を使う Go アプリのための Web フレームワークです。Go のハンドラーが、間に API を挟まずに、props を渡して React、Vue、Svelte のページをレンダリングし、アプリ全体は単一のバイナリになります。このガイドでは、新しいアプリを作るところからデプロイまでを扱います。さらに詳しいことは、pkg.go.dev にある各パッケージのドキュメントを参照してください。

  1. はじめに

    tug をインストールし、アプリを作って実行し、ページとフォームを追加します。

  2. ルーティングとハンドラー

    App、ルート、絶対 URL と署名付きリンク、グループ、ミドルウェア(セキュリティヘッダーもその 1 つ)、リクエストに応答したルート、プロキシの背後にいるクライアントのアドレス、Ctx、ファイル、ダウンロード、ストリームとイベント、リクエストのバインド、エラー。

  3. ページ

    Inertia のページとその props、ルートテンプレートとその nonce、後から計算される props、共有 props、リダイレクト、ページでのダウンロードとイベント、エラーページ、Vite、Inertia の DevTools。

  4. サーバーサイドレンダリング

    初回訪問のページを、アプリと並んで動く Node がサーバーでレンダリングする仕組みと、ssr パッケージ。

  5. フォームとセッション

    バリデーション、アプリ独自のルール、フォーカスが外れた時点で各フィールドを検証するフォーム、フラッシュメッセージ、セッション、CSRF。

  6. 多言語対応

    tug とアプリの文言を言語ごとのファイルから読み、リクエストの言語で表示する仕組み、lang パッケージ、tug lang。

  7. ファイル

    サイズと種類で検証されるアップロード、storage パッケージによるアプリのディスクや S3 への保存、公開または署名付きのファイルへのリンク。

  8. アカウント

    SQLite、Postgres、MySQL で動く認証スターターと、その API トークンと通知。auth パッケージと、CC や BCC、添付ファイル、ワンクリックの配信停止リンクに対応した mail パッケージ。

  9. マイグレーション

    SQL ファイルによるデータベースのテーブルの作成と変更。各ファイルは、アプリの起動時か migrate コマンドで、順番に 1 回ずつ実行されます。次のファイルを作る tug migrate new と、migrate パッケージ。

  10. 認可

    ユーザーがある対象に対して何をしてよいか、auth パッケージのアビリティ、理由を伝える 403 としての拒否、ページのユーザーにできることを props で渡す方法。

  11. 暗号化

    アプリのキー、tug がそのキーで暗号化・署名するもの、アプリ独自の値のための crypt パッケージ、キーのローテーション。

  12. バックグラウンドジョブ

    リクエストより長くかかる処理のための queue パッケージ。失敗したときの再実行、スケジュールによる実行(タイムゾーンの指定も可能)、何度投入されても 1 つしか待機しないジョブ、すべてのインスタンスを通じた同時実行数や 1 秒あたりの実行数の制限、最終的な失敗と各実行の結果の通知。

  13. キャッシュ

    計算に時間のかかるものを、アプリのどのインスタンスからも見つけられる場所に保存する cache パッケージと、同時に二重に実行してはならない処理のためのロック。

  14. ブロードキャスト

    チャンネル上のイベントを扱う broadcast パッケージ。イベントはアプリのデータベースを通じて、すべてのインスタンスで開かれているページに届き、ページは変わったものを再読み込みします。

  15. TypeScript

    tug gen が Go のコードから書き出す型。

  16. テスト

    アプリのページ、フォーム、アップロード、ログインを Go でテストするための Inertia のクライアントである tugtest パッケージ、メールのための mailtest、イベントのテスト。

  17. デプロイ

    バイナリ 1 つ、Dockerfile、環境変数、アプリ自身が提供する HTTPS と Let's Encrypt の証明書、ブラウザーがアプリのページで何をしてよいかを伝えるヘッダー(Content-Security-Policy もその 1 つ)、ログ、メトリクス。

  18. CLI

    tug new、tug dev、tug gen、tug routes、tug lang、tug migrate、tug build、tug key の詳細。

ロードマップには、tug がどのように作られてきたか、その背後にある判断、今後の予定があります。ベンチマークには、tug がリクエストごとにかけるコスト、tug で作ったアプリの実行に必要なもの、それらの計測方法があります。

tug