所在的位置: html >> html优势 >> Gin多级视图目录实现

Gin多级视图目录实现

在项目中并没有使用angular或是vue这类的单页应用,还是使用的是模版引擎,虽然Gin中也支持,但还是比较弱的,默认只支持了html.template。这次碰到的问题是多级视图目录的问题,虽然多级目录会有性能的问题,但还是比较常见的。

一、Gin默认目录视图

Gin虽然也是支持模版引擎的(html.template),但是比较弱,只能支持到一级目录或是二级目录,而且一级目录与二级目录还不能同时使用。

1、一级目录的支持操作

LoadHTMLGlob(templates/*),此操作相当于加载templates目录下所有的文件

2、二级目录的支持操作

LoadHTMLGlob(templates/**/*)

虽然是已以支持了二级目录,但还是比较麻烦的,因为除了要进行模版加载设置,还要在视图页面进行定义。

二、Gin多级目录视图实现

在Gin的官方文档中我们可以找到一个叫Multitemplate的例子,指向的是自家插件的multitemplate,但今天介绍的不是此插件而是在此插件进行的扩展ginmultitemplate。

首先下载导入ginmultitemplate。

使用起来很简单,可以根据例子直接设置视图的根目录及模板引擎的后辍,便可直接使用。

实现也很简单,只有一个templates.go文件,在使用过程中其它还有一些别的问题:

1、windows下报找不到目录文件问题

由于windows与linux路径不一致(windows:/a/b/c/abc.html;linux:a\b\c\abc.html)导致在windows下会报找不到目录文件。

在go中,包filepath提供了ToSlash方法,可以把windows下的路径转换为/这种形式,可以解决这种问题。

2、模板根目录配置问题

此处理的问题,我还没有好的方法进行处理,后续处理好进行补充。

此处的代码有一定的问题,通过模板根目录的长度去除路径中的模块信息,但是如果模板目录的定义成:/template,/template/,./template,/template/,这种情况时就需要根据不同的情况进行不同的处理。




转载请注明:http://www.aierlanlan.com/grrz/1957.html