优化 代码排版,统一风格

pull/1249/head
贤心 2023-05-04 10:17:04 +08:00
parent 10f767541f
commit fb88341aff
1 changed files with 103 additions and 100 deletions

View File

@ -7,26 +7,27 @@
;!function(win){ ;!function(win){
"use strict"; "use strict";
var doc = win.document, config = { var doc = win.document;
modules: {} // 模块物理路径 var config = {
,status: {} // 模块加载状态 modules: {}, // 模块物理路径
,timeout: 10 // 符合规范的模块请求最长等待秒数 status: {}, // 模块加载状态
,event: {} // 模块自定义事件 timeout: 10, // 符合规范的模块请求最长等待秒数
} event: {} // 模块自定义事件
};
,Layui = function(){ var Layui = function(){
this.v = '2.8.1'; // Layui 版本号 this.v = '2.8.1'; // Layui 版本号
} };
// 识别预先可能定义的指定全局对象 // 识别预先可能定义的指定全局对象
,GLOBAL = win.LAYUI_GLOBAL || {} var GLOBAL = win.LAYUI_GLOBAL || {};
// 获取 layui 所在目录 // 获取 layui 所在目录
,getPath = function(){ var getPath = function(){
var jsPath = doc.currentScript ? doc.currentScript.src : function(){ var jsPath = doc.currentScript ? doc.currentScript.src : function(){
var js = doc.scripts var js = doc.scripts;
,last = js.length - 1 var last = js.length - 1;
,src; var src;
for(var i = last; i > 0; i--){ for(var i = last; i > 0; i--){
if(js[i].readyState === 'interactive'){ if(js[i].readyState === 'interactive'){
src = js[i].src; src = js[i].src;
@ -37,42 +38,42 @@
}(); }();
return config.dir = GLOBAL.dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1); return config.dir = GLOBAL.dir || jsPath.substring(0, jsPath.lastIndexOf('/') + 1);
}() }();
// 异常提示 // 异常提示
,error = function(msg, type){ var error = function(msg, type){
type = type || 'log'; type = type || 'log';
win.console && console[type] && console[type]('layui error hint: ' + msg); win.console && console[type] && console[type]('layui error hint: ' + msg);
} };
,isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]' var isOpera = typeof opera !== 'undefined' && opera.toString() === '[object Opera]';
// 内置模块 // 内置模块
,modules = config.builtin = { var modules = config.builtin = {
lay: 'lay' // 基础 DOM 操作 lay: 'lay', // 基础 DOM 操作
,layer: 'layer' // 弹层 layer: 'layer', // 弹层
,laydate: 'laydate' // 日期 laydate: 'laydate', // 日期
,laypage: 'laypage' // 分页 laypage: 'laypage', // 分页
,laytpl: 'laytpl' // 模板引擎 laytpl: 'laytpl', // 模板引擎
,form: 'form' // 表单集 form: 'form', // 表单集
,upload: 'upload' // 上传 upload: 'upload', // 上传
,dropdown: 'dropdown' // 下拉菜单 dropdown: 'dropdown', // 下拉菜单
,transfer: 'transfer' // 穿梭框 transfer: 'transfer', // 穿梭框
,tree: 'tree' // 树结构 tree: 'tree', // 树结构
,table: 'table' // 表格 table: 'table', // 表格
,treeTable: 'treeTable' // 树表 treeTable: 'treeTable', // 树表
,element: 'element' // 常用元素操作 element: 'element', // 常用元素操作
,rate: 'rate' // 评分组件 rate: 'rate', // 评分组件
,colorpicker: 'colorpicker' // 颜色选择器 colorpicker: 'colorpicker', // 颜色选择器
,slider: 'slider' // 滑块 slider: 'slider', // 滑块
,carousel: 'carousel' // 轮播 carousel: 'carousel', // 轮播
,flow: 'flow' // 流加载 flow: 'flow', // 流加载
,util: 'util' // 工具块 util: 'util', // 工具块
,code: 'code' // 代码修饰器 code: 'code', // 代码修饰器
,jquery: 'jquery' // DOM 库(第三方) jquery: 'jquery', // DOM 库(第三方)
,all: 'all' all: 'all',
,'layui.all': 'layui.all' // 聚合标识(功能性的,非真实模块) 'layui.all': 'layui.all' // 聚合标识(功能性的,非真实模块)
}; };
// 记录基础数据 // 记录基础数据
@ -80,9 +81,9 @@
// 定义模块 // 定义模块
Layui.prototype.define = function(deps, factory){ Layui.prototype.define = function(deps, factory){
var that = this var that = this;
,type = typeof deps === 'function' var type = typeof deps === 'function';
,callback = function(){ var callback = function(){
var setApp = function(app, exports){ var setApp = function(app, exports){
layui[app] = exports; layui[app] = exports;
config.status[app] = true; config.status[app] = true;
@ -107,9 +108,9 @@
// 使用特定模块 // 使用特定模块
Layui.prototype.use = function(apps, callback, exports, from){ Layui.prototype.use = function(apps, callback, exports, from){
var that = this var that = this;
,dir = config.dir = config.dir ? config.dir : getPath var dir = config.dir = config.dir ? config.dir : getPath;
,head = doc.getElementsByTagName('head')[0]; var head = doc.getElementsByTagName('head')[0];
apps = function(){ apps = function(){
if(typeof apps === 'string'){ if(typeof apps === 'string'){
@ -133,8 +134,9 @@
layui.jquery = layui.$ = jQuery; layui.jquery = layui.$ = jQuery;
} }
var item = apps[0] var item = apps[0];
,timeout = 0; var timeout = 0;
exports = exports || []; exports = exports || [];
// 静态资源host // 静态资源host
@ -259,16 +261,16 @@
// css 外部加载器 // css 外部加载器
Layui.prototype.link = function(href, fn, cssname){ Layui.prototype.link = function(href, fn, cssname){
var that = this var that = this;
,head = doc.getElementsByTagName('head')[0] var head = doc.getElementsByTagName('head')[0];
,link = doc.createElement('link'); var link = doc.createElement('link');
if(typeof fn === 'string') cssname = fn; if(typeof fn === 'string') cssname = fn;
var app = (cssname || href).replace(/\.|\//g, '') var app = (cssname || href).replace(/\.|\//g, '');
,id = link.id = 'layuicss-'+ app var id = link.id = 'layuicss-'+ app;
,STAUTS_NAME = 'creating' var STAUTS_NAME = 'creating';
,timeout = 0; var timeout = 0;
link.rel = 'stylesheet'; link.rel = 'stylesheet';
link.href = href + (config.debug ? '?v='+new Date().getTime() : ''); link.href = href + (config.debug ? '?v='+new Date().getTime() : '');
@ -282,8 +284,8 @@
// 轮询 css 是否加载完毕 // 轮询 css 是否加载完毕
(function poll(status) { (function poll(status) {
var delay = 100 var delay = 100;
,getLinkElem = doc.getElementById(id); // 获取动态插入的 link 元素 var getLinkElem = doc.getElementById(id); // 获取动态插入的 link 元素
// 如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范 // 如果轮询超过指定秒数,则视为请求文件失败或 css 文件不符合规范
if(++timeout > config.timeout * 1000 / delay){ if(++timeout > config.timeout * 1000 / delay){
@ -390,15 +392,16 @@
// location.hash 路由解析 // location.hash 路由解析
Layui.prototype.router = Layui.prototype.hash = function(hash){ Layui.prototype.router = Layui.prototype.hash = function(hash){
var that = this var that = this;
,hash = hash || location.hash var hash = hash || location.hash;
,data = { var data = {
path: [] path: [],
,search: {} search: {},
,hash: (hash.match(/[^#](#.*$)/) || [])[1] || '' hash: (hash.match(/[^#](#.*$)/) || [])[1] || ''
}; };
if(!/^#\//.test(hash)) return data; // 禁止非路由规范 if(!/^#\//.test(hash)) return data; // 禁止非路由规范
hash = hash.replace(/^#\//, ''); hash = hash.replace(/^#\//, '');
data.href = '/' + hash; data.href = '/' + hash;
hash = hash.replace(/([^#])(#.*$)/, '$1').split('/') || []; hash = hash.replace(/([^#])(#.*$)/, '$1').split('/') || [];
@ -416,8 +419,8 @@
// URL 解析 // URL 解析
Layui.prototype.url = function(href){ Layui.prototype.url = function(href){
var that = this var that = this;
,data = { var data = {
// 提取 url 路径 // 提取 url 路径
pathname: function(){ pathname: function(){
var pathname = href var pathname = href
@ -427,12 +430,12 @@
}() }()
: location.pathname; : location.pathname;
return pathname.replace(/^\//, '').split('/'); return pathname.replace(/^\//, '').split('/');
}() }(),
// 提取 url 参数 // 提取 url 参数
,search: function(){ search: function(){
var obj = {} var obj = {};
,search = (href var search = (href
? function(){ ? function(){
var str = (href.match(/\?.+/) || [])[0] || ''; var str = (href.match(/\?.+/) || [])[0] || '';
return str.replace(/\#.+/, ''); return str.replace(/\#.+/, '');
@ -459,10 +462,10 @@
}); });
return obj; return obj;
}() }(),
// 提取 Hash // 提取 Hash
,hash: that.router(function(){ hash: that.router(function(){
return href return href
? ((href.match(/#.+/) || [])[0] || '/') ? ((href.match(/#.+/) || [])[0] || '/')
: location.hash; : location.hash;
@ -508,17 +511,17 @@
// 设备信息 // 设备信息
Layui.prototype.device = function(key){ Layui.prototype.device = function(key){
var agent = navigator.userAgent.toLowerCase() var agent = navigator.userAgent.toLowerCase();
// 获取版本号 // 获取版本号
,getVersion = function(label){ var getVersion = function(label){
var exp = new RegExp(label + '/([^\\s\\_\\-]+)'); var exp = new RegExp(label + '/([^\\s\\_\\-]+)');
label = (agent.match(exp)||[])[1]; label = (agent.match(exp)||[])[1];
return label || false; return label || false;
} };
// 返回结果集 // 返回结果集
,result = { var result = {
os: function(){ // 底层操作系统 os: function(){ // 底层操作系统
if(/windows/.test(agent)){ if(/windows/.test(agent)){
return 'windows'; return 'windows';
@ -529,13 +532,13 @@
} else if(/mac/.test(agent)){ } else if(/mac/.test(agent)){
return 'mac'; return 'mac';
} }
}() }(),
,ie: function(){ // ie 版本 ie: function(){ // ie 版本
return (!!win.ActiveXObject || "ActiveXObject" in win) ? ( return (!!win.ActiveXObject || "ActiveXObject" in win) ? (
(agent.match(/msie\s(\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识 (agent.match(/msie\s(\d+)/) || [])[1] || '11' // 由于 ie11 并没有 msie 的标识
) : false; ) : false;
}() }(),
,weixin: getVersion('micromessenger') // 是否微信 weixin: getVersion('micromessenger') // 是否微信
}; };
// 任意的 key // 任意的 key
@ -564,8 +567,8 @@
// 细分引用类型 // 细分引用类型
return (typeof operand === 'object' || typeof operand === 'function') ? function(){ return (typeof operand === 'object' || typeof operand === 'function') ? function(){
var type = Object.prototype.toString.call(operand).match(/\s(.+)\]$/) || [] // 匹配类型字符 var type = Object.prototype.toString.call(operand).match(/\s(.+)\]$/) || []; // 匹配类型字符
,classType = 'Function|Array|Date|RegExp|Object|Error|Symbol'; // 常见类型字符 var classType = 'Function|Array|Date|RegExp|Object|Error|Symbol'; // 常见类型字符
type = type[1] || 'Object'; type = type[1] || 'Object';
@ -578,9 +581,9 @@
// 对象是否具备数组结构(此处为兼容 jQuery 对象) // 对象是否具备数组结构(此处为兼容 jQuery 对象)
Layui.prototype._isArray = Layui.prototype.isArray = function(obj){ Layui.prototype._isArray = Layui.prototype.isArray = function(obj){
var that = this var that = this;
,len var len;
,type = that.type(obj); var type = that.type(obj);
if(!obj || (typeof obj !== 'object') || obj === win) return false; if(!obj || (typeof obj !== 'object') || obj === win) return false;
@ -592,9 +595,9 @@
// 遍历 // 遍历
Layui.prototype.each = function(obj, fn){ Layui.prototype.each = function(obj, fn){
var key var key;
,that = this var that = this;
,callFn = function(key, obj){ // 回调 var callFn = function(key, obj){ // 回调
return fn.call(obj[key], key, obj[key]) return fn.call(obj[key], key, obj[key])
}; };
@ -617,8 +620,8 @@
// 将数组中的成员对象按照某个 key 的 value 值进行排序 // 将数组中的成员对象按照某个 key 的 value 值进行排序
Layui.prototype.sort = function(arr, key, desc, notClone){ Layui.prototype.sort = function(arr, key, desc, notClone){
var that = this var that = this;
,clone = notClone ? (arr || []) : JSON.parse( var clone = notClone ? (arr || []) : JSON.parse(
JSON.stringify(arr || []) JSON.stringify(arr || [])
); );
@ -631,8 +634,8 @@
// 开始排序 // 开始排序
clone.sort(function(o1, o2){ clone.sort(function(o1, o2){
var v1 = o1[key] var v1 = o1[key];
,v2 = o2[key]; var v2 = o2[key];
/* /*
* 特殊数据 * 特殊数据
@ -726,12 +729,12 @@
// 执行自定义模块事件 // 执行自定义模块事件
Layui.prototype.event = Layui.event = function(modName, events, params, fn){ Layui.prototype.event = Layui.event = function(modName, events, params, fn){
var that = this var that = this;
,result = null var result = null;
,filter = (events || '').match(/\((.*)\)$/)||[] // 提取事件过滤器字符结构select(xxx) var filter = (events || '').match(/\((.*)\)$/)||[]; // 提取事件过滤器字符结构select(xxx)
,eventName = (modName + '.'+ events).replace(filter[0], '') // 获取事件名称form.select var eventName = (modName + '.'+ events).replace(filter[0], ''); // 获取事件名称form.select
,filterName = filter[1] || '' // 获取过滤器名称,xxx var filterName = filter[1] || ''; // 获取过滤器名称,xxx
,callback = function(_, item){ var callback = function(_, item){
var res = item && item.call(that, params); var res = item && item.call(that, params);
res === false && result === null && (result = false); res === false && result === null && (result = false);
}; };