文作者:HelloGitHub-kalifun
這是 HelloGitHub 推出的《講解開源項目》系列,今天給大家推薦一個基于 Bootstrap 和 jQuery 的表格插件:Bootstrap-Table
一、介紹
從項目名稱就可以知道,這是一款 Bootstrap 的表格插件。表格的展示的形式所有的前端幾乎在工作中都有涉及過,Bootstrap Table 提供了快速的建表、查詢、分頁、排序等一系列功能。
項目地址:https://github.com/wenzhixin/bootstrap-table
可能 Bootstrap 和 jQuery 技術有些過時了,但如果因為歷史的技術選型或者舊的項目還在用這兩個庫的話,那這個項目一定會讓你的嘴角慢慢上揚,拿下表格展示方面的需求易如反掌!
二、模式
Boostatrp Table 分為兩種模式:客戶端(client)模式、服務端(server)模式。
三、實戰(zhàn)操作
Tips: 解釋說明均在代碼中以注釋方式展示,請大家注意閱讀。
我們采用的是最簡單的 CDN 引入方式,代碼可直接運行。復制代碼并將配置好 json 文件的路徑即可看到效果。
3.1 快速上手
注釋中的星號表示該參數(shù)必寫,話不多說上代碼。示例代碼:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Hello, Bootstrap Table!</title> // 引入 css <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous"> <link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.6.3/css/all.css" integrity="sha384-UHRtZLI+pbxtHCWp1t77Bi1L4ZtiqrqD80Kn4Z8NTSRyMA2Fd33n5dQ8lWUE00s/" crossorigin="anonymous"> <link rel="stylesheet" href="https://unpkg.com/bootstrap-table@1.15.3/dist/bootstrap-table.min.css"> </head> <body> // 需要填充的表格 <table id="tb_departments" data-filter-control="true" data-show-columns="true"></table> // 引入js <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.6/umd/popper.min.js" integrity="sha384-wHAiFfRlMFy6i5SRaxvfOCifBUQy1xHdJ/yoi7FRNXMRBu5WHdZYu1hA6ZOblgut" crossorigin="anonymous"></script> <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/js/bootstrap.min.js" integrity="sha384-B0UglyR+jN6CkvvICOB2joaf5I4l3gm9GU6Hc1og6Ls7i6U/mkkaduKaBhlAXv9k" crossorigin="anonymous"></script> <script src="https://unpkg.com/bootstrap-table@1.15.3/dist/bootstrap-table.min.js"></script> <script> window.operateEvents = { // 當點擊 class=delete 時觸發(fā) 'click .delete': function (e,value,row,index) { // 在 console 打印出整行數(shù)據(jù) console.log(row); } }; $('#tb_departments').bootstrapTable({ url: '/frontend/bootstrap-table/user.json', //請求后臺的 URL(*) method: 'get', //請求方式(*) // data: data, //當不使用上面的后臺請求時,使用data來接收數(shù)據(jù) toolbar: '#toolbar', //工具按鈕用哪個容器 striped: true, //是否顯示行間隔色 cache: false, //是否使用緩存,默認為 true,所以一般情況下需要設置一下這個屬性(*) pagination: true, //是否顯示分頁(*) sortable: false, //是否啟用排序 sortOrder: "asc", //排序方式 sidePagination: "client", //分頁方式:client 客戶端分頁,server 服務端分頁(*) pageNumber:1, //初始化加載第一頁,默認第一頁 pageSize: 6, //每頁的記錄行數(shù)(*) pageList: [10, 25, 50, 100], //可供選擇的每頁的行數(shù)(*) search: true, //是否顯示表格搜索,此搜索是客戶端搜索,不會進服務端,所以個人感覺意義不大 strictSearch: true, //啟用嚴格搜索。禁用比較檢查。 showColumns: true, //是否顯示所有的列 showRefresh: true, //是否顯示刷新按鈕 minimumCountColumns: 2, //最少允許的列數(shù) clickToSelect: true, //是否啟用點擊選中行 height: 500, //行高,如果沒有設置 height 屬性,表格自動根據(jù)記錄條數(shù)覺得表格高度 uniqueId: "ID", //每一行的唯一標識,一般為主鍵列 showToggle:true, //是否顯示詳細視圖和列表視圖的切換按鈕 cardView: false, //是否顯示詳細視圖 detailView: false, //是否顯示父子表 showExport: true, //是否顯示導出 exportDataType: "basic", //basic', 'all', 'selected'. columns: [{ checkbox: true //復選框標題,就是我們看到可以通過復選框選擇整行。 }, { field: 'id', title: 'ID' //我們取json中id的值,并將表頭title設置為ID }, { field: 'username', title: '用戶名' //我們取 json 中 username 的值,并將表頭 title 設置為用戶名 },{ field: 'sex', title: '性別' //我們取 json 中 sex 的值,并將表頭 title 設置為性別 },{ field: 'city', title: '城市' //我們取 json 中 city 的值,并將表頭 title 設置為城市 },{ field: 'sign', title: '簽名' //我們取 json 中 sign 的值,并將表頭 title 設置為簽名 },{ field: 'classify', title: '分類' //我們取 json 中 classify 的值,并將表頭 title 設置為分類 },{ //ormatter:function(value,row,index) 對后臺傳入數(shù)據(jù) 進行操作 對數(shù)據(jù)重新賦值 返回 return 到前臺 // events 觸發(fā)事件 field: 'Button',title:"操作",align: 'center',events:operateEvents,formatter:function(value,row,index){ var del = '<button type="button" class="btn btn-danger delete">刪除</button>' return del; } } ], responseHandler: function (res) { return res.data //在加載遠程數(shù)據(jù)之前,處理響應數(shù)據(jù)格式. // 我們取的值在data字段中,所以需要先進行處理,這樣才能獲取我們想要的結果 } }); </script> </body> </html>
上面的代碼展示通過基本 API 實現(xiàn)基礎的功能,示例代碼并沒有羅列所有的 API。該庫還有很多好玩的功能等著大家去發(fā)現(xiàn),正所謂師父領進門修行靠個人~
3.2 拆解講解
下面對關鍵點進行闡述,為了更方便使用的小伙伴清楚插件的用法。
3.2.1 初始化部分
選擇需要初始化表格。 $('#tb_departments').bootstrapTable({}) 這個就像table的入口一樣。 <table id="tb_departments" data-filter-control="true" data-show-columns="true"></table>
3.2.2 閱讀數(shù)據(jù)部分
columns:[{field: 'Key', title: '文件路徑',formatter: function(value,row,index){} }]
3.2.3 事件觸發(fā)器
events:operateEvents window.operateEvents = { 'click .download': function (e,value,row,index) { console.log(row); } }
因為很多時候我們需要針對表格進行處理,所以事件觸發(fā)器是一個不錯的選擇。比如:它可以記錄我們的行數(shù)據(jù),可以利用觸發(fā)器進行定制函數(shù)的執(zhí)行等。
四、擴展
介紹幾個擴展可以讓我們便捷的實現(xiàn)更多的表格功能,而不需要自己造輪子讓我們的工作更加高效(也可以進入官網查看擴展的具體使用方法,官方已經收集了大量的擴展)。老規(guī)矩直接上代碼:
4.1 表格導出
<script src="js/bootstrap-table-export.js"></script> showExport: true, //是否顯示導出 exportDataType: basic, //導出數(shù)據(jù)類型,支持:'基本','全部','選中' exportTypes:['json', 'xml', 'csv', 'txt', 'sql', 'excel'] //導出類型
4.2 自動刷新
<script src="extensions/auto-refresh/bootstrap-table-auto-refresh.js"></script> autoRefresh: true, //設置 true 為啟用自動刷新插件。這并不意味著啟用自動刷新 autoRefreshStatus: true, //設置 true 為啟用自動刷新。這是表加載時狀態(tài)自動刷新 autoRefreshInterval: 60, //每次發(fā)生自動刷新的時間(以秒為單位) autoRefreshSilent: true //設置為靜默自動刷新
4.3 復制行
<script src="extensions/copy-rows/bootstrap-table-copy-rows.js"></script> showCopyRows: true, //設置 true 為顯示復制按鈕。此按鈕將所選行的內容復制到剪貼板 copyWithHidden: true, //設置 true 為使用隱藏列進行復制 copyDelimiter: ', ', //復制時,此分隔符將插入列值之間 copyNewline: '\n' //復制時,此換行符將插入行值之間
五、總結
本篇文章只是簡單的闡述 Bootstrap-Table 如何使用,正在對表格功能實現(xiàn)而憂愁的小伙伴,可以使用 HelloGitHub 推薦的這款插件。你會發(fā)現(xiàn)網頁制作表格還可以如此快捷,期待小伙伴挖掘出更加有意思的功能哦。
注:上面 js 部分并沒有采用函數(shù)形式,建議在使用熟悉之后還是采用函數(shù)形式,這樣也方便復用及讓代碼看起來更加規(guī)范。
參考資料
[1]《講解開源項目》: https://github.com/HelloGitHub-Team/Article
[2]Bootstrap-Table 項目地址: https://github.com/wenzhixin/bootstrap-table
[3]Bootstrap-Table 官方文檔: https://bootstrap-table.com/docs/getting-started/introduction/
『講解開源項目系列』——讓對開源項目感興趣的人不再畏懼、讓開源項目的發(fā)起者不再孤單。跟著我們的文章,你會發(fā)現(xiàn)編程的樂趣、使用和發(fā)現(xiàn)參與開源項目如此簡單。歡迎留言聯(lián)系我們、加入我們,讓更多人愛上開源、貢獻開源~
評分析平臺-介紹
具體介紹見之前的視頻:
差評分析助手-01-介紹
差評分析助手-02-技術
差評分析助手-03-演示
目標
一個涉及到Python基礎,爬蟲,數(shù)據(jù)分析,前端,web框架,數(shù)據(jù)庫,緩存,任務隊列,服務部署,上線優(yōu)化的綜合性可擴展的項目。
綜合運用各種編程知識,培養(yǎng)全棧開發(fā)能力。
功能
前端
展示業(yè)務流程
分頁
跳轉
數(shù)據(jù)可視化
后端
制作API,獲取狀態(tài)和結果
根據(jù)分頁返回數(shù)據(jù)
緩存優(yōu)先
分頁獲取
異步執(zhí)行任務
windows: pip install eventlet
> celery worker -A app.celery --loglevel=debug -P eventlet
前后端分離
跨域
restful
驗證
docker服務部署
上線優(yōu)化
技術
前端
vue
https://cn.vuejs.org/v2/guide/
vuex
https://vuex.vuejs.org/zh/guide/state.html
elementUI
https://element.eleme.cn/#/zh-CN
https://github.com/ElementUI/vue-cli-plugin-element
echarts
https://gallery.echartsjs.com/explore.html#sort=rank~timeframe=all~author=all
https://www.echartsjs.com/tutorial.html
https://www.echartsjs.com/examples/
v-charts
https://v-charts.js.org/#/props
后端API
Python
基礎知識
面向對象
網絡基礎
http
web框架
flask
http://flask.pocoo.org/
https://flask-restful.readthedocs.io/en/latest/
https://flask-httpauth.readthedocs.io/en/latest/
爬蟲
優(yōu)化
制作API
mongodb
存儲爬取結果
redis
記錄任務,爬蟲狀態(tài)
緩存分析結果
celery
任務隊列
rabbitmq
pandas
提取有用數(shù)據(jù)
https://www.jianshu.com/p/161364dd0acf
https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html#merge
可視化
維度:觀察數(shù)據(jù)的角度和對數(shù)據(jù)的描述
目標:使用圖表展示數(shù)據(jù),讓用戶快速抓住要點信息
要點:把握圖表特點,使用不同維度,展示合適的數(shù)據(jù)。
圖表分類
折線圖
示意圖
展示數(shù)據(jù)的趨勢,在橫軸的維度上展示縱軸數(shù)據(jù)的變化趨勢
柱狀圖
示意圖
比較數(shù)據(jù)大小,多個維度的變化分析,用大小和顏色區(qū)分
局限:分類過多則無法展示數(shù)據(jù)特點
餅圖
示意圖
表示一組數(shù)據(jù)的占比
工具
echarts:
https://www.echartsjs.com
http://echarts.apache.org/
pyecharts: https://pyecharts.org/#/zh-cn/intro
v-charts: https://v-charts.js.org/#/
后續(xù)會逐步推出前端到后端的開發(fā)過程,敬請關注。
ava識堂,一個高原創(chuàng),高收藏,有干貨的微信公眾號,歡迎關注
sort 命令對 File 參數(shù)指定的文件中的行排序,并將結果寫到標準輸出。如果 File 參數(shù)指定多個文件,那么 sort 命令將這些文件連接起來,并當作一個文件進行排序。
sort語法
[root@www ~]# sort [-fbMnrtuk] [file or stdin] 選項與參數(shù): -f :忽略大小寫的差異,例如 A 與 a 視為編碼相同; -b :忽略最前面的空格符部分; -M :以月份的名字來排序,例如 JAN, DEC 等等的排序方法; -n :使用『純數(shù)字』進行排序(默認是以文字型態(tài)來排序的); -r :反向排序; -u :就是 uniq ,相同的數(shù)據(jù)中,僅出現(xiàn)一行代表; -t :分隔符,默認是用 [tab] 鍵來分隔; -k :以那個區(qū)間 (field) 來進行排序的意思
對/etc/passwd 的賬號進行排序 [root@www ~]# cat /etc/passwd | sort adm:x:3:4:adm:/var/adm:/sbin/nologin apache:x:48:48:Apache:/var/www:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
sort 是默認以第一個數(shù)據(jù)來排序,而且默認是以字符串形式來排序,所以由字母 a 開始升序排序。
/etc/passwd 內容是以 : 來分隔的,我想以第三欄來排序,該如何
[root@www ~]# cat /etc/passwd | sort -t ':' -k 3 root:x:0:0:root:/root:/bin/bash uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin bin:x:1:1:bin:/bin:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin
默認是以字符串來排序的,如果想要使用數(shù)字排序:
cat /etc/passwd | sort -t ':' -k 3n root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh
默認是升序排序,如果要倒序排序,如下
cat /etc/passwd | sort -t ':' -k 3nr nobody:x:65534:65534:nobody:/nonexistent:/bin/sh ntp:x:106:113::/home/ntp:/bin/false messagebus:x:105:109::/var/run/dbus:/bin/false sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
如果要對/etc/passwd,先以第六個域的第2個字符到第4個字符進行正向排序,再基于第一個域進行反向排序。
cat /etc/passwd | sort -t':' -k 6.2,6.4 -k 1r sync:x:4:65534:sync:/bin:/bin/sync proxy:x:13:13:proxy:/bin:/bin/sh bin:x:2:2:bin:/bin:/bin/sh sys:x:3:3:sys:/dev:/bin/sh
查看/etc/passwd有多少個shell:對/etc/passwd的第七個域進行排序,然后去重:
cat /etc/passwd | sort -t':' -k 7 -u root:x:0:0:root:/root:/bin/bash syslog:x:101:102::/home/syslog:/bin/false daemon:x:1:1:daemon:/usr/sbin:/bin/sh sync:x:4:65534:sync:/bin:/bin/sync sshd:x:104:65534::/var/run/sshd:/usr/sbin/nologin
uniq命令可以去除排序過的文件中的重復行,因此uniq經常和sort合用。也就是說,為了使uniq起作用,所有的重復行必須是相鄰的。
uniq語法
[root@www ~]# uniq [-icu] 選項與參數(shù): -i :忽略大小寫字符的不同; -c :進行計數(shù) -u :只顯示唯一的行
testfile的內容如下
cat testfile hello world friend hello world hello
直接刪除未經排序的文件,將會發(fā)現(xiàn)沒有任何行被刪除
#uniq testfile hello world friend hello world hello
排序文件,默認是去重
#cat words | sort |uniq friend hello world
排序之后刪除了重復行,同時在行首位置輸出該行重復的次數(shù)
#sort testfile | uniq -c 1 friend 3 hello 2 world
僅顯示存在重復的行,并在行首顯示該行重復的次數(shù)
#sort testfile | uniq -dc 3 hello 2 world
僅顯示不重復的行
sort testfile | uniq -u friend
cut命令可以從一個文本文件或者文本流中提取文本列。
cut語法
[root@www ~]# cut -d'分隔字符' -f fields <==用于有特定分隔字符 [root@www ~]# cut -c 字符區(qū)間 <==用于排列整齊的信息 選項與參數(shù): -d :后面接分隔字符。與 -f 一起使用; -f :依據(jù) -d 的分隔字符將一段信息分割成為數(shù)段,用 -f 取出第幾段的意思; -c :以字符 (characters) 的單位取出固定字符區(qū)間;
PATH 變量如下
[root@www ~]# echo $PATH /bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games # 1 | 2 | 3 | 4 | 5 | 6 | 7
將 PATH 變量取出,我要找出第五個路徑。
#echo $PATH | cut -d ':' -f 5 /usr/local/bin
將 PATH 變量取出,我要找出第三和第五個路徑。
#echo $PATH | cut -d ':' -f 3,5 /sbin:/usr/local/bin
將 PATH 變量取出,我要找出第三到最后一個路徑。
echo $PATH | cut -d ':' -f 3- /sbin:/usr/sbin:/usr/local/bin:/usr/X11R6/bin:/usr/games
將 PATH 變量取出,我要找出第一到第三個路徑。
#echo $PATH | cut -d ':' -f 1-3 /bin:/usr/bin:/sbin:
將 PATH 變量取出,我要找出第一到第三,還有第五個路徑。
echo $PATH | cut -d ':' -f 1-3,5 /bin:/usr/bin:/sbin:/usr/local/bin
實用例子:只顯示/etc/passwd的用戶和shell
#cat /etc/passwd | cut -d ':' -f 1,7 root:/bin/bash daemon:/bin/sh bin:/bin/sh
統(tǒng)計文件里面有多少單詞,多少行,多少字符。
wc語法
[root@www ~]# wc [-lwm] 選項與參數(shù): -l :僅列出行; -w :僅列出多少字(英文單字); -m :多少字符;
默認使用wc統(tǒng)計/etc/passwd
#wc /etc/passwd 40 45 1719 /etc/passwd
40是行數(shù),45是單詞數(shù),1719是字節(jié)數(shù)
wc的命令比較簡單使用,每個參數(shù)使用如下:
#wc -l /etc/passwd #統(tǒng)計行數(shù),在對記錄數(shù)時,很常用 40 /etc/passwd #表示系統(tǒng)有40個賬戶 #wc -w /etc/passwd #統(tǒng)計單詞出現(xiàn)次數(shù) 45 /etc/passwd #wc -m /etc/passwd #統(tǒng)計文件的字節(jié)數(shù) 1719
原文:https://www.cnblogs.com/ggjucheng/archive/2013/01/13/2858385.html
*請認真填寫需求信息,我們會在24小時內與您取得聯(lián)系。