ホームページ > バックエンド開発 > Golang > Go App Engine で自動リロードを備えた階層型テンプレートを実装するにはどうすればよいですか?

Go App Engine で自動リロードを備えた階層型テンプレートを実装するにはどうすればよいですか?

Linda Hamilton
リリース: 2024-12-03 07:02:13
オリジナル
225 人が閲覧しました

How to Implement Hierarchical Templates with Automatic Reloading in Go App Engine?

Go AppEngine: 自動リロードを備えた階層型テンプレート

質問:

どのように構成すればよいですかGo AppEngine アプリケーションのテンプレート達成:

  • 階層型組織
  • HTML ツールとの互換性
  • 開発サーバーでのテンプレートの自動再読み込み

可能性課題:

  • Template.ParseGlob() は再帰しません
  • パフォーマンス上の理由から、生のテキスト テンプレートのアップロードは推奨されません

解決策:

整理するモジュール構造を備えた Go AppEngine プロジェクト。各パッケージは URL プレフィックスを所有し、独自のテンプレートが含まれています。このアプローチにより、一貫した基本テンプレートを維持し、各パッケージ内でそれを拡張できます。

プロジェクト構造の例:

|-- app.yaml
|-- app
|   +-- http.go
|-- templates
|   +-- base.html
+-- github.com
    +-- storeski
        +-- appengine
            +-- products
            |   +-- http.go
            |   +-- templates
            |       |-- list.html
            |       +-- detail.html
            +-- account
                |-- http.go
                +-- templates
                    |-- overview.html
                    |-- notifications.html 
ログイン後にコピー

各パッケージの http.go ファイルでは、所有する URL のハンドラーを登録します。たとえば、products パッケージは、/products で始まる URL を処理します。

各パッケージ内で、テンプレートを「templates」サブディレクトリに保存し、他のテンプレートが使用できる基本テンプレート (templates/base.html など) を作成します。

開発サーバーでのテンプレートの自動リロードを有効にするには、テンプレートの変更を監視するカスタム関数を実装します。 directory:

func watchTemplates() {
  ticker := time.NewTicker(1 * time.Second)
  for range ticker.C {
    if err := parseTemplates(); err != nil {
      log.Printf("Error parsing templates: %v", err)
    }
  }
}
ログイン後にコピー

メイン パッケージで、watchTemplates() を呼び出して、テンプレートの変更を定期的にチェックし、再読み込みします。これにより、テンプレートの更新がアプリケーションに自動的に反映されます。

以上がGo App Engine で自動リロードを備えた階層型テンプレートを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート