最近做前台设计的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. kafka connect简介以及部署

    https://blog.csdn.net/u011687037/article/details/57411790 1.什么是kafka connect? 根据官方介绍,Kafka Connect是一 ...

  2. 09_Hadoop启动或停止的三种方式及启动脚本

    1.Hadoop启动或停止 1)第一种方式 分别启动 HDFS 和 MapReduce,命令如下: 启动: $ start-dfs.sh $ start-mapred.sh 停止: $ stop-ma ...

  3. ReactNative学习一

    ReactNative   主要学习来源于RN官方文档https://reactnative.cn/docs/0.51/getting-started.html 不过除了这个RN官方文档,其他RN中文 ...

  4. Linux环境下的图形系统和AMD R600显卡编程(1)——Linux环境下的图形系统简介

    转:https://www.cnblogs.com/shoemaker/p/linux_graphics01.html Linux/Unix环境下最早的图形系统是Xorg图形系统,Xorg图形系统通过 ...

  5. 【FAQ系列】Relay log 导致复制启动失败

    今天在使用冷备份文件重做从库时遇到一个报错,值得研究一下. 版本:MySQL5.6.27 一.报错现象 dba:(none)> start slave; ERROR (HY000): Slave ...

  6. 20165101刘天野 2017-2018-2 《Java程序设计》第7周学习总结

    #20165101刘天野 2017-2018-2 <Java程序设计>第7周学习总结 教材学习内容总结 第十一章JDBC与MySQL数据库 JDBC简介 JDBC(Java Databas ...

  7. Java线程池ExecutorService和CountDownLatch的小例子

    import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutorService; import java ...

  8. 字符串问题之 去掉字符串中连续出现K个0的子串

    字符串中刚好出现K个连续的‘O’,则把K个连续‘O’字符去除,返回处理后的字符串 比如 str="AOOOOOBOOO"   k=3, 返回“AOOOOOB” 这个题的解决思路也有 ...

  9. Spark性能优化指南--基础篇

    前言 开发调优 调优概述 原则一:避免创建重复的RDD 原则二:尽可能复用同一个RDD 原则三:对多次使用的RDD进行持久化 原则四:尽量避免使用shuffle类算子 原则五:使用map-side预聚 ...

  10. java学习小笔记(三.socket通信)【转】

    三,socket通信1.http://blog.csdn.net/kongxx/article/details/7288896这个人写的关于socket通信不错,循序渐进式的讲解,用代码示例说明,运用 ...