zoeDylan.js是墨芈自己写的一套前端框架,不过由于墨芈经验不足,所以框架内部代码有些混乱.
墨芈写这套框架的目的是为了存储以后做前端开发过程中的一些代码,简单的说这套框架就是一个大杂烩.
这套框架主要分为3部分:数据底层(zoeDylan.js)、元素交互层(zoeDylan.element.js)和特效层(zoeDylan.**.js)。
数据底层主要处理数据,不会存在任何操作DOM元素,数据底层也是这套框架的核心层.
元素交互层主要是处理元素之间的一些数据,不会存在太多的DOM交互操作,也就是这套框架直接访问DOM元素的地方。
特效层主要是现有的元素交互层基础上,增强一些元素交互的功能,比如:banner、下拉框、日历、自定义滚动条等等.(PS:元素交互层和特效层的DOM操作是基于JQ,所以使用元素交互层时需要引用JQ框架,后期会把jq的DOM操作修改为纯JS的)
当然,特效层是需要样式表的。
这套框架现在还处于基础搭建状态,后期会不断进行优化和功能增加,因为墨芈时间有限(主要是偷懒),所以墨芈会在后期慢慢的更新,直到第一个版本出来为止。
现在这套框架还处于beta状态,整个框架现在都还是一个胚胎状态。
好了,废话不说了,直接上代码,有需要的童鞋直接拔代码就可以了。
1 /* 2 * @license zoeDylanJS v0.01-beta 3 * (c) 2014-2015 zoeDylan .Inc 4 * License: MIT 5 */ 6 (function (_extend) { 7 //扩展 8 _extend(); 9 10 var getAttr = function (v) { 11 for (var i in v) { 12 console.info('【' + typeof (v[i]) + '】:' + i); 13 } 14 }, 15 versions = 'zoeDylanJS v0.01-beta'; 16 var zd = function () { 17 console.info('versions:' + versions); 18 getAttr(zd); 19 }; 20 /* 21 * 数据操作 22 */ 23 //【数据对象,默认参数】配置数据初始化, 24 zd.option = function (op, def) { 25 if (!op || op == null) { 26 return def; 27 } 28 if (!def || def == null) { 29 return op; 30 } 31 //循环获取变量 32 for (var i in op) { 33 var tmp = op[i]; 34 def[i] = tmp; 35 } 36 return def; 37 }; 38 39 /* 40 * GET区 41 */ 42 43 //随机数 44 zd.getRandom = function () { 45 return new Date().getTime() * Math.ceil(Math.random() * 100); 46 }; 47 //【json字符串,是否缓存(true|false)】 '{"id":"1","data":"sdc"}' 将传入值转换为json格式 48 zd.getJson = function (data) { 49 var 50 json = Function('return ' + data)(); 51 return json; 52 }; 53 //【是否添加缓存true|false,事件】获取一个随机id参数 添加缓存可接受一个事件 54 zd.getID = function (cache, fn) { 55 var 56 id = zd.config.id_random + zd.getRandom(); 57 if (cache) { 58 id = zd.cache.set(id, fn); 59 } 60 return id; 61 }; 62 63 /* 64 * 公用配置、设置、获取等 65 */ 66 //配置库 67 zd.config = (function () { 68 return { 69 //框架id属性标识@1 70 id: 'zoe_id', 71 //随机id前缀 72 id_random: 'random_', 73 //定时器变量前缀@2 74 timer: 'timer_', 75 //缓存组变量前缀 76 cache: 'cache_', 77 78 /* 79 * @1:属性标识:用于元素内联的一个自定义属性 80 * @2:变量前缀:用于缓存区变量的识别 81 */ 82 } 83 })(); 84 85 //公用库 86 zd.public = (function () { 87 return { 88 //缓存库 89 cache: {} 90 } 91 })(); 92 93 //缓存配置 94 zd.cache = (function () { 95 var 96 97 //【缓存名称(字符串,可不用),缓存参数】设置缓存 返回:缓存变量名字符串或者|false(失败), 98 _set = function (name, fn) { 99 try {100 var101 _name = typeof (name) == 'string' ? name : zd.config.cache + zd.getRandom(),102 _fn = fn || null;103 zd.public.cache[_name] = _fn;104 return _name;105 } catch (e) {106 return false;107 }108 },109 110 //【缓存名称】 获取缓存内容,返回:对应参数|false111 _get = function (name) {112 var113 _name = _nameLegal(name);114 if (!_name) {115 return false;116 }117 var118 tmp = zd.public.cache[_name];119 //是否为空120 if (typeof (tmp) != 'undefined') {121 return tmp122 } else {123 return false;124 }125 },126 //【缓存名称】 移除缓存,返回:true|false127 _rem = function (name) {128 var129 _name = _nameLegal(name);130 if (!_name) {131 return false;132 }133 delete zd.public.cache[_name];134 return true135 },136 //【缓存名称】 指定缓存是否存在137 _atCache = function (name) {138 var139 _name = _nameLegal(name),140 tmp = zd.public.cache[_name];141 if (!_name) {142 return false;143 }144 //是否为空145 if (typeof (tmp) != 'undefined') {146 return tmp147 } else {148 return false;149 }150 },151 //【缓存名称】名称是否合法152 _nameLegal = function (name) {153 var154 _name = typeof (name) == 'string' ? name : false;155 if (_name) {156 return _name157 } else {158 return false;159 }160 };161 return ({162 set: _set,163 get: _get,164 rem: _rem165 });166 })();167 168 /*169 * Ajax部分170 */171 //【请求的url,完成后执行方法(json数据),错误(),请求类型[默认json]】172 zd.ajax = function (url, fn, err) {173 var174 _url = url,175 _fn = fn || function (c) { console.warn(c) },176 _err = err || function (c) {177 console.warn({178 "code": c,179 "url": _url180 });181 };182 var ajax = new xmlHttPRequest() || new ActiveXObject("Microsoft.xmlhttp");183 ajax.open("get", _url, true);184 ajax.onreadystatechange = function () {185 if (ajax.readyState == 4) {186 if (ajax.status == 200) {187 _fn(dgg.getJson(ajax.response || ajax.status));188 } else {189 _err(ajax.status);190 }191 }192 };193 ajax.send();194 };195 196 /*197 * cookie操作198 */199 zd.cookie = (function () {200 var201 _set = function (name, value, expiresHours) {202 value = encodeURIComponent(value);203 if (expiresHours > 0) {204 var data = new Date();205 data.setTime(data.getTime() + (expiresHours * 3600 * 1000));206 var expires = "; expires=" + data.toGMTString();207 }208 else expires = "";209 document.cookie = name + "=" + value + expires + "; path=/";210 211 },212 _get = function (name) {213 var strCookie = document.cookie;214 var arrCookie = strCookie.split("; ");215 for (var i = 0; i < arrCookie.length; i++) {216 var arr = arrCookie[i].split("=");217 if (arr[0] == name) return arr[1];218 }219 return "";220 },221 _del = function (name) {222 document.cookie = name + "=;expires=" + (new Date(0)).toGMTString() + "; path=/";223 };224 return ({225 //名称、值、保存时间(小时)226 set: _set,227 get: _get,228 del: _del,229 rem: _del230 });231 })();232 233 /* 234 * 检测 235 */236 //各种检测 237 zd.test = (function () {238 return ({239 //定时器240 timer: function (op) {241
新闻热点
疑难解答