最近做前台设计的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框架的启发的更多相关文章

  1. js框架简明

    jquery 主要战场还是在dom这块.其它经典怀旧的2个需要了解一下,mootools, prototype.是他们启发了js向工程化,团队化,协作化发展的转变,yui虽然听说停止开发了,但他的代码 ...

  2. 8款JS框架比较

    Dojo     Dojo 是目前最为强大的JS框架,它在自己的 Wiki 上给自己下了一个定义,Dojo 是一个用 JavaScript 编写的开源的DHTML工具箱.Dojo 很想做一个“大一统” ...

  3. js 框架都有哪几种(转载)

    目前来看,js框架以及一些开发包和库类有如下几个,Dojo .Scriptaculous .Prototype .yui-ext .Jquery .Mochikit.mootools .moo.fxD ...

  4. 利用layui前端框架实现对不同文件夹的多文件上传

    利用layui前端框架实现对不同文件夹的多文件上传 问题场景: 普通的input标签实现多文件上传时,只能对同一个文件夹下的多个文件进行上传,如果要同时上传两个或多个文件夹下的文件,是无法实现的.这篇 ...

  5. layui前端框架

    项目中需要弹出层效果,使用了layui前端框架,主要使用了里面的弹出层特效(可以移动) html代码 要给这个标签绑定click方法 <a href='javascript:;' data-me ...

  6. 前端Js框架 UI框架汇总 特性 适用范围 选择

    身为一个资深后端工程师,面对层出不穷的前端框架,总让人眼花缭乱,做一个综合解析贴,从全局着眼,让我们明白各种前端框架的应用范围,为如何选择前端框架,从不同的维度提供一些线索,做为一个长期优化贴,欢迎指 ...

  7. layui前端框架之分页

    框架环境:SSM框架 为了保证效果,此次演示也用到了jQuery ui框架,大家最好也引入进来 一.去layui官网下载包,解压后,然后导入文件中,最好放再main/webapp文件夹下 官网地址如下 ...

  8. layui后台框架的搭建

    layui(谐音:类UI) 是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用.其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从 ...

  9. 基于layui的框架模版,采用模块化设计,接口分离,组件化思想

    代码地址如下:http://www.demodashi.com/demo/13362.html 1. 准备工作 编辑器vscode,需要安装liveServer插件在前端开启静态服务器 或者使用hbu ...

随机推荐

  1. 修改subline text3左侧样式

    安装PackageResourceViewer 快捷键 ⌘(command)+⇧(shift)+P 打开 Command Palette 输入 Package Control:Install 回车,等 ...

  2. 自己动手编译Android源码(超详细)

    http://www.jianshu.com/p/367f0886e62b 在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译的一些事. ...

  3. JSP笔记02——概述(转)

    不完全翻译,结合谷歌,一定主观性,还可能有误,原始内容地址:https://www.tutorialspoint.com/jsp/jsp_overview.htm 主要内容如下: 什么是JSP? 为什 ...

  4. .babelrc参数小解

    .babelrc是用来设置转码规则和插件的,这种文件在window上无法直接创建,也无法在HBuilder中创建,甚至无法查看,但可以在sublime text中创建.查看并编辑. 当我们使用es6语 ...

  5. 大话设计模式之PHP篇 - 适配器模式

    定义将一个类的接口转换成客户希望的另外一个接口,使用原本不兼容的而不能在一起工作的那些类可以在一起工作. 角色Target适配目标,该角色定义把其他类转换为何种接口,也就是我们的期望接口.Adapte ...

  6. 关于Pytorch的二维tensor的gather和scatter_操作用法分析

    看得不明不白(我在下一篇中写了如何理解gather的用法) gather是一个比较复杂的操作,对一个2维tensor,输出的每个元素如下: out[i][j] = input[index[i][j]] ...

  7. Docker 数据管理-bind mount

    Use bind mounts Bind mounts have been around since the early days of Docker. Bind mounts have limite ...

  8. Python 数值类型

    1.数值类型分为整形(二进制(0b),八进制(0o),十进制,十六进制(0x) ),浮点型,long,complex(复合行) 当我们说十进制数的时候,是逢10进1,就是说到达10的时候就要向前一位进 ...

  9. 使用 Apache Spark 让 MySQL 查询速度提升 10 倍以上

    转: https://coyee.com/article/11012-how-apache-spark-makes-your-slow-mysql-queries-10x-faster-or-more ...

  10. Effective java第一章引言

    菜鸟一枚,开始读第一本书<Effective Java>(第二版)~ 看引言就有好多名词不懂(>_<) 导出的API由所有可在定义该API的包之外访问的API元素组成.一个包的 ...