1. Tcake作为全局变量存在
    2. 一、基础类(Tcake.Base
    3. 提供 ClassEventsAttribute Aspect 支持。
    4. 1、基于 Base 创建的子类会继承ClassEvents AttributeAspect的原型方法。
    5. var Base = Tcake.Base;
    6. var Pig = Base.extend({
    7. attrs: {
    8. name: ''
    9. },
    10. talk: function() {
    11. alert('我是' + this.get('name'));
    12. }
    13. });
    14. 二、事件管理(Tcake.Events
    15. 提供基本的事件添加、移除和触发功能。
    16. 使用 Events 有两种方式,一种是直接实例化:
    17. var Events = Tcake.Events;
    18. var object = new Events();
    19. object.on('expand', function() {
    20. alert('expanded');
    21. });
    22. object.trigger('expand');
    23. 另一种是将 Events 混入(mix-in)到其他类中:
    24. var Events = Tcake.Events;
    25. function Dog() {
    26. }
    27. Events.mixTo(Dog);
    28. Dog.prototype.sleep = function() {
    29. this.trigger('sleep');
    30. };
    31. var dog = new Dog();
    32. dog.on('sleep', function() {
    33. alert('狗狗睡得好香呀');
    34. });
    35. dog.sleep();
    36. 1Events.on
    37. object.on(event, callback, [context])
    38. 给对象添加事件回调函数。可以传入第三个参数 context 来改变回调函数调用时的 this 值:
    39. event 参数有个特殊取值:all 对象上触发任何事件,都会触发 all 事件的回调函数,传给 all 事件回调函数的第一个参数是事件名。例如,下面的代码可以将一个对象上的所有事件代理到另一个对象上:
    40. proxy.on('all', function(eventName) {
    41. object.trigger(eventName);
    42. });
    43. 2Events.off
    44. object.off([event], [callback], [context])
    45. 从对象上移除事件回调函数。三个参数都是可选的,当省略某个参数时,表示取该参数的所有值。
    46. // 移除 change 事件上名为 onChange 的回调函数
    47. object.off('change', onChange);
    48. // 移除 change 事件的所有回调函数
    49. object.off('change');
    50. // 移除所有事件上名为 onChange 的回调函数
    51. object.off(null, onChange);
    52. // 移除上下文为 context 的所有事件的所有回调函数
    53. object.off(null, null, context);
    54. // 移除 object 对象上所有事件的所有回调函数
    55. object.off();
    56. 3Events.emit/trigger
    57. object.trigger(event, [*args])
    58. 触发一个或多个事件(用空格分隔)。*args 参数会依次传给回调函数。
    59. obj.on('event', function(arg1, arg2) {
    60. // your code
    61. });
    62. obj.trigger('event', arg1, arg2);
    63. 4Events.mixTo
    64. Events.mixTo(receiver)
    65. Events 的原型方法混入到指定对象或函数原型中。
    66. 三、配置项管理(Tcake.Config
    67. 提供无限层级配置管理。
    68. // 实例化配置管理
    69. var ConfigManager = new Tcake.Config().init();//init参数为配置项,不传默认为空对象。
    70. ConfigManager.set('system.domain', 'http://www.baidu.com');
    71. ConfigManager.get('system.domain');
    72. ConfigManager.del('system.domain');
    73. ConfigManager.merge({ a : '123' });
    74. 1Config.set
    75. Config.set(aliasName, value)
    76. 制定配置项别名,并设置对应的valuealiasName支持无限层级(system.url.port)。
    77. // 实例化配置管理,初始化配置为{}
    78. var ConfigManager = new Tcake.Config();
    79. /**
    80. * 设置完后对应的配置应为
    81. *{
    82. * system: {
    83. * url: {
    84. * host: '192.168.3.168'
    85. * }
    86. * }
    87. *}
    88. */
    89. ConfigManager.set('system.url.host', '192.168.3.168');
    90. 2Config.get
    91. Config.get([aliasName])
    92. 根据配置别名获取对应的配置项,不存在则返回null
    93. // 实例化配置管理,初始化配置为{}
    94. var ConfigManager = new Tcake.Config();
    95. /**
    96. * 设置完后对应的配置应为
    97. *{
    98. * system: {
    99. * url: {
    100. * host: '192.168.3.168'
    101. * }
    102. * }
    103. *}
    104. */
    105. ConfigManager.set('system.url.host', '192.168.3.168');
    106. // 打印出来的值应为192.168.3.168
    107. console.log(ConfigManager.get('system.url.host'));
    108. 3Config.del
    109. Config.del([aliasName])
    110. 删除配置项
    111. // 实例化配置管理,初始化配置为{}
    112. var ConfigManager = new Tcake.Config();
    113. /**
    114. * 设置完后对应的配置应为
    115. *{
    116. * system: {
    117. * url: {
    118. * host: '192.168.3.168'
    119. * }
    120. * }
    121. *}
    122. */
    123. ConfigManager.set('system.url.host', '192.168.3.168');
    124. /**
    125. * 删除后剩下对应的配置应为
    126. *{
    127. * system: {
    128. * url: {
    129. *
    130. * }
    131. * }
    132. *}
    133. */
    134. ConfigManager.del('system.url.host')
    135. 4Config.merge
    136. Config.merge(configObject)
    137. 合并配置项,configObjectobject类型
    138. // 实例化配置管理,初始化配置为{}
    139. var ConfigManager = new Tcake.Config();
    140. /**
    141. * 设置完后对应的配置应为
    142. *{
    143. * system: {
    144. * url: {
    145. * host: '192.168.3.168'
    146. * }
    147. * }
    148. *}
    149. */
    150. ConfigManager.set('system.url.host', '192.168.3.168');
    151. /**
    152. * 合并后对应的配置应为
    153. *{
    154. * system: {
    155. * url: {
    156. * host: '192.168.3.168'
    157. * }
    158. * },
    159. * document: {
    160. * addr: '123'
    161. * }
    162. *}
    163. */
    164. ConfigManager.merge('document', { addr: '123' });
    165. 四、Cookie操作(Tcake.Cookie
    166. 提供 Cookie 操作方法。
    167. 1Cookie.get
    168. Cookie.get(name, [options])
    169. 获取 cookie 值。options 参数可选,取值如下:
    170. converter 转换函数。如果所获取的 cookie 有值,会在返回前传给 converter 函数进行转换。
    171. 选项对象。对象中可以有两个属性:converter raw. raw 是布尔值,为真时,不会对获取到的 cookie 值进行 URI 解码。
    172. 注:如果要获取的 cookie 键值不存在,则返回 undefined
    173. var Cookie = Tcake.Cookie;
    174. // setup
    175. document.cookie = 'foo=1';
    176. document.cookie = 'bar=2';
    177. Cookie.get('foo');
    178. // returns '1'
    179. Cookie.get('bar', function(s) { return parseInt(s); } );
    180. 2Cookie.set
    181. Cookie.set(name, value, [options])
    182. 设置 cookie 值。参数 options 可选,可以有以下属性:path(字符串)、domain(字符串)、 expires(数值或日期对象)、raw(布尔值)。当 raw 为真值时,在设置 cookie 值时,不会进行 URI 编码
    183. var Cookie = Tcake.Cookie;
    184. Cookie.set('foo', 3);
    185. Cookie.set('bar', 4, {
    186. domain: 'example.com',
    187. path: '/',
    188. expires: 30
    189. });
    190. 3Cookie.remove
    191. Cookie.remove(name, [options])
    192. 移除指定的 cookie
    193. var Cookie = Tcake.Cookie;
    194. Cookie.remove('foo');
    195. Cookie.remove('bar', {
    196. domain: 'example.com',
    197. path: '/'
    198. });
    199. 五、客户端信息检测(Tcake.Detector
    200. detector会返回客户端信息,包括设备、系统、浏览器、渲染引擎等
    201. detector = {
    202. device: {
    203. name: "iphone",
    204. version: -1,
    205. fullVersion: "-1",
    206. [iphone]: -1
    207. },
    208. os: {
    209. name: "ios",
    210. version: 6.1,
    211. fullVersion: "6.1",
    212. [ios]: 6.1
    213. },
    214. browser: {
    215. name: "chrome":
    216. version: 26.0,
    217. fullVersion: "26.0.1410.50",
    218. mode: 26.0,
    219. fullMode: "26.0.1410.50",
    220. compatible: false,
    221. [chrome]: 26.0
    222. },
    223. engine: {
    224. name: "webkit",
    225. version: 536.26,
    226. fullVersion: "536.26",
    227. mode: 523.26,
    228. fullMode: "523.26",
    229. compatible: false,
    230. [webkit]: 536.26
    231. }
    232. }
    233. 六、url处理模块(Tcake.URL
    234. 提供url解析、编解码等操作。
    235. 1URL.parseQuery
    236. URL.parseQuery(url)
    237. 解析urlquery参数,返回object
    238. // 返回结果为{a: 1, b: 2, c: 3}
    239. var queryObj = URL.parseQuery('http://www.to8to.com/?a=1&b=2&c=3');
    240. 2URL.build
    241. URL.build(url, query)
    242. 构造url链接,query为要拼接上的object对象
    243. // _url = http://www.to8to.com/?a=1&b=2&c=3
    244. var _url = URL.build('http://www.baidu.com', {a: 1, b:2, c: 3});
    245. 3URL.parse
    246. URL.parse(url)
    247. url全解析
    248. /**
    249. * {
    250. * source: *, // 全路径
    251. * protocol: 'http', // 协议
    252. * host: 'www.to8to.com',
    253. * port: 80,
    254. * query: '?a=1&b=2',
    255. * file: 'index.html',
    256. * hash: '123',
    257. * path: '/abc/1-2.html',
    258. * segments: Array
    259. * }
    260. */
    261. var urlInfo = URL.parse('http://www.to8to.com/abc/1-2.html?a=1&b=2#123');
    262. 4URL.encode
    263. 等同于encodeURIComponent
    264. 5URL.decode
    265. 等同于decodeURIComponent