对于golang开发网站来说,直接用golang来处理输出内容,很难满足我们多样化的页面效果需求的,因此,我们需要先给我们的博客网站设置一个模板引擎。模板引擎的作用就是让我们可以使用html标记语言来编排我们的页面,包括html、css、js等的运用。

我们在Serve 函数中,增加如下代码

  pugEngine := iris.Django("./template", ".html")
    if config.ServerConfig.Env == "development" {
        //测试环境下动态加载
        pugEngine.Reload(true)
    }
    bootstrap.Application.RegisterView(pugEngine)

这个代码块的作用是选择使用类Django的模板引擎语法,模板存放的目录是template,模板的后缀的通用的.html 文件后缀,如果我们在config.json 中配置了env 为 development 的话,则动态加载模板。动态加载模板的一个好处是,我们在调试和修改模板的时候,不需要重启golang项目,就可以通过刷新浏览器来看到修改后的效果。如果我们不启用动态加载,则每次修改模板,都需要重启golang项目才能看到改动效果。但是动态加载会影响网站加载性能,因为每次访问,他都需要重新解析模板。所以我们就有了env参数配置,在本地调试的时候,使用development模式,动态加载模板,方便调试,在服务器上的生产环境,我们并不需要经常改动代码,所以在服务器上,我们就使用production模式,他在启动的时候就将模板加载到内存中,每次访问就可以加快访问速度了。

添加模板引擎代码后的Serv函数如下:

func (bootstrap *Bootstrap) Serve() {
    bootstrap.Application.Logger().SetLevel(bootstrap.LoggerLevel)

    bootstrap.LoadRoutes()

    pugEngine := iris.Django("./template", ".html")
    if config.ServerConfig.Env == "development" {
        //测试环境下动态加载
        pugEngine.Reload(true)
    }
    bootstrap.Application.RegisterView(pugEngine)

    bootstrap.Application.Run(
        iris.Addr(fmt.Sprintf("127.0.0.1:%d", bootstrap.Port)),
        iris.WithoutServerError(iris.ErrServerClosed),
        iris.WithoutBodyConsumptionOnUnmarshal,
    )
}

现在我们已经将模板引擎注册到iris中了,接下来,我就就可以使用html标记语言来编写模板了。接着我们在前面已经创建的template文件夹中,建立一个index.html 文件,并写上一些内容:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Hello World</title>
</head>
<body>
Hello World!
</body>
</html>

同样的,我们先尝试输出Hello World试试看。

index.html 文件写完了,我们还需要在控制器里引用,才能让他生效,我们再修改下 IndexPage 函数,让他调用我们编写好的index.html:

func IndexPage(ctx iris.Context) {
    ctx.View("index.html")
}

再次点击右上角的绿色实心三角形运行起来,来浏览器看看是否正常:
运行
不出意外,我们还是能看到Hello World。

如果不出意外的话,我们依然是看到Hello World!,如果能顺利看到Hello World,恭喜你,模板引擎选择和配置完成。

完整的项目示例代码托管在GitHub上,需要查看完整的项目代码可以到github.com/fesiong/goblog 上查看,也可以直接fork一份来在上面做修改。


开发小程序的之朴
13 声望3 粉丝