多玩游戏大厅是fis3构建和打包(Webpack不支持IE8),通过avalon配合JQuery实现视图的逻辑(Vue和React都不支持)。页面跳转是通过多页面实现的(不是一个单页面应用)。
环境 | 域名
-|-
正式环境 |http://wan.duowan.com
测试环境 |http://test-wan.duowan.com
预发环境 |http://new-wan.duowan.com
|- src
|- api --- 通用的http请求api(封装http请求)
|- modules --- 按模块分类的api
|- assets --- 静态资源文件(图片)
|- components --- 不同模块对应的小组件
|- lib --- 项目引入的第三方库
|- mixins --- 全局混合
|- modules --- 封装的插件(lazhload,md5,qrcode...)
|- page --- 页面代码
|- sdk --- 全局对象DW_APP_SDK 用于调用SDK的API
|- style --- 样式表(components,modules,page)
|- tpl --- 模板
|- typeing --- 类型检查
|- eslintrc.js --- eslint配置文件
|- fis-conf.js --- fis配置文件
sdk/index
文件保存全局方法,分别给游戏大厅,游戏盒子交互的。mixins/index
文件是全局混入的方法,在avalon定义VM的时候要通过underscore的extend方法扩展。import _ from "underscore"
var vm = avalon.define(_.extend({
}),`mixins(这里加mixins的内容)`)
getLoginGame ({ gid, sid, userSource }) {
return ax.get('/loginGame.do', {
params: { gid, sid, userSource }
})
},
fis的语法
?__inline
可以实现对整个HTML文件的引入
background(url?__sprite)
实现对图片进行整合成雪碧图
暂时遇到的坑
游戏是通过iframe承载的,假如需要在游戏上面添加覆盖元素,要将覆盖的元素最下方添加一个空的iframe,设置z-index都是无效的
上报的时候,在点击关闭的时候触发onbeforeunload的方法。这个方法在JQuery引入的情况下,Chrome,Firefox浏览器都不能直接使用要套在JQuery方法里面才能使用
$(window).load(function () {
window.onunload = function () {
_this.gameReport()
return "Are you sure"
}
})
page文件夹中的hezi和popup
|- page // hezi和lolbox是通过channel这个参数去识别 var channel = getParam('channel') || 'lol'
|- hezi // 坦克世界和dnf
|- lolbox // lol盒子和旧版dnf
|-...
|- popup // 都是大厅里面的弹窗
|- propCenter // 道具中心在盒子client中广告中体现(暂时)