2019-07-17優(yōu)秀的國(guó)產(chǎn)框架之LayUI

說(shuō)明:官方文檔寫(xiě)的特別好钉凌!但是我吧咧最,光看是記不到啥東西的,所以就挑著自己寫(xiě)了點(diǎn)御雕,emmmm,基本都是copy官網(wǎng)滥搭,就當(dāng)是我在謄抄酸纲,加強(qiáng)記憶吧!

是一款國(guó)產(chǎn)的框架瑟匆,可以讓后端程序員不需學(xué)習(xí)太多就能操作頁(yè)面

下載

官網(wǎng):https://www.layui.com/

下載文件說(shuō)明

下載的文件

說(shuō)明:

  • css

  • font

  • images

  • lay:
    我們可以看到他是分模塊的管理我們的組件闽坡。并且?guī)臀覀兗闪薺Query。

    • layui.all.js:默認(rèn)引入modules里面的所有模塊愁溜。需要使用的時(shí)候疾嗅,不需要引入,直接聲明就行了冕象!
      var table = layui.table;
      var tree = layui.tree;
      var form = layui.form;

    • layui.js:默認(rèn)不引入代承,如果想要使用必須手動(dòng)引入,再聲明。
      引入方式:

  <script>
        layui.use(['tree', 'table', 'form'], function (obj) {
            var table = layui.table;
            var tree = layui.tree;
            var form = layui.form;         
            ……
        });
  </script>

準(zhǔn)備工作

我們先創(chuàng)建一個(gè)web項(xiàng)目

圖片.png

在WEB-INF下新建classes和lib2個(gè)文件夾(Directory)渐扮,配置java class字節(jié)碼編譯路徑


圖片.png

配置jar包存放路徑 lib文件夾


圖片.png

選擇目標(biāo)文件夾

選擇這個(gè)文件夾將要存放的文件類(lèi)型

再引入我們下載好的layui:

在webapp下新建一個(gè)文件夾resources论悴,將我們下載好的layui文件夾復(fù)制進(jìn)去掖棉,最后在JSP文件里邊引入就可以了。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>button</title>
    <%--引入css--%>
    <link href="resources/layui/css/layui.css">
    <%--引入js--%>
    <script src="resources/layui/layui.js"></script>
  </head>
  <body>
    <div>
      我的web項(xiàng)目
    </div>
  </body>
</html>
整體項(xiàng)目結(jié)構(gòu)

按鈕

有直角按鈕膀估,有圓角按鈕幔亥。大尺寸按鈕,小尺寸按鈕察纯。通過(guò)不同的class名來(lái)設(shè)置
默認(rèn)的按鈕與按鈕之間有間隔帕棉,但我們可以使用按鈕組來(lái)放置多個(gè)相連的按鈕。

圖標(biāo)

布局

選項(xiàng)卡

進(jìn)度條

面板

徽章

動(dòng)畫(huà)

時(shí)間和日期選擇器

表單

      //監(jiān)聽(tīng)form表單的提交
      form.on('submit(formDemo)', function(data){
        console.log(data);
        //這里面的data對(duì)應(yīng)的是設(shè)置了name屬性的表單元素饼记,如果表單元素沒(méi)有設(shè)置name屬性的話(huà)笤昨,他的值就不會(huì)被包含在data里邊。
        layer.msg(JSON.stringify(data.field));
        return false;
      });

通過(guò)事件監(jiān)聽(tīng)來(lái)提交表單內(nèi)容握恳。
form.on('event(過(guò)濾器值)', callback)
本例中:
form.on('submit(formDemo)', function(data){……}
過(guò)濾器的值——有l(wèi)ay-submit屬性對(duì)應(yīng)元素的 lay-filter屬性的值
callback——回調(diào)函數(shù)
??回調(diào)函數(shù)的參數(shù)data:值如下圖

回調(diào)函數(shù)的參數(shù)data

??data包含的值解析:

  • elem:綁定提交事件的元素(通過(guò)lay-submit屬性)瞒窒,必須給這個(gè)元素另一屬性lay-filter,用來(lái)標(biāo)識(shí)當(dāng)前的表單乡洼。
  • field:對(duì)應(yīng)for表單下的具有name屬性表單元素的 name:值 組成的對(duì)象。
  • form:對(duì)應(yīng)的form

彈出層

數(shù)據(jù)表格

使用html方式(了解)

使用js方式(掌握)渲染數(shù)據(jù)

  <%--表格的標(biāo)題欄氮块,數(shù)據(jù)欄我們采用js的方式動(dòng)態(tài)顯示--%>
  <table class="layui-table" id="user_table"></table>
......
<script>
    //推薦使用這種方式使用layui模塊
    layui.use(["table","layer"], function(){
      var table = layui.table;
      var layer = layui.layer,
      $ = layui.$,//不引入jquery是因?yàn)椋簝?nèi)置的模塊layer本身是依賴(lài)jquery的

      //執(zhí)行一個(gè) table 實(shí)例
      table.render({
        elem: '#user_table'
        ,url: './json/user.json' //數(shù)據(jù)接口
        ,cols: [[ //表頭
          {type: 'checkbox', fixed: 'left'}
          ,{field: 'id', title: 'ID', width:80, sort: true, fixed: 'left', totalRowText: '合計(jì):'}
          ,{field: 'username', title: '用戶(hù)名', width:80}
          ,{field: 'experience', title: '積分', width: 90, sort: true, totalRow: true}
          ,{field: 'sex', title: '性別', width:80, sort: true}
          ,{field: 'score', title: '評(píng)分', width: 80, sort: true, totalRow: true}
          ,{field: 'city', title: '城市', width:150}
          ,{field: 'sign', title: '簽名', width: 200}
          ,{field: 'classify', title: '職業(yè)', width: 100}
          ,{field: 'wealth', title: '財(cái)富', width: 135, sort: true, totalRow: true}
          ,{fixed: 'right', width: 165, align:'center', toolbar: '#barDemo'}
        ]]
        //以上的幾個(gè)參數(shù)為必填。
        ,toolbar: '#toolbarDemo'
      });
</script>

table通過(guò)js渲染數(shù)據(jù):
1.先在html里面定義一個(gè)table巴比,注意需要定義好id屬性
2.在js區(qū)域引入layui的js文件礁遵,并聲明table組件
3.通過(guò)函數(shù)的方式,設(shè)置Table的相關(guān)參數(shù)
4.必填參數(shù)

  • elem:綁定將要顯示數(shù)據(jù)的table(一般通過(guò)Id屬性綁定)
  • url:獲取數(shù)據(jù)的地址
  • cols:設(shè)置表頭的相關(guān)信息政勃。

5.比較常見(jiàn)的選填參數(shù)

  • toolbar:表格頭部工具欄區(qū)域。類(lèi)型值:
    toolbar: '#toolbarDemo' :指向自定義工具欄模板選擇器
    toolbar: '<div>xxx</div>' :直接傳入工具欄模板字符
    toolbar: true :僅開(kāi)啟工具欄奸远,不顯示左側(cè)模板
    toolbar: 'default':讓工具欄左側(cè)顯示默認(rèn)的內(nèi)置模板
    若需要“列顯示隱藏”、“導(dǎo)出”讽挟、“打印”等功能懒叛,則必須開(kāi)啟toolbar參數(shù)
  • page:是否開(kāi)啟分頁(yè)功能,默認(rèn)為false不開(kāi)啟

6.cols以及cols的參數(shù):cols用于設(shè)置表頭耽梅,是一個(gè)一個(gè)二維數(shù)組

  • field:設(shè)定字段名薛窥,字段名是表格數(shù)據(jù)列的唯一標(biāo)識(shí)
  • sort: true: 可以對(duì)本列進(jìn)行 上升/下降 排序,不會(huì)新發(fā)起一次請(qǐng)求
  • fixed:left/right褐墅,當(dāng)我們一行的單元格過(guò)多的時(shí)候后拆檬,表格就是橫向滾動(dòng)的了洪己。這種情況如果想固定某一列,可以使用這個(gè)參數(shù)竟贯。
  • type:設(shè)置列類(lèi)型答捕,默認(rèn)為normal,可選值:
    normal(常規(guī)列屑那,無(wú)需設(shè)定)
    checkbox(復(fù)選框列)
    radio(單選框列拱镐,layui 2.4.0 新增)
    numbers(序號(hào)列)
    space(空列)
  • templet:自定義列模板,實(shí)現(xiàn)邏輯處理持际,以及將原始數(shù)據(jù)轉(zhuǎn)化成其它格式沃琅,如時(shí)間戳轉(zhuǎn)化為日期字符等
  • toolbar:String類(lèi)型,綁定列工具條蜘欲。設(shè)定后,可在每行列中出現(xiàn)一些自定義的操作性按鈕

templet 參數(shù):自定義列模板

單元格的內(nèi)容默認(rèn)是完全按照數(shù)據(jù)接口返回的content原樣輸出的郭脂。
如果你想對(duì)某列的單元格實(shí)現(xiàn)邏輯處理澈歉,或者原始數(shù)據(jù)轉(zhuǎn)化成其它格式埃难,則需要用到這個(gè)參數(shù)涡尘。
方式有三種:
暫時(shí)先不學(xué)了,知道就行剧罩!

toolbar參數(shù): 綁定列工具條

用于比如說(shuō)在表格的每一行加上 查看、編輯挑势、刪除 這樣類(lèi)似的操作按鈕啦鸣。
String類(lèi)型無(wú)默認(rèn)值:通常接受的是一個(gè)選擇器诫给,也可以是一段HTML字符

數(shù)據(jù)的異步請(qǐng)求

參數(shù)如下:

  • url:接口地址凫碌。
    默認(rèn)會(huì)自動(dòng)傳遞兩個(gè)參數(shù):?page=1&limit=30(該參數(shù)可通過(guò) request 自定義)page 代表當(dāng)前頁(yè)碼盛险、limit 代表每頁(yè)數(shù)據(jù)量
  • method: 接口http請(qǐng)求類(lèi)型苦掘,默認(rèn):get
  • where: 接口的其它參數(shù)鹤啡。如:where: {token: 'sasasas', id: 123}
  • contentType:發(fā)送到服務(wù)端的內(nèi)容編碼類(lèi)型。如果你要發(fā)送 json 內(nèi)容祟牲,可以設(shè)置:contentType: 'application/json'
  • headers:接口的請(qǐng)求頭疲眷。如:headers: {token: 'sasasas'}
  • parseData:將返回的任意數(shù)據(jù)格式解析成 table 組件規(guī)定的數(shù)據(jù)格式
  • request:用于對(duì)分頁(yè)請(qǐng)求的參數(shù):page狂丝、limit重新設(shè)定名稱(chēng)
  • response:重新規(guī)定返回的數(shù)據(jù)格式

獲取選中行

獲取到表格所有的選中行相關(guān)數(shù)據(jù)几颜。語(yǔ)法:table.checkStatus('ID')蛋哭,其中 ID 為基礎(chǔ)參數(shù) id 對(duì)應(yīng)的值

1.通過(guò)方法渲染

……
table.render({ 
  ……
  id: 'idTest'
});

2.調(diào)用

var checkStatus = table.checkStatus('idTest'); //idTest 即為基礎(chǔ)參數(shù) id 對(duì)應(yīng)的值 
console.log(checkStatus.data) //獲取選中行的數(shù)據(jù)
console.log(checkStatus.data.length) //獲取選中行數(shù)量谆趾,可作為是否有選中行的條件
console.log(checkStatus.isAll ) //表格是否全選

導(dǎo)出數(shù)據(jù)

table的事件監(jiān)聽(tīng)

語(yǔ)法:table.on('event(filter)', callback)叛本。event為內(nèi)置事件名来候,filter為容器lay-filter設(shè)定的值

table的監(jiān)聽(tīng)有:
監(jiān)聽(tīng)復(fù)選框事:用戶(hù)選擇了哪些行
監(jiān)聽(tīng)頭部工具欄事件:
監(jiān)聽(tīng)單元格編輯:在單元格里直接修改內(nèi)容
監(jiān)聽(tīng)行單雙擊事件:列工具條中的刪除/編輯等操作
監(jiān)聽(tīng)排序切換:列排序的切換

      <table class="layui-table" lay-filter="test_table" id="test_event_table"></table>

      //監(jiān)聽(tīng)復(fù)選框事件
      table.on('checkbox(test_table)',function(obj){//
        console.log(obj);
      });

文件上傳

富文本編輯

底層方法

全局配置

方法:layui.config(options)

可以在使用模塊之前,全局化配置一些參數(shù)梆砸,目前支持的全局配置項(xiàng)如下:

layui.config({
  dir: '/res/layui/' //layui.js 所在路徑(注意帖世,如果是script單獨(dú)引入layui.js狮暑,無(wú)需設(shè)定該參數(shù)搬男。)彭沼,一般情況下可以無(wú)視
  ,version: false //一般用于更新模塊緩存姓惑,默認(rèn)不開(kāi)啟。設(shè)為true即讓瀏覽器不緩存敦冬。也可以設(shè)為一個(gè)固定的值脖旱,如:201610
  ,debug: false //用于開(kāi)啟調(diào)試模式萌庆,默認(rèn)false践险,如果設(shè)為true吹菱,則JS模塊的節(jié)點(diǎn)會(huì)保留在頁(yè)面
  ,base: '' //設(shè)定擴(kuò)展的Layui模塊的所在目錄鳍刷,一般用于外部模塊擴(kuò)展
});

自定義模塊

方法:layui.define([mods], callback)

通過(guò)該方法可定義一個(gè) Layui模塊倾剿。
參數(shù):
mods:可選的前痘,用于聲明該模塊所依賴(lài)的模塊芹缔。
callback:模塊加載完畢的回調(diào)函數(shù),返回一個(gè)exports參數(shù)示罗,用于輸出該模塊的接口蚜点。

layui.define(function(exports){
  exports('demo', function(){
    alert('Hello World!');
  });
});
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末绍绘,一起剝皮案震驚了整個(gè)濱河市陪拘,隨后出現(xiàn)的幾起案子左刽,更是在濱河造成了極大的恐慌欠痴,老刑警劉巖馍佑,帶你破解...
    沈念sama閱讀 221,820評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件拭荤,死亡現(xiàn)場(chǎng)離奇詭異舅世,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)缨硝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)查辩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)宜岛,“玉大人,你說(shuō)我怎么就攤上這事身弊≮宸穑” “怎么了戴而?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,324評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵麦萤,是天一觀的道長(zhǎng)扁眯。 經(jīng)常有香客問(wèn)我,道長(zhǎng)命满,這世上最難降的妖魔是什么胶台? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,714評(píng)論 1 297
  • 正文 為了忘掉前任诈唬,我火速辦了婚禮铸磅,結(jié)果婚禮上杭朱,老公的妹妹穿的比我還像新娘弧械。我一直安慰自己,他們只是感情好羞迷,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,724評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布闭树。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪碍现。 梳的紋絲不亂的頭發(fā)上米奸,一...
    開(kāi)封第一講書(shū)人閱讀 52,328評(píng)論 1 310
  • 那天悴晰,我揣著相機(jī)與錄音铡溪,去河邊找鬼。 笑死髓涯,一個(gè)胖子當(dāng)著我的面吹牛纬纪,可吹牛的內(nèi)容都是我干的滑肉。 我是一名探鬼主播靶庙,決...
    沈念sama閱讀 40,897評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼惶洲,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼恬吕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起渐裂,我...
    開(kāi)封第一講書(shū)人閱讀 39,804評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤柒凉,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后坦刀,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體鲤遥,經(jīng)...
    沈念sama閱讀 46,345評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡盖奈,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,431評(píng)論 3 340
  • 正文 我和宋清朗相戀三年钢坦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爹凹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片逛万。...
    茶點(diǎn)故事閱讀 40,561評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡宇植,死狀恐怖埋心,靈堂內(nèi)的尸體忽然破棺而出拷呆,到底是詐尸還是另有隱情,我是刑警寧澤腰懂,帶...
    沈念sama閱讀 36,238評(píng)論 5 350
  • 正文 年R本政府宣布绣溜,位于F島的核電站怖喻,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏跋选。R本人自食惡果不足惜哗蜈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,928評(píng)論 3 334
  • 文/蒙蒙 一恬叹、第九天 我趴在偏房一處隱蔽的房頂上張望绽昼。 院中可真熱鬧硅确,春花似錦明肮、人聲如沸柿估。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,417評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)嫂粟。三九已至星虹,卻和暖如春镊讼,著一層夾襖步出監(jiān)牢的瞬間蝶棋,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,528評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工嫡良, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寝受,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,983評(píng)論 3 376
  • 正文 我出身青樓京闰,卻偏偏與公主長(zhǎng)得像蹂楣,于是被迫代替她去往敵國(guó)和親痊土。 傳聞我的和親對(duì)象是個(gè)殘疾皇子墨林,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,573評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容