Maison >développement back-end >Golang >Comment implémenter des modèles hiérarchiques avec rechargement automatique dans Go App Engine ?

Comment implémenter des modèles hiérarchiques avec rechargement automatique dans Go App Engine ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-03 07:02:13269parcourir

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

Go AppEngine : modèles hiérarchiques avec rechargement automatique

Question :

Comment puis-je structurer modèles dans une application Go AppEngine pour atteindre :

  • Organisation hiérarchique
  • Compatibilité avec les outils HTML
  • Rechargement automatique des modèles sur le serveur de développement

Défis potentiels :

  • Template.ParseGlob() ne récurse pas
  • Le téléchargement de modèles de texte brut est déconseillé pour des raisons de performances

Solution :

Organisez votre projet Go AppEngine avec un module structure, où chaque package possède un préfixe d'URL et contient ses propres modèles. Cette approche vous permet de conserver un modèle de base cohérent et de l'étendre au sein de chaque package.

Exemple de structure de projet :

|-- 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 

Dans le fichier http.go de chaque package, enregistrer les gestionnaires pour les URL dont il est propriétaire. Par exemple, le package products gérerait les URL commençant par /products.

Dans chaque package, stockez les modèles dans un sous-répertoire "templates" et créez un modèle de base (par exemple, templates/base.html) que les autres modèles peut s'étendre.

Pour activer le rechargement automatique des modèles sur le serveur de développement, implémentez une fonction personnalisée pour surveiller les modifications dans les modèles 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)
    }
  }
}

Dans votre package principal, appelez watchTemplates() pour vérifier périodiquement les modifications du modèle et les recharger. Cela garantit que les mises à jour des modèles sont automatiquement reflétées dans votre application.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn