整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          Grid.js - 跨框架的前端表格插件

          Grid.js - 跨框架的前端表格插件

          想簡簡單單畫個表格,但 React,Vue,Angular,…,這么多前端框架,各自都有不同的表格渲染庫。就沒有表格庫能“一次畫表,到處運行”嗎?來看看 Grid.js 這個跨框架的前端表格插件吧!

          簡介

          Grid.js,是 Github 上 grid-js 組織開源的前端表格插件,代碼倉庫在 https://github.com/grid-js/gridjs,目前版本為 1.4.2。Grid.js 的標語是

          A table library that works everywhere

          也即是一個可以到處運行的表格庫。Grid.js 沒有第三方依賴鎖定,其唯一的外部依賴已經被打包在內,意味著它能在所有的前端框架,包括沒有框架的情況下使用。

          Grid.js 使用 TypeScript 開發,大小僅為 12KB,支持所有現代瀏覽器,并利用內部管線技術獲得了高速性能。

          Grid.js表格插件

          安裝

          在 Node.js 環境使用 Grid.js,可使用 npm 進行安裝:

          npm install gridjs --save

          使用時需要導入 Javascript 和 CSS 文件:

          import { Grid } from "gridjs";
          import "gridjs/dist/theme/mermaid.css";

          而在瀏覽器環境中使用時,可以直接引用 CDN 使用:

          <script src="https://unpkg.com/gridjs/dist/gridjs.production.min.js"></script>
          <link href="https://unpkg.com/gridjs/dist/theme/mermaid.min.css" rel="stylesheet" />

          示例

          使用 Grid.js 時,需要一個 div 元素的 wrapper,然后創建一個 Grid.js 的 Grid 實例,定義表格的配置參數,最后調用 render 方法,完成渲染。

          一個使用瀏覽器的例子如下:

          <!DOCTYPE html>
          <html lang="en">
            <head>
              <link
                href="https://unpkg.com/gridjs/dist/theme/mermaid.min.css"
                rel="stylesheet"
              />
            </head>
            <body>
              <div id="wrapper"></div>
              <script src="https://unpkg.com/gridjs/dist/gridjs.production.min.js"></script>
              <script>
                new gridjs.Grid({
                  columns: ["Name", "Email", "Phone Number"],
                  data: [
                    ["John", "john@example.com", "(353) 01 222 3333"],
                    ["Mark", "mark@gmail.com", "(01) 22 888 4444"],
                    ["Eoin", "eoin@gmail.com", "0097 22 654 00033"],
                    ["Sarah", "sarahcdd@gmail.com", "+322 876 1233"],
                    ["Afshin", "afshin@mail.com", "(353) 22 87 8356"]
                  ]
                }).render(document.getElementById("wrapper"));
              </script>
            </body>
          </html>

          可以看到,gridjs.Grid 使用了參數 columns 來定義列,以及 data 來添加各行的數據。類似的,Grid.js 在 React 中的例子如下:

          import { Grid } from "gridjs";
          import "gridjs/dist/theme/mermaid.css";
          function helloWorld () {
            const grid=new Grid({
              columns: ['Name', 'Email', 'Phone Number'],
              data: [
                ['John', 'john@example.com', '(353) 01 222 3333'],
                ['Mark', 'mark@gmail.com',   '(01) 22 888 4444']
              ]
            });
            
            useEffect(()=> {
              grid.render(document.getElementById('wrapper'));
            });
            
            return (
              <div id="wrapper" />
            );
          }

          不難看出,Grid.js 的使用方法是一致的,兩份代碼都渲染出了美觀的表格。

          Grid.js表格示例

          Grid.js的設計十分簡潔,主要參數包括:

          • data:類型為 T[][] 或 Function,表格每行的數據。data 可以是一個包含各個單元格數據的二維數組,也可以是一個返回可解析為二維數組的函數,以實現異步加載(Promise)和動態加載。
          • from:類型為 HTMLElement,已有的 HTML 表格元素。Grid.js 可以從一個現有的 HTML 的 form 元素生成一個 Grid 表格,添加樣式和其他功能。
          • server:遠程數據加載。server 是一個包含 url,以及可選的 then 和 opts 的對象,可以根據從 url獲取的遠程數據渲染表格。
          // 使用server參數進行遠程數據加載
          const grid=new Grid({
            columns: ['Title', 'Director', 'Producer'],
            server: {
              url: 'https://swapi.dev/api/films/',
              then: data=> data.results.map(movie=> [movie.title, movie.director, movie.producer])
            } 
          });
          • columns:類型為string[] 或 TColumn[],表格的列定義。TColumn 類型包括名字、寬度、排序和格式器屬性,方便對各列進行定制配置。
          • search:搜索功能配置,可以實現簡單的客戶端關鍵字搜索,或利用 search.server 配置實現服務器端搜索。

          Grid.js搜索

          • pagination:分頁功能配置,可以實現客戶端或服務端的分頁功能。

          Grid.js分頁

          總結

          Grid.js 作為一個跨框架的前端表格插件,在各個前端框架中都能使用相同的 API 完成表格的定義和渲染,降低了使用不同框架時的學習成本,避免了各種不同依賴所帶來的問題。

          同時,Grid.js 作為一個功能豐富的插件,提供了主流表格插件的大部分功能;且設計簡潔,性能優越,在一些定制化要求不高的表格應用場景中具有很大的優勢。

          Grid.js 目前正處在積極開發的階段,版本號更新較快,有興趣的開發者可以參與開源貢獻。而作為一個 TypeScript 項目,Grid.js 代碼結構清晰,值得進一步研究學習。

          享一款jQuery表格插件,今天我要介紹的不是DataTables,而是相對沒有那么出名的jqGrid,它基于jquery UI主題,同時也支持Bootstrap,能夠根據需求使用不同主題。兼容目前主流瀏覽器,有豐富的配置項和方法事件接口,能夠輕松應對一般的表格需求,功能強大,擴展方便,支持多語言。

          • 1、下載及引入jqGrid

            https://github.com/tonytomov/jqGrid

          下載jqGrid后,把文件存放到你項目的任意目錄中,使用時引入js、css即可,下面以引入Bootstrap樣式為例,i18n下的js為語言包,需要注意的是請務必把語言包放在jqGrid的js之前引入,以免后續出現問題。

          • 2、初始化表格

          頁面中輸入<table id="grid-table"></table><div id="grid-pager"></div>,頁面基本就這樣,然后在js中配置相關信息初始化表格。

          下圖opt的基本參數,請到api文檔查看更多配置屬性

          在opt中還有一個表格配置屬性colModel,該屬性就是我們要展示的表頭,數據等信息的配置,下圖是一個簡單的例子。

          后臺需要返回如下格式的json數據,page為當前頁數,records為總共有多少條數據,rows為數據,total為總共頁數

          最后我們配置完成后是這樣的。

          刷新頁面后大概就是下面的樣子,沒有真實姓名之后的列和導航欄中的工具按鈕。

          想要配置工具按鈕也很簡單,配置以下信息即可,內置按鈕有新增、編輯、刪除、搜索、刷新、查看按鈕,可以添加自定義按鈕,內置按鈕也可以重寫其方法,能夠方便的實現我們想要的功能。

          • 3、新增、編輯、刪除功能

          大致可以分為彈窗和內聯兩種操作,可以自己進行自定義,也可以跳轉頁面進行新增、編輯

          彈窗

          內聯

          • 4、頁腳匯總和分組

          • 5、分頁

          分頁方式有兩種,導航分頁和無限滾動分頁

          導航分頁

          無限滾動分頁

          • 6、其他

          還有很多其他的功能如多選、單選、多層次結構展示、排序、搜索過濾等。唯一的缺陷是樹形表格,目前它的樹形表格配置繁瑣,也存在比較的的問題,但也還勉強能接受,希望樹形表格在以后能夠有所改善。

          API文檔:http://www.trirand.com/jqgridwiki/doku.php?id=wiki:jqgriddocs

          在線演示:http://www.guriddo.net/demo/bootstrap/

          趣是最好的老師,HelloGitHub 讓你對編程感興趣!

          簡介

          分享 GitHub 上有趣、入門級的開源項目。

          這里有實戰項目、入門教程、黑科技、開源書籍、大廠開源項目等,涵蓋多種編程語言 Python、Java、Go、C/C++、Swift...讓你在短時間內感受到開源的魅力,對編程產生興趣!

          項目地址:https://github.com/521xueweihan/HelloGitHub

          感謝大家點亮的每一個 Star ?


          以下為本期內容|每個月 28 號更新

          C 項目

          1、mgba:用 C 語言實現的 GBA 模擬器。喚起你童年回憶的同時,還能邊學邊玩,然后再約上三兩好友一起看看源碼和實現,快樂就是這么簡單

          地址:https://github.com/mgba-emu/mgba

          C++ 項目

          2、rocksdb:用 C++ 編寫的高性能鍵值存儲引擎。該項目是由 Fackbook 數據庫團隊基于 levelDB 開發,鍵值均支持二進制流,能夠充分利用多核 CPU 獲得高性能,并兼容 levelDB 的 API 可謂是青出于藍而勝于藍。RocksDB 當下十分流行,一些開源數據庫底層存儲用的就是它

          地址:https://github.com/facebook/rocksdb

          Go 項目

          3、learngo:適合新手學習 Go 語法的開源項目。學習一門編程語言最好的方法就是動手寫,該倉庫擁有 1000 多個 Go 語法的問題,讓你可以跟著練并附有答案

          地址:https://github.com/inancgumus/learngo

          4、tunny:可設置固定數量協程的 goroutine pool 庫。通過這個項目可實現 goroutine 重復使用,從而避免過度創建 goroutine 而造成的內存占用過多等問題

          package main
          
          import (
           "io/ioutil"
           "net/http"
           "runtime"
          
           "github.com/Jeffail/tunny"
          )
          
          func main() {
           numCPUs := runtime.NumCPU()
          
           pool := tunny.NewFunc(numCPUs, func(payload interface{}) interface{} {
            var result []byte
          
            // TODO: Something CPU heavy with payload
          
            return result
           })
           defer pool.Close()
          
           http.HandleFunc("/work", func(w http.ResponseWriter, r *http.Request) {
            input, err := ioutil.ReadAll(r.Body)
            if err != nil {
             http.Error(w, "Internal error", http.StatusInternalServerError)
            }
            defer r.Body.Close()
          
            // Funnel this work into our pool. This call is synchronous and will
            // block until the job is completed.
            result := pool.Process(input)
          
            w.Write(result.([]byte))
           })
          
           http.ListenAndServe(":8080", nil)
          }

          地址:https://github.com/Jeffail/tunny

          5、glab:用 Go 寫的 GitLab 命令行工具。通過它除了能夠在命令行管理項目、issues、合并提交之外,還能夠查看 CI 的運行狀態

            api:         Make authenticated REST/GRAPHQL
            auth:        Manage glab's authentication state
            issue:       Work with GitLab issues
            label:       Manage labels on remote
            mr:          Create, view and manage merge requests
            ci:          Work with GitLab CI pipelines and jobs
            release:     Manage GitLab releases
            repo:        Work with GitLab repositories and projects

          地址:https://github.com/profclems/glab

          6、fzf:能夠搜“一切”的模糊搜索命令行工具。它能夠搜文件、歷史命令、進程、git 提交記錄等信息,支持預覽內容、整合到 Vim/Neovim 編輯器,而且搜索速度極快

          地址:https://github.com/junegunn/fzf

          7、godis:用 Go 語言寫的 Redis 服務器。它實現了 Redis 通信協議并兼容 redis-cli 客戶端,包含 5 種常用的數據結構和命令比如:TTL、發布訂閱、地理位置以及 AOF 持久化等,Go 的初學者可以通過該項目能夠學習到關于 TCP、通信協議實現、常用的數據結構等知識,Web 開發學煩了?換一個口味,寫個 Redis 作為實戰項目吧

          地址:https://github.com/HDT3213/godis

          Java 項目

          8、ExoPlayer:谷歌官方開源的 Android 媒體播放器。易于定制和擴展,支持豐富的數據格式比如:FMP4、FLV、SmoothStreaming、MP3 等

          地址:https://github.com/google/ExoPlayer

          9、traccar:GPS 追蹤平臺。此項目支持 170 多種 GPS 協議,1500 多種型號的 GPS 設備,功能包含:實時 GPS 追蹤、數據統計報告、報警和通知等等

          地址:https://github.com/traccar/traccar

          10、airbyte:一個開源的 EL(T) 平臺。能簡單快速地把用戶提供的應用、數據庫等地方的數據聚合到平臺,從而可以在一個平臺查詢、展示、更新、管理這些數據

          地址:https://github.com/airbytehq/airbyte

          11、Ward:擁有漂亮儀表盤的服務器監控工具

          地址:https://github.com/B-Software/Ward

          JavaScript 項目

          12、moovie.js:專注于電影的 HTML5 播放器。容易上手和使用,支持倍速播放、快捷鍵操作、字幕偏移即時調整等功能

          地址:https://github.com/BMSVieira/moovie.js

          13、nativefier:能夠把 Web 頁面變成本地應用的命令行工具。通過 Electron+Chromium 把網站包裝成本地 .app、.exe 等可執行文件,支持運行在 Windows、macOS 和 Linux 操作系統上

          地址:https://github.com/nativefier/nativefier

          14、lowdb:支持瀏覽器和 Electron 的輕量級 JSON 文件數據庫。如果是創建沒有后端的小型前端項目,但還有存儲和管理數據的需求,那就快試試 lowdb 吧

          import { join } from 'path'
          import { Low, JSONFile } from 'lowdb'
          
          // 新建 JSON 文件用于存儲數據
          const file = join(__dirname, 'db.json')
          const adapter = new JSONFile(file)
          const db = new Low(adapter)
          
          // 把內容更新到 db.data 并寫入 JSON 文件
          db.data.posts.push({ id: 1, title: 'lowdb is awesome' }).write()
          db.get('posts')
            .filter({title: 'lowdb is awesome'})
            .sortBy('id')
            .take(5)
            .value()

          地址:https://github.com/typicode/lowdb

          15、eruda:一個專為手機端設計的前端頁面調試工具。類似手機端迷你版開發者模式,可用于在手機端調試頁面。主要功能包括:顯示 console 日志、檢查元素狀態、捕獲 XHR 請求、顯示本地存儲和 Cookie 等信息

          地址:https://github.com/liriliri/eruda

          16、cusdis:這是一個界面清爽、注重隱私的輕量級博客評論系統。可以很方便地與 React、Vue 或其他博客系統結合,并且還提供了一個后臺來管理所有的評論。除此之外,還支持一鍵從 Disqus 導入、郵件通知等強大的功能

          地址:https://github.com/djyde/cusdis

          Kotlin 項目

          17、mirai:由 Kotlin 語言編寫的 QQ 機器人框架。該項目提供了 Android QQ 協議的 API,通過這些 API 可以實現自動化操作,比如:群管理等功能,注意!該項目不支持一切商業使用。最后項目的 Kotlin 代碼寫的很好,感興趣的同學可以去看下源碼

          地址:https://github.com/mamoe/mirai

          Python 項目

          18、pygame:用來開發游戲的 Python 庫。Pygame 已經持續更新多年,網上的教程和資料十分充足,雖然在游戲開發領域 Python 只是個弟弟,但如果只是用這個庫開發個 2D 小游戲還是很順手的。推薦給想用 Python 寫個小游戲的朋友

          地址:https://github.com/pygame/pygame

          19、GitHubPoster:能夠把多個平臺上的數據,生成類似 GitHub 綠墻圖像的工具。比如能夠把發推的頻率、扇貝單詞打卡等情況生成類似 GitHub 綠墻圖像,使用簡單感興趣的同學可以把玩一下

          地址:https://github.com/yihong0618/GitHubPoster

          20、guietta:用于制作簡單 GUI 程序的 Python 庫。換一種簡單的方式寫 GUI(圖形用戶界面)程序?

          from guietta import _, Gui, Quit
          gui = Gui(
           [ "Enter numbers:",  "__a__", "+", "__b__", ["Calculate"] ],
           [    "Result: -->", "result",   _,       _,             _ ],
           [                _,        _,   _,       _,          Quit ]
          )
          
          with gui.Calculate:
           gui.result = float(gui.a) + float(gui.b)
          
          gui.run()

          地址:https://github.com/alfiopuglisi/guietta

          Ruby 項目

          21、forem:用來構建社區的 Ruby 開源項目。一款開源、現成的論壇項目,能夠讓你快速搭建起來一個社區平臺。國外知名的程序員社區 dev 用的就是它

          地址:https://github.com/forem/forem

          Rust 項目

          22、rustdesk:免費開源的遠程桌面軟件。開箱即用無需任何配置,支持 Linux/Mac/Win/Android 等平臺。還能夠自行搭建服務器,由用戶自己掌控數據,不必擔心隱私數據泄露的問題。在當下越來越多的遠程桌面軟件都收費的情況下的另一個選擇

          地址:https://github.com/rustdesk/rustdesk

          23、indicatif:樣式豐富的 Rust 終端進度條庫

          use indicatif::ProgressBar;
          
          let bar = ProgressBar::new(1000);
          for _ in 0..1000 {
              bar.inc(1);
              // ...
          }
          bar.finish();

          地址:https://github.com/mitsuhiko/indicatif

          24、azul:一個跨平臺的 Rust 和 C/C++ 的 GUI 框架。使用 WebRender 渲染引擎和 CSS/HTML-like DOM 構建,可用于開發漂亮的原生桌面應用程序

          #![cfg_attr(not(debug_assertions), windows_subsystem = "windows")]
          
          use azul::prelude::*;
          use azul_widgets::table_view::*;
          
          struct TableDemo {
              // cells: BTreeMap<TableCell, String>,
          }
          
          extern "C" fn layout(data: &mut RefAny, _: LayoutCallbackInfo) -> StyledDom {
          
              let mut table_view_state = TableViewState::default();
              table_view_state.set_cell_content(TableCellIndex { row: 2, column: 2 }, "Hello World");
              table_view_state.set_selection(Some(TableCellSelection::from(3, 4).to(3, 4)));
          
              TableView::new(table_view_state).dom().style(Css::empty())
          }
          
          fn main() {
              let app = App::new(RefAny::new(TableDemo { }), AppConfig::new(LayoutSolver::Default));
              app.run(WindowCreateOptions::new(layout));
          }

          地址:https://github.com/fschutt/azul

          Swift 項目

          25、Grid:受 CSS Grid 啟發,用 SwiftUI 編寫關于視圖(view)布局的開源項目

          地址:https://github.com/exyte/Grid

          26、SwiftyJSON:一個 Swift JSON 三方庫,用更簡單的方式處理 JSON

          let json = JSON(data: dataFromNetworking)
          if let userName = json[0]["user"]["name"].string {
            //Now you got your value
          }

          地址:https://github.com/SwiftyJSON/SwiftyJSON

          其它

          27、aind:實現在 Docker 中啟動安卓應用的項目

          docker run -td --name aind --privileged -p 5900:5900 -v /lib/modules:/lib/modules:ro ghcr.io/aind-containers/aind
          docker exec aind cat /home/user/.vnc/passwdfile

          地址:https://github.com/aind-containers/aind

          28、librime:一款開源的中文輸入法。市面上的輸入法有很多,但你找到讓自己稱心如意的那款了嗎?或許通過今天的開源項目你就能找到它。RIME 這款開源的輸入法,它不追蹤輸入的內容源碼完全開放,可自由切換繁/簡中文,選擇/設計輸入方案和主題,對繁體字輸入尤為優秀。作為輸入法給予用戶無限的自由和個性化,作為輸入法框架讓開發者有更多的發揮空間。比如支持不同操作系統的版本:Linux(中州韻)、Windows(小狼毫)、macOS(鼠須管)、Android(同文)由于自由度較高上手需要一些時間,這大概就是獲得自由的代價吧

          地址:https://github.com/rime/librime

          29、android-foss:開源的安卓客戶端應用集合

          地址:https://github.com/offa/android-foss

          30、secguide:騰訊開源的代碼安全指南。該項目包含:C/C++、Python、JavaScript、Java、Go 等語言的安全編碼指南,內容簡單易懂能夠幫助開發者,在代碼源頭規避安全風險減少漏洞

          地址:https://github.com/Tencent/secguide

          31、Kanmail:以看板的方式管理郵件的客戶端應用。適用于 Mac/Windows 操作系統,支持 Gmail、Outlook 等郵箱

          地址:https://github.com/Oxygem/Kanmail

          32、hello-world:匯集了 800 多種編程語言 Hello World 的項目

          地址:https://github.com/leachim6/hello-world

          33、material-theme-jetbrains:一款 JetBrains IDE 的 Material 風格主題

          地址:https://github.com/ChrisRM/material-theme-jetbrains

          開源書籍

          34、awesome-fenix:講述“如何構建大型且可靠的分布式系統”的開源書籍。推薦給想成為架構師的你

          地址:https://github.com/fenixsoft/awesome-fenix

          35、google-sre-ebook:Google SRE 相關的書籍。Google SRE 是谷歌的專業運維團隊的工程師,他們有一個共同的名字:Site Reliability Engineer,而這本書由 Google SRE 們撰寫,分享了谷歌運維相關的一些技術和知識

          地址:https://github.com/captn3m0/google-sre-ebook

          機器學習

          36、AugLy:Facebook 開源的一個數據增強 Python 庫。該庫目前支持音頻、圖像、文本和視頻四種模式,一方面可以用現實數據對數據進行增強,另一方面還可以檢測出相似內容,消除重復數據帶來的干擾

          地址:https://github.com/facebookresearch/AugLy

          37、Real-Time-Voice-Cloning:克隆某個人說話聲音的 AI 項目。僅需幾秒音頻,就能模仿出原音頻的人聲

          地址:https://github.com/CorentinJ/Real-Time-Voice-Cloning


          HelloGitHub 分享 GitHub 上有趣、入門級的開源項目。

          如果在本期月刊找到了感興趣的開源項目,就趕緊玩起來吧!

          以上就是 HelloGitHub 月刊本期的全部內容,下個月 28 號見。


          主站蜘蛛池模板: 无码人妻精品一区二区蜜桃AV| 午夜视频在线观看一区二区| 国语对白一区二区三区| 国产一区二区三区久久| 国产在线精品一区免费香蕉| 国产成人无码AV一区二区在线观看| 国产伦精品一区二区三区免.费 | 久久综合九九亚洲一区| 国产成人一区二区三区在线| 一区二区三区日本视频| 国产美女视频一区| 无码人妻少妇色欲AV一区二区| 国产麻豆精品一区二区三区v视界 国产美女精品一区二区三区 | 青娱乐国产官网极品一区| 日韩免费无码一区二区三区| 亚洲综合无码一区二区| 国精品无码一区二区三区左线| 国产小仙女视频一区二区三区| 国精品无码一区二区三区左线| 性色AV 一区二区三区| 无码少妇一区二区性色AV| 一区二区三区免费精品视频 | 精品国产香蕉伊思人在线在线亚洲一区二区 | 国产一区二区三区视频在线观看| 国产伦精品一区二区三区免费迷 | AV无码精品一区二区三区宅噜噜 | 久久久精品人妻一区二区三区蜜桃 | 中文字幕在线精品视频入口一区| 久久一区二区三区免费| 日韩精品视频一区二区三区 | 3d动漫精品啪啪一区二区中 | 无码一区二区三区免费视频| 亚洲av午夜精品一区二区三区| 国产午夜精品一区二区三区漫画 | 无码日本电影一区二区网站| 国产激情无码一区二区三区| 精品国产一区二区三区麻豆| 国产精品美女一区二区| 色老头在线一区二区三区| 久久精品无码一区二区三区免费| 中文字幕一区二区三区永久|