架构库 李嘉文的架构规范

微社区重构答疑

重构微社区可以当做是制作横屏的移动官网来实现,内容的接入,也是和双端官网一致,不同的是测试环节,会有一些类似登录态,白名单的环节,在下方测试环节,均会提及


一、重构环节

横屏微社区,竖屏如何兼顾?

横屏的微社区一般设计师很少会设计竖屏版本,因为重构基本可以自行处理。

规则:

  • 左侧fixed导航->底部fixed导航

  • 左栏变为顶部,右栏随后

微社区常用JS,iconfont字体库

微社区公共字体库

@font-face {
    font-family: "igfont";
    src: url('/images/js/bsCommonFiles/iconfont/iconfont.eot');
    src: url('/images/js/bsCommonFiles/iconfont/iconfont.eot?#iefix') format('embedded-opentype'),
    url('/images/js/bsCommonFiles/iconfont/iconfont.svg#iconfont') format('svg'),
    url('/images/js/bsCommonFiles/iconfont/iconfont.woff') format('woff'),
    url('/images/js/bsCommonFiles/iconfont/iconfont.ttf') format('truetype');
}
.igfont{font-family:"igfont" !important;font-style:normal;-webkit-font-smoothing: antialiased;-webkit-text-stroke-width: 0.1px;-moz-osx-font-smoothing: grayscale;}

微社区常用JS目录

/images/js/bsCommonFiles/js
SVN项目蜘蛛ID:11783

seo问题可以忽略?

是的,场景在游戏内,无需考虑SEO问题

是否能使用VueJs?

VUE框架在微社区中应用广泛,是微社区目前推荐的框架,也能快速提高开发速度。附上版本对应的JS地址

/images/js/bsCommonFiles/js/vue2.min.js  //vue 2.0
/images/js/bsCommonFiles/js/vue.js   //vue 1.0

适配能否像移动官网那样用rem?

适配选型可以参照移动官网,一般微社区有两种做法:

  1. 布局百分比适配,字体与图片均为设计稿除2尺寸

  2. rem布局计算, 基准值100 ,下方为<head>里插入的适配代码

(function (win,doc){
    if (!win.addEventListener) return;
    var html=document.documentElement;
    function setFont() {
        var w = html.clientWidth,
            h = html.clientHeight;
        html.style.fontSize= w > h ? w/1334*100+"px" : w/750*100+"px";
    }
    doc.addEventListener('DOMContentLoaded',setFont,false);
    win.addEventListener('resize',setFont,false);
    win.addEventListener('load',setFont,false);
})(window,document);

IOS中BORDER的0.5像素如何处理?

常规做法是判断IOS设备,给BODY添加class,区别样式:

JS:

if (/iP(hone|od|ad)/.test(navigator.userAgent)) {
    var v = (navigator.appVersion).match(/OS (\d+)_(\d+)_?(\d+)?/),
        version = parseInt(v[1], 10);
    if(version >= 8){
        document.documentElement.classList.add('hairlines')
    }
}

CSS:

.hairlines .index{border-width:0.5px}

接ams和平时双端官网接ams的方式是不是一样的?

一致。可能翻页涉及到模板的特殊配置。

内容常用系统

  1. 内容系统:AMS

  2. 视频系统:AMS、3.0系统(推荐用这个,有动态接口,能搜索,接入的话,让产品联系)


二、开发环节

开发的每个功能环节,都依赖游戏的登录态。因此需要特别注意这点

JS里的登录态约定(确保功能正常的基础)

微社区游戏的登录态,约定使用sessionStorage记录。字段:dataSearch,以下附上记录登录态代码:

var dataSearch = window.location.search;  //获取URL参数
//判断是否有内容或者是否是较为有效的登录态信息
if (!sessionStorage.dataSearch && dataSearch.indexOf("appid") != -1 && dataSearch) {
    sessionStorage.dataSearch = window.location.search;   //将登录态存到sessionStorage
}

AMS文章详情如何接入评论系统?

  1. 找kensinchen(陈海泉)为业务创建评论ID

  2. 配置新闻模板,[[AMS详情页接入评论2.0]]


双平台判断方法

一般登录态格式如下:

?partition=1011&roleid=104994510013439323&area=1&algorithm=v2&version=1.13.11×tamp=1494567380&appid= wxfdab5af74990787a &openid=oiz-ewRrOIHDAt88S5FquKqChdvw


判断规则 :最简单的方法是判断登录态的appid属性是否含有wx字符,例子:

//获取URL参数
 function getParamVal(url, name){
    url = url || location.search;
    url = url.replace(/\'|\"|\<|\>/,"");
    var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
    var r = url.substr(url.indexOf("\?")+1).match(reg);
    if (r!=null){
        return r[2];
    }else{
        return null;
    }
}
//从sessionStorage的dataSearch中获得登录态的appid
var appid = getParamVal(sessionStorage['dataSearch'],"appid");
console.log(appid,"appid")
if(appid.indexOf("wx")>-1){
    //游戏圈逻辑
}else{
    //部落逻辑
}

VUE2.0的判断方法:

//微信平台:platform="wx"、QQ平台:platform="qq"、其他else
computed : {
    //双平台判断
    platform:function(){
        if(sessionStorage['dataSearch']&&sessionStorage['dataSearch'].indexOf("appid")>-1){
            var appid = getParamVal(sessionStorage['dataSearch'],"appid");
            if(appid.indexOf("wx")>-1){
                return "wx"
            }else{
                return "qq"
            }
        }else{
            return "else"
        }
    },
}

三、测试环节

如何在MSDK浏览器中模拟页面测试?

  1. 使用MSDK浏览器测试客户端,见附件。IOS使用itools连接电脑进行安装即可

  2. 用现有游戏微社区,JS加白名单逻辑,跳转到你测试的页面

如何抓游戏登录态?

  1. WINDOWS使用fiddler抓包(需要注意HTTPS,详细暂且百度)

  2. MAC使用charles抓包(需要注意HTTPS,详细暂且百度)

  3. 使用页面输出,复制到电脑,一般思路是用textarea装着。测试入口用下方白名单方式实现。