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.onobject.on(event, callback, [context])给对象添加事件回调函数。可以传入第三个参数 context 来改变回调函数调用时的 this 值:event 参数有个特殊取值:all 对象上触发任何事件,都会触发 all 事件的回调函数,传给 all 事件回调函数的第一个参数是事件名。例如,下面的代码可以将一个对象上的所有事件代理到另一个对象上:proxy.on('all', function(eventName) {object.trigger(eventName);});2、Events.offobject.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/triggerobject.trigger(event, [*args])触发一个或多个事件(用空格分隔)。*args 参数会依次传给回调函数。obj.on('event', function(arg1, arg2) {// your code});obj.trigger('event', arg1, arg2);4、Events.mixToEvents.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.setConfig.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.getConfig.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.168console.log(ConfigManager.get('system.url.host'));3、Config.delConfig.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.mergeConfig.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.getCookie.get(name, [options])获取 cookie 值。options 参数可选,取值如下:converter 转换函数。如果所获取的 cookie 有值,会在返回前传给 converter 函数进行转换。选项对象。对象中可以有两个属性:converter 和 raw. raw 是布尔值,为真时,不会对获取到的 cookie 值进行 URI 解码。注:如果要获取的 cookie 键值不存在,则返回 undefinedvar Cookie = Tcake.Cookie;// setupdocument.cookie = 'foo=1';document.cookie = 'bar=2';Cookie.get('foo');// returns '1'Cookie.get('bar', function(s) { return parseInt(s); } );2、Cookie.setCookie.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.removeCookie.remove(name, [options])移除指定的 cookievar 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.parseQueryURL.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.buildURL.build(url, query)构造url链接,query为要拼接上的object对象// _url = http://www.to8to.com/?a=1&b=2&c=3var _url = URL.build('http://www.baidu.com', {a: 1, b:2, c: 3});3、URL.parseURL.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等同于encodeURIComponent5、URL.decode等同于decodeURIComponent