layui.js框架的启发
最近做前台设计的MM,应用了layui.js框架,是一个可以按模块加载的js框架,可以实现UI上的一些效果,比如"手风琴折叠"面板。我看了下源码,抽出了其框架,应用到公司的项目中,代码示例如下:
/** search.page-v1.0.0 by wbq/*/
!function (w) {
"use strict";
var c = {
showMessageElement: "#tipMessage",
waitElement: "#mainload",
},
o = function () { this.v = "1.0.0";
this.PostData = {};
this.KeywordList = [];
this.filterUrl = "";
this.listurl = ""; }; o.prototype.buildPostData = function () {
var that = this;
$('[nf-value]').each(function (index, item) {
if (item.type === "checkbox") {
that.PostData[item.id] = item.checked;
}
else if (item.type === "radio") {
if (item.checked) {
that.PostData[item.name] = item.value;
}
} else {
if (item.id)
that.PostData[item.id] = item.value;
}
});
return that.PostData;
},
o.prototype.config = function (e) {
e = e || {};
for (var t in e) c[t] = e[t];
return this;
},
o.prototype.post = function (url, postData, callback) {
if (!postData) {
postData = this.buildPostData();
}
var that = this;
$.ajax({
url: url,
type: "POST",
data: postData,
cache: false,
beforeSend: function (XMLHttpRequest) {
if (c.waitElement)
$(c.waitElement).show();
},
success: function (result) {
if (callback != null && typeof callback == 'function')
callback(result);
},
complete: function () {
if (c.waitElement)
$(c.waitElement).hide();
},
error: function (xhr, status, exp) { that.ShowMessage(exp);
}
});
},
o.prototype.get = function (postData, uri, callback) {
var that = this;
$.ajax({
url: uri,
type: "get",
cache: false,
data: postData,
success: function (result) {
if (callback != null && typeof callback == 'function')
callback(result);
},
error: function (xhr, status, exp) { that.ShowMessage(exp);
}
});
}, o.prototype.CheckAll = function () {
$("input[name='ckImport']").each(function (i) {
if ($(this).prop("checked")) {
$(this).prop("checked", false);
}
else {
$(this).prop("checked", true);
}
});
},
o.prototype.Search = function (keyword) { };
w.pageRequest = new o; w.chooseLetter = function (obj) { };
w.chooseKeyword = function (obj) { }; }(window);
此js结构比较简单明了,核心原理:通过立即执行函数,为window对象定义了一个属性pageRequest,它指向名为o的function实例,接下来,我们的注意力就集中到了o的上面。var o=function(){}这是函数表达式的写法。在函数内部,定义了一些属性。然后在o.prototype,即函数的原型上面定义了一组方法,它们在所有的实例上可以共享。我们还可以在window对象上定义其它方法。比如chooseLetter和chooseKeyword。
layui.js框架的启发的更多相关文章
- js框架简明
jquery 主要战场还是在dom这块.其它经典怀旧的2个需要了解一下,mootools, prototype.是他们启发了js向工程化,团队化,协作化发展的转变,yui虽然听说停止开发了,但他的代码 ...
- 8款JS框架比较
Dojo Dojo 是目前最为强大的JS框架,它在自己的 Wiki 上给自己下了一个定义,Dojo 是一个用 JavaScript 编写的开源的DHTML工具箱.Dojo 很想做一个“大一统” ...
- js 框架都有哪几种(转载)
目前来看,js框架以及一些开发包和库类有如下几个,Dojo .Scriptaculous .Prototype .yui-ext .Jquery .Mochikit.mootools .moo.fxD ...
- 利用layui前端框架实现对不同文件夹的多文件上传
利用layui前端框架实现对不同文件夹的多文件上传 问题场景: 普通的input标签实现多文件上传时,只能对同一个文件夹下的多个文件进行上传,如果要同时上传两个或多个文件夹下的文件,是无法实现的.这篇 ...
- layui前端框架
项目中需要弹出层效果,使用了layui前端框架,主要使用了里面的弹出层特效(可以移动) html代码 要给这个标签绑定click方法 <a href='javascript:;' data-me ...
- 前端Js框架 UI框架汇总 特性 适用范围 选择
身为一个资深后端工程师,面对层出不穷的前端框架,总让人眼花缭乱,做一个综合解析贴,从全局着眼,让我们明白各种前端框架的应用范围,为如何选择前端框架,从不同的维度提供一些线索,做为一个长期优化贴,欢迎指 ...
- layui前端框架之分页
框架环境:SSM框架 为了保证效果,此次演示也用到了jQuery ui框架,大家最好也引入进来 一.去layui官网下载包,解压后,然后导入文件中,最好放再main/webapp文件夹下 官网地址如下 ...
- layui后台框架的搭建
layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从 ...
- 基于layui的框架模版,采用模块化设计,接口分离,组件化思想
代码地址如下:http://www.demodashi.com/demo/13362.html 1. 准备工作 编辑器vscode,需要安装liveServer插件在前端开启静态服务器 或者使用hbu ...
随机推荐
- 修改subline text3左侧样式
安装PackageResourceViewer 快捷键 ⌘(command)+⇧(shift)+P 打开 Command Palette 输入 Package Control:Install 回车,等 ...
- 自己动手编译Android源码(超详细)
http://www.jianshu.com/p/367f0886e62b 在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译的一些事. ...
- JSP笔记02——概述(转)
不完全翻译,结合谷歌,一定主观性,还可能有误,原始内容地址:https://www.tutorialspoint.com/jsp/jsp_overview.htm 主要内容如下: 什么是JSP? 为什 ...
- .babelrc参数小解
.babelrc是用来设置转码规则和插件的,这种文件在window上无法直接创建,也无法在HBuilder中创建,甚至无法查看,但可以在sublime text中创建.查看并编辑. 当我们使用es6语 ...
- 大话设计模式之PHP篇 - 适配器模式
定义将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作. 角色Target适配目标,该角色定义把其他类转换为何种接口,也就是我们的期望接口.Adapte ...
- 关于Pytorch的二维tensor的gather和scatter_操作用法分析
看得不明不白(我在下一篇中写了如何理解gather的用法) gather是一个比较复杂的操作,对一个2维tensor,输出的每个元素如下: out[i][j] = input[index[i][j]] ...
- Docker 数据管理-bind mount
Use bind mounts Bind mounts have been around since the early days of Docker. Bind mounts have limite ...
- Python 数值类型
1.数值类型分为整形(二进制(0b),八进制(0o),十进制,十六进制(0x) ),浮点型,long,complex(复合行) 当我们说十进制数的时候,是逢10进1,就是说到达10的时候就要向前一位进 ...
- 使用 Apache Spark 让 MySQL 查询速度提升 10 倍以上
转: https://coyee.com/article/11012-how-apache-spark-makes-your-slow-mysql-queries-10x-faster-or-more ...
- Effective java第一章引言
菜鸟一枚,开始读第一本书<Effective Java>(第二版)~ 看引言就有好多名词不懂(>_<) 导出的API由所有可在定义该API的包之外访问的API元素组成.一个包的 ...