Tcake作为全局变量存在
一、基础类(Tcake.Base)
提供 Class、Events、Attribute 和 Aspect 支持。
1、基于 Base 创建的子类会继承Class、Events 、Attribute、Aspect的原型方法。
var Base = Tcake.Base;
var Pig = Base.extend({
attrs: {
name: ''
},
talk: function() {
alert('我是' + this.get('name'));
}
});
二、事件管理(Tcake.Events)
提供基本的事件添加、移除和触发功能。
使用 Events 有两种方式,一种是直接实例化:
var Events = Tcake.Events;
var object = new Events();
object.on('expand', function() {
alert('expanded');
});
object.trigger('expand');
另一种是将 Events 混入(mix-in)到其他类中:
var Events = Tcake.Events;
function Dog() {
}
Events.mixTo(Dog);
Dog.prototype.sleep = function() {
this.trigger('sleep');
};
var dog = new Dog();
dog.on('sleep', function() {
alert('狗狗睡得好香呀');
});
dog.sleep();
1、Events.on
object.on(event, callback, [context])
给对象添加事件回调函数。可以传入第三个参数 context 来改变回调函数调用时的 this 值:
event 参数有个特殊取值:all 对象上触发任何事件,都会触发 all 事件的回调函数,传给 all 事件回调函数的第一个参数是事件名。例如,下面的代码可以将一个对象上的所有事件代理到另一个对象上:
proxy.on('all', function(eventName) {
object.trigger(eventName);
});
2、Events.off
object.off([event], [callback], [context])
从对象上移除事件回调函数。三个参数都是可选的,当省略某个参数时,表示取该参数的所有值。
// 移除 change 事件上名为 onChange 的回调函数
object.off('change', onChange);
// 移除 change 事件的所有回调函数
object.off('change');
// 移除所有事件上名为 onChange 的回调函数
object.off(null, onChange);
// 移除上下文为 context 的所有事件的所有回调函数
object.off(null, null, context);
// 移除 object 对象上所有事件的所有回调函数
object.off();
3、Events.emit/trigger
object.trigger(event, [*args])
触发一个或多个事件(用空格分隔)。*args 参数会依次传给回调函数。
obj.on('event', function(arg1, arg2) {
// your code
});
obj.trigger('event', arg1, arg2);
4、Events.mixTo
Events.mixTo(receiver)
将 Events 的原型方法混入到指定对象或函数原型中。
三、配置项管理(Tcake.Config)
提供无限层级配置管理。
// 实例化配置管理
var ConfigManager = new Tcake.Config().init();//init参数为配置项,不传默认为空对象。
ConfigManager.set('system.domain', 'http://www.baidu.com');
ConfigManager.get('system.domain');
ConfigManager.del('system.domain');
ConfigManager.merge({ a : '123' });
1、Config.set
Config.set(aliasName, value)
制定配置项别名,并设置对应的value,aliasName支持无限层级(system.url.port)。
// 实例化配置管理,初始化配置为{}
var ConfigManager = new Tcake.Config();
/**
* 设置完后对应的配置应为
*{
* system: {
* url: {
* host: '192.168.3.168'
* }
* }
*}
*/
ConfigManager.set('system.url.host', '192.168.3.168');
2、Config.get
Config.get([aliasName])
根据配置别名获取对应的配置项,不存在则返回null
// 实例化配置管理,初始化配置为{}
var ConfigManager = new Tcake.Config();
/**
* 设置完后对应的配置应为
*{
* system: {
* url: {
* host: '192.168.3.168'
* }
* }
*}
*/
ConfigManager.set('system.url.host', '192.168.3.168');
// 打印出来的值应为192.168.3.168
console.log(ConfigManager.get('system.url.host'));
3、Config.del
Config.del([aliasName])
删除配置项
// 实例化配置管理,初始化配置为{}
var ConfigManager = new Tcake.Config();
/**
* 设置完后对应的配置应为
*{
* system: {
* url: {
* host: '192.168.3.168'
* }
* }
*}
*/
ConfigManager.set('system.url.host', '192.168.3.168');
/**
* 删除后剩下对应的配置应为
*{
* system: {
* url: {
*
* }
* }
*}
*/
ConfigManager.del('system.url.host')
4、Config.merge
Config.merge(configObject)
合并配置项,configObject为object类型
// 实例化配置管理,初始化配置为{}
var ConfigManager = new Tcake.Config();
/**
* 设置完后对应的配置应为
*{
* system: {
* url: {
* host: '192.168.3.168'
* }
* }
*}
*/
ConfigManager.set('system.url.host', '192.168.3.168');
/**
* 合并后对应的配置应为
*{
* system: {
* url: {
* host: '192.168.3.168'
* }
* },
* document: {
* addr: '123'
* }
*}
*/
ConfigManager.merge('document', { addr: '123' });
四、Cookie操作(Tcake.Cookie)
提供 Cookie 操作方法。
1、Cookie.get
Cookie.get(name, [options])
获取 cookie 值。options 参数可选,取值如下:
converter 转换函数。如果所获取的 cookie 有值,会在返回前传给 converter 函数进行转换。
选项对象。对象中可以有两个属性:converter 和 raw. raw 是布尔值,为真时,不会对获取到的 cookie 值进行 URI 解码。
注:如果要获取的 cookie 键值不存在,则返回 undefined
var Cookie = Tcake.Cookie;
// setup
document.cookie = 'foo=1';
document.cookie = 'bar=2';
Cookie.get('foo');
// returns '1'
Cookie.get('bar', function(s) { return parseInt(s); } );
2、Cookie.set
Cookie.set(name, value, [options])
设置 cookie 值。参数 options 可选,可以有以下属性:path(字符串)、domain(字符串)、 expires(数值或日期对象)、raw(布尔值)。当 raw 为真值时,在设置 cookie 值时,不会进行 URI 编码
var Cookie = Tcake.Cookie;
Cookie.set('foo', 3);
Cookie.set('bar', 4, {
domain: 'example.com',
path: '/',
expires: 30
});
3、Cookie.remove
Cookie.remove(name, [options])
移除指定的 cookie
var Cookie = Tcake.Cookie;
Cookie.remove('foo');
Cookie.remove('bar', {
domain: 'example.com',
path: '/'
});
五、客户端信息检测(Tcake.Detector)
detector会返回客户端信息,包括设备、系统、浏览器、渲染引擎等
detector = {
device: {
name: "iphone",
version: -1,
fullVersion: "-1",
[iphone]: -1
},
os: {
name: "ios",
version: 6.1,
fullVersion: "6.1",
[ios]: 6.1
},
browser: {
name: "chrome":
version: 26.0,
fullVersion: "26.0.1410.50",
mode: 26.0,
fullMode: "26.0.1410.50",
compatible: false,
[chrome]: 26.0
},
engine: {
name: "webkit",
version: 536.26,
fullVersion: "536.26",
mode: 523.26,
fullMode: "523.26",
compatible: false,
[webkit]: 536.26
}
}
六、url处理模块(Tcake.URL)
提供url解析、编解码等操作。
1、URL.parseQuery
URL.parseQuery(url)
解析url的query参数,返回object
// 返回结果为{a: 1, b: 2, c: 3}
var queryObj = URL.parseQuery('http://www.to8to.com/?a=1&b=2&c=3');
2、URL.build
URL.build(url, query)
构造url链接,query为要拼接上的object对象
// _url = http://www.to8to.com/?a=1&b=2&c=3
var _url = URL.build('http://www.baidu.com', {a: 1, b:2, c: 3});
3、URL.parse
URL.parse(url)
url全解析
/**
* {
* source: *, // 全路径
* protocol: 'http', // 协议
* host: 'www.to8to.com',
* port: 80,
* query: '?a=1&b=2',
* file: 'index.html',
* hash: '123',
* path: '/abc/1-2.html',
* segments: Array
* }
*/
var urlInfo = URL.parse('http://www.to8to.com/abc/1-2.html?a=1&b=2#123');
4、URL.encode
等同于encodeURIComponent
5、URL.decode
等同于decodeURIComponent