beego的学习 第二部分

继续上次的学习

渲染基本页面,向模板传入参数,模板定义与调用,输出json内容

 

1.渲染基本页面

在view下新建一个test文件夹,新建一个hello.html

1

hello.html

然后在controllers目录下的default控制器文件中写一个控制器

可以通过Hello方法,映射到模板test/hello.html

之后在routers目录下的router路由文件中注册路由

注意,和上篇文章不同,这里出现了一个新的参数get:Hello,规定访问方式为get。

总之,只要访问/hello路径,就会通过这个路由,分配给Hello方法控制器进行处理,然后映射到hello.html文件

我的理解:

如果不设置get:Hello参数,默认就是get方法

控制器的方法一定要大写开头,即Hello,如果写成hello,那么将无法映射,报错找不到这个映射方法

2.向模板传入参数

首先改写controller中的方法

然后改写模板文件

这里需要注意的是beego中特殊的映射语法,我感觉比较复杂。如果非要采取映射手段,就一定要熟悉使用方法。

可以看到对应的使用效果:

1

我的理解(因为接触的少,所以可能理解有问题,回头再更正吧):

(1)第一句:

.like代表我们传入的整个名为like的slice对象。

range是遍历方法,range .like即是用range函数遍历like中的所有元素。

紧跟其后的的逗号要作为字符显示在每个元素之前,所以可以看到“,xht,pjl”这样的效果。

逗号之后的{{.}}代表遍历的每个元素。

{{end}}作为结束符,代表当前语法已经结束了。

(2)第二句:

因为我不想在第一个元素前也加上逗号,所以需要进行判断是否第一个元素。

{{range $index,$value := .like}}遍历like对象,将slice拆分为索引index和value值。

{{if $index}}当索引不为0时,采取后面的操作并且继续。如果为0,不采取后面的操作,但是继续。

所以我们就能看到“xht,pjl”这样的效果,比起之前,xht之前的逗号没有了,就是被if条件过滤掉了,所以没有采取加上逗号的处理

其实我觉得这条语句还是很难理解的,为了实现这种效果,不值得专门去学习这一套法则。我还是主张使用restful的方式,通过json和前端配合实现,这样能更好地实现前后端分离,感觉更加科学。

3.模板的定义和调用

如何为当前的模板文件加上其他组件?

在test目录下新建一个组件footer.html

1

footer.html

是一个实现了页脚的html文件。

之后在hello.html中加上对footer.html的引用

实现效果:

1

我的理解

{{template “/test/footer.html”}}通过引用,把footer.html的内容和hello.html加载到了一起,实现了组件化的效果。因为没有进行试验,我不知道在id一致,元素重复有冲突的情况下,还能不能实现这样的效果。(这个回头再看吧)

4.输出json内容

上次已经尝试过返回json了,这次我准备再次熟悉这个套路。

先写controller方法

然后配置路由路径:

实现效果:

1

我的理解:

感觉这个套路已经玩得挺熟练了…

5.总结

通过这次的学习,我感觉还是喜欢restful,不太喜欢用模板。当然,具体业务还是需要具体分析。

发表评论

电子邮件地址不会被公开。 必填项已用*标注