html/template: "movie/index.html" is undefined

来源:4-3 Iris框架入门---快速入门案例

Quincy515

2019-09-03

目录结构

├── datamodels
│   └── movie.go
├── main.go
├── repositories
│   └── movie_repository.go
├── services
│   └── movie_services.go
└── web
    ├── controllers
    │   └── movie_controllers.go
    └── views
        └── movie
            └── index.html


文件datamodels/movie.go

package datamodels
type Movie struct {
   Name string
}

文件repositories/movie_repository.go

package repositories
import "goland/project/datamodels"
type MovieRepository interface {
   GetMovieName() string
}
type MovieManager struct{}
func NewMovieManager() MovieRepository {
   return &MovieManager{}
}
func (m *MovieManager) GetMovieName() string {
   // 模拟赋值给模型
   movie := &datamodels.Movie{Name: "视频"}
   return movie.Name
}

文件services/movie_services.go

package services

import (
   "fmt"
   "goland/project/repositories"
)

type MovieService interface {
   ShowMovieName() string
}

type MovieServiceManager struct {
   repo repositories.MovieRepository
}

func NewMovieServiceManager(repo repositories.MovieRepository) MovieService {
   return &MovieServiceManager{repo: repo}
}

func (m *MovieServiceManager) ShowMovieName() string {
   fmt.Println("获取到的视频名称为: " + m.repo.GetMovieName())
   return "获取到的视频名称为: " + m.repo.GetMovieName()
}

文件web/controllers/movie_controllers.go

package controllers

import (
   "goland/project/repositories"
   "goland/project/services"

   "github.com/kataras/iris/mvc"
)

type MovieController struct{}

func (c *MovieController) Get() mvc.View {
   movieRepository := repositories.NewMovieManager()
   movieService := services.NewMovieServiceManager(movieRepository)
   movieResult := movieService.ShowMovieName()
   return mvc.View{
      Name: "movie/index.html",
      Data: movieResult,
   }
}

文件文件web/views/movie/index.html

<h2>{{.}}</h2>

文件main.go

package main

import (
   "goland/project/web/controllers"

   "github.com/kataras/iris"
   "github.com/kataras/iris/mvc"
)

func main() {
   app := iris.New()                                   // 1. 创建iris框架
   app.Logger().SetLevel("debug")                      // 2. 设置debug模式
   app.RegisterView(iris.HTML("./web/views", ".html")) // 3. 注册模板
   // 4. 其他初始化操作,比如数据库,session初始化
   // 5. 注册控制路由
   mvc.New(app.Party("/hello")).Handle(new(controllers.MovieController))
   // 6. 启动服务
   app.Run(
      iris.Addr("localhost:8080"), // 启动服务在8080端口
      //iris.WithoutVersionChecker,                    // 启动时禁止检测框架版本差异
      iris.WithoutServerError(iris.ErrServerClosed), // 忽略服务器错误
      iris.WithOptimizations,                        // 让程序自身尽可能的优化
   )
}


写回答

2回答

慕粉1311528564

2020-02-15

app.RegisterView(iris.HTML("./web/views", ".html")) // 3. 注册模板

这里./web/views需要使用绝对路径。我的是mac系统 /Users/u/GolandProjects/imooc-iris/web/views

0
0

Cap

2019-09-05

nice,非常好。

0
0

全流程开发 GO实战电商网站高并发秒杀系统

运用架构设计与系统化思维,从容应对不同流量等级的“秒杀”场景

1476 学习 · 443 问题

查看课程