对于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 文件,并写上一些内容:


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

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

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

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

再次点击右上角的绿色实心三角形运行起来,来浏览器看看是否正常:

start

 不出意外,我们还是能看到Hello World。

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

本教程示例代码存放在GitHub,如果你想看完整代码,可以访问:https://github.com/fesiong/goblog
golang开发技术问题讨论,加入讨论群,可添加我的微信号:no_reg