6.4 组件设计:游戏主页MobieGame
在views中创建文件MobileGame.vue,需要到route/index.js中新增页面入口,参考之前的实训的路由配置
总体上它是这样组成的:
<div style="margin:0 auto;width:500px"> <div style="height:20vh;background:yellow"> 顶部滚动 </div> <div style="height:70vh;background:#ccc"> 中间 </div> <div style="height:10vh;background:blue"> 底部 </div></div>
结构大概是这样:
顶部滚动
中间
底部
然后它的中间部分就是主要的游戏展示区:

Game和GameFrame前面已经做好了,而在本页面会出现多个GameFrame,需要从数据库里查询:
GameFrame在数据库是这样的:

id是主键
game_type是框内出现的游戏类型,就是使用此关键字去查询游戏
game_num是查询的游戏数量
mode就是上一节提到的GameFrame是横拍还是竖排的关键css类,原来也是从数据库里查询得到,此字段和最后的css字段配合使用,css字段用在Game组件,参见上一章节关于横排还是竖排的说明。
tab_name是显示在游戏框左上方的文字
http的json接口是:https://www.codessp.cn/api/gameFrames点击查看
把数据复制到www.json.cn解析:

返回的数据中的data就是我们要的游戏框架GameFrame所需要的数据。在MobileGame里定义一个变量gameFrames,把查询到的数据赋给此变量,然后在template遍历它,而MobileGame.vue的template如下所示:
<div style="margin:0 auto;width:500px"> <div style="height:20vh;background:yellow"> 顶部滚动 </div> <div style="height:70vh;background:#ccc"> <div> <template v-for="(f,i) in gameFrames" :key="i"> <GameFrame :frame="f"/> </template> </div> </div> <div style="height:10vh;background:blue"> 底部 </div></div>
接下来的要修改GameFrame.vue的template部分,里面所有之前固定写好的值,都需要通过属性frame从外部传入,就好像Game的值通过属性game得到(game的值在GameFrame指定)。
GameFrame的js部分也要修改,之前发起的请求都是固定值:https://www.codessp.cn/api/games?type=仙侠&num=10
现在这个请求的type和num都从frame这个属性里取得。