FastClick
fastclick专为移动端而生,具体解决了移动端的点透bug fastclick项目地址source
var FastClick = require('./core/fastclick');
window.addEventListener('load', function() {
FastClick.attach(document.body);
}, false);
MUI是基于zepto的轻量级mobile UI组件库,因为1717wan移动站的业务需要而诞生。 MUI由matthewsun开发,基于开源MIT协议,支持商业和非商业用户的免费使用和任意修改,您可以在MUI上快速了解此项目。
fastclick专为移动端而生,具体解决了移动端的点透bug fastclick项目地址source
var FastClick = require('./core/fastclick');
window.addEventListener('load', function() {
FastClick.attach(document.body);
}, false);
func.js,封装了一些与业务无关的底层方法,分为了CLASS || UTIls || EVENT || HTTP || MOBILE 这几大模块。
参数:
如果使用继承方法,第一个参数为父类。
如果使用继承方法,第二个参数为子类;如果只创建一个类,不需要继承,那么参数即为需要创建的类。
创建Class 创建类的API,统一自调用init方法
var func = require('./core/func');
// 创建一个类
var newClass = func.Class({
init : function() {
...
},
bindEvents : function() {
...
}
});
// 调用这个类,使用此函数会自动new一个类,并自己调用类中的init方法
newClass();
// 调用这个类的内部方法。
newClass().bindEvents();
// 使用继承
var superClass = func.Class({
init : function() {
...
},
bindEvents : function() {
...
}
});
var newClass = func.Class(superClass,{
init : function() {
handleEvents : function() {
...
}
}
});
参数:
JSON对象
返回值:
JSON的所有键值
获取键值
var func = require('./core/func');
var json = {
'name' : '小明' ,
'age' : 18
};
console.log(keys(json));
// == >> ['name','age']
参数:
需要绑定dom的class名字,若不填,则默认绑定J_active
移动端模拟手触摸时的效果
var func = require('./core/func');
// 默认绑定J_avtive
func.bindActiveLink();
// 绑定指定Class
func.bindActiveLink('J_whichDomIWantToBind');
参数:
绑定fix的zepto对象
{top:0, left:0}
固顶fix方法,对不支持position:fixed的设备上将元素position设为absolute, 在每次scrollstop时根据opts参数设置当前显示的位置,类似fix效果。
var div = $('div');
div.fix({top:0, left:0}); //将div固顶在左上角
div.fix({top:0, right:0}); //将div固顶在右上角
div.fix({bottom:0, left:0}); //将div固顶在左下角
div.fix({bottom:0, right:0}); //将div固顶在右下角
参数:
事件类型
回调数据
广播事件
var func = require('./core/func');
// 派发自定义事件
func.fire('customEvent');
func.fire('customEvent', data1, data2, ...);
参数:
事件类型,支持,分隔符
回调函数
回调函数上下文
返回值:
this
on -> 订阅广播事件
var func = require('./core/func');
// 注册自定义事件
func.on('customEvent', function() {
callback();
},scope);
参数:
事件类型
假如传入则移出传入的监控事件,否则移出全部
回调函数上下文
返回值:
this
un -> 退订广播事件
var func = require('./core/func');
// 退订自定义事件
func.un('customEvent');
removeAll -> 退订所有广播事件
var func = require('./core/func');
// 退订所有广播事件
func.removeAll();
参数:
jsonp的配置项
对jsonp的简单封装
var func = require('./core/func');
func.loader({
url : ? ,
success : ?
})
参数:
cookie的名字
返回值:
cookie值
var func = require('./core/func');
func.getCookie('username');
参数:
cookie名字
cookie值
过期时间,单位:天
var func = require('./core/func');
func.setCookie('username', 'Xiao Ming', 7);
参数:
Cookie名
var func = require('./core/func');
func.removeCookie('username');
返回值:
返回浏览器的版本信息和系统的版本信息
判断浏览器版本
var func = require('./core/func');
// 返回ios系统
func.Device().os.ios
// 返回uc
func.Device().os.uc
// 返回qq
func.Device().os.qq
// 返回baidu
func.Device().browser.baidu
router.js,MUI框架的路由控制。
参数:
浏览器hash路由值,url#后的值,默认 url#{0,1} 跳转至url#/。
{templateId(必选) : ?, templateData(可选) : ?, controller(可选) : ?}
当window的url的hash值是什么时,选择什么模板进行渲染。
var INDEX_DATA = {
title : '首页' ,
list : [
{
url : 'http://www.fehouse.com' ,
title : '前端家园'
},
{
url : 'http://www.1717wam.cn' ,
title : '1717wan'
}
]
}
function hello() {
alert('你好,小明!');
}
router().when('/',{
templateId : 'index',
templateData : INDEX_DATA,
title : 'index'
}).when('/about',{
templateId : 'about',
controller : hello
})
参数:
{templateId(必选) : ?, templateData(可选) : ?, controller(可选) : ?}
路由默认跳转地址
router().otherwise({
templateId : '404'
})
参数:
模板id
模板数据 {templateData: ?}
数据发生改变时重新渲染
router().dataChangeReload('index',{
templateData : newData
})
返回值:
mock_ajax.js,MOCK_AJAX 聚合地址页 ( json 数据格式 ),方便API的统一管理。约定:所有的API地址全部从这里获取。
// 可能是长这个样子的
var MOCK_AJAX = {
loginPPTV : 'http://user.vas.pptv.com/api/ajax/loginCms.php?app=1717wan', // 登录检测接口 对 PPTV主站
indexVideoData : 'http://m.1717wan.cn/?ajax=1&page=', // 首页精彩视频数据
scheduleListData : 'http://m.1717wan.cn/match/?ajax=1&page=', // 赛程页赛程列表数据
gamesListLiveData : 'http://m.1717wan.cn/game/list/?ajax_1=1&', // 游戏列表页直播视频数据
gamesListVideoData : 'http://m.1717wan.cn/game/list/?ajax=1&', // 游戏列表页精彩视频数据
recordsListData : 'http://m.1717wan.cn/mylottery/order?ajax=1&p=' // 赛程页赛程列表数据
}
var MOCK_AJAX = require('./config/mock_ajax');
$.ajax({
url : MOCK_AJAX
...
})
记录seajs的依赖关系, 方便组件代码在重构时,api改变,可以不影响业务层
比如:router依赖'zepto','func','template',记录为:
router : ['zepto','func','template']
// 可能它会是长这个样子的
var require_map = {
core : {
func : ['zepto'],
fastclick : [] ,
itpl : [] ,
router : ['zepto','func','template']
},
widget : {
iscroll : [] ,
dialog : ['zepto','func'] ,
loader : ['zepto','func'] ,
lazyload : ['zepto','func'] ,
tab : ['zepto','func'] ,
share : ['zepto','func','itpl'] ,
swipe : []
}
}
UI组件层
参数:
配置选项
弹层包裹id
如果需要把弹层插入页面,则需要填入pushHtml
默认展示特效为none,可选参数none, fade
弹窗
var dialog = require('./widget/dialog');
dialog({
id : 'J_overlay',
type : 'fade'
});
弹窗显示
var dialog = require(./widget/dialog);
dialog({
id : 'J_overlay',
type : 'fade'
}).show();
弹窗显示
var dialog = require(./widget/dialog);
dialog({
id : 'J_overlay',
type : 'fade'
}).hide();
iscroll项目地址 iscroll.js,iscroll,支持无线端滚动。
var IScroll = require('./widget/iscroll');
// 具体实现用例,参考项目地址
var myScroll = new IScroll('#wrapper');
页面初始化加载图片懒加载模块
html:
<img class="lazy" src="真实地址" lazyimg="临时地址">
javascript:
var lazyload = require('./widget/lazyload');
lazyload();
参数:
配置项
分享的标题
分享的地址
分享的图片
移动端自定义分享组件
var share = require('./widget/share')
var cfg = {
title : '哇哦!!!我已经成功绑定1717wan.cn游戏直播,可第一时间追寻喜爱选手的直播及视频哦。爱游戏,爱视频,爱直播快来绑定吧!!!关注微信号“test1717wan”即可。',
url : 'http://m.1717wan.cn',
img : 'http://static.vas.pptv.com/vas/assets/app/1717wan/wap/'+ vers +'/images/share/share.png'
}
share(cfg);
swipe项目地址 swipe.js,swipe,图片轮播。
var Swipe = require('./widget/swipe');
// 具体实现用例,参考项目地址
Swipe(document.getElementById('J_index_slide'), {
auto: 6000,
callback : function(index) {
var $J_index_ctrl = $('#J_index_ctrl');
$J_index_ctrl.find('span').removeClass('current');
$J_index_ctrl.find('span').eq(index).addClass('current');
}
});
参数:
{superClass : ?, subClass : ?, currentClass : ?}
tab 切换
var tab = require('./widget/tab');
// currentClass 默认是on,也可通过配置项更改
tab({
superClass : 'superNav' ,
subClass : 'suberCon'
})