基于Node-red的在線評語系統(tǒng)(可視化編程,公網(wǎng)訪問)
最近給高校做了實訓(xùn),要寫300多份評語。評語稍微有點形式主義,且實在是有點多,而且……我懶。好吧,我承認(rèn)了。
然而,我并沒有找到合適的評語系統(tǒng)。搜到了AA班級助手,只有小學(xué)和中學(xué)的評語庫,不適合大學(xué)生用。
上CSDN斥巨資下載幾個評語軟件,沒有一個好用的,要么是課后作業(yè)級別的練習(xí)軟件,要么是重復(fù)的,且沒有一個能夠支持自定義語句。話說CSDN現(xiàn)在真有點垃圾堆的意思。
我迫切需要合適的評語系統(tǒng)
既然別人的工具用的不順手,那就自己寫吧,沒辦法,有技術(shù)就是可以這么為所欲為。
全網(wǎng)第一個基于Node-red的在線評語系統(tǒng),就這樣誕生了。
Node-red在線點評系統(tǒng)演示,
點擊按鈕,即可生成評語,復(fù)制到自己的剪貼板上。
我部署到了自己的云服務(wù)器上,通過公網(wǎng)IP,手機端也可以使用哦。
接下來,就以評價實習(xí)筆記為例,來講講這個在線評語系統(tǒng)是如何開發(fā)出來的吧。
Node-red簡介與安裝
什么是Node-red
簡單來說,Node-Red是IBM公司開發(fā)的一個可視化的編程工具,在網(wǎng)頁內(nèi)編程,主要是拖拽控件,代碼量很小。
由于我平時工作偏向硬件,所以對這些華麗的前端技術(shù)技術(shù)不是很了解,但個人認(rèn)為,node-red技術(shù)在搭建具備網(wǎng)絡(luò)與圖形化功能的上位機、編程入門方面有很強的先天優(yōu)勢,也可以拿來做物聯(lián)網(wǎng)資源的擴展,或與樹莓派搭配做網(wǎng)關(guān)功能。
關(guān)于Node-red的中文教程,網(wǎng)上資源并不夠多。筆者2018年在CSDN寫過一系列文章,現(xiàn)在來看過于粗糙,而且界面老舊,有重新做一版的想法,但是苦于俗務(wù)太多,如果各位觀眾老爺有興趣的話,請多多點贊轉(zhuǎn)發(fā)支持,您的支持是我創(chuàng)作的動力。
安裝Node-red
安裝過程可以參考官方教程,[基于windows]:
安裝Dashboard
Dashboard:儀表板,用于快速創(chuàng)建實施數(shù)據(jù)儀表板。它的安裝方式與簡介,請參考[官方教程]:
筆者博客中有關(guān)于儀表板的安裝與介紹,可以[移步閱讀]:
安裝Base64,非必須
Base64節(jié)點用于將對象打包/解包為base64格式,在評語系統(tǒng)中,用于將圖片轉(zhuǎn)為Base64格式,然后再顯示。它的安裝與介紹,請參考[官方教程].
這一步是非必須的,因為如果圖片是固定的,可以手動解碼,然后放置在注入節(jié)點中,以避免圖片依賴本地路徑,造成部署不方便。后續(xù)有詳細(xì)解釋。
編寫評語文案
個人感覺,編寫文案其實是最困難的部分。以評價實習(xí)筆記為例,我設(shè)計了:內(nèi)容、格式、體現(xiàn)、總結(jié),4個評價維度,他們的具體評語如下:
內(nèi)容 | 格式 | 表現(xiàn) | 總結(jié) |
略顯單薄,應(yīng)該忽略 | 略顯凌亂,理性層次 | 完整記錄了實訓(xùn)的過程、數(shù)據(jù)與現(xiàn)象 | 基本 |
言簡意賅,略感惜字如金 | 結(jié)構(gòu)分明,標(biāo)題正文一目了然 | 掌握了理論知識,完成了動手操作 | 詳細(xì) |
詳略得當(dāng),符合筆記要求 | 工工整整,層次分明 | 聽課認(rèn)真,及時練習(xí),總結(jié)到位 | 充分 |
準(zhǔn)確翔實,真實記錄了鍛煉過程 | 整齊劃一,編排合理 | 認(rèn)真聽講,勤于思考,總結(jié)總結(jié) | 完全 |
洋洋灑灑,理論與實踐結(jié)合 | 評論好看,方便閱讀 | 學(xué)習(xí)認(rèn)真,積極上進,不懂就問 | 深入 |
面面俱到,詳細(xì)記錄了實習(xí)過程 | 井然有序,邏輯清楚 | 思維思考,提出問題,并主動尋找解決辦法 | 綜合 |
應(yīng)有盡有,可以比范本 | 貝聯(lián)珠貫穿,完整、連貫且美觀 | 心思細(xì)膩,文筆流程,邏輯嚴(yán)謹(jǐn) | 徹底 |
它的用法為:本實訓(xùn)手冊內(nèi)容 內(nèi)容 ,格式 格式 ;從手冊中,可以體現(xiàn)出該同學(xué) 體現(xiàn) , 總結(jié) 了解了實習(xí)工作的工程背景,方案和實踐,充分考慮了社會、健康、安全、法律以及文化等多方面因素。
例如:
本實習(xí)手冊內(nèi)容詳略得當(dāng),符合筆記要求,格式整潔美觀,方便閱讀,從手冊中,可以體現(xiàn)出該同學(xué)思維活躍,善于提問,并主動尋找解決辦法,深入了解了實習(xí)工作的工程背景,方案和實踐;充分考慮了社會、健康、安全、法律以及文化等多方面因素。
寫評語真的是搜腸刮肚,黔驢技窮,一滴個詞都沒有了。
界面
甭管功能怎么樣,界面一定要好看。沒辦法,這就是個看臉的世界。
整體頁面規(guī)劃如圖:
在一個頁面中,進行手冊的點評。
不同的評價維度采用不同的分組。每個分組列寬固定,均為單位“2”,每個單位默認(rèn)是48像素。
整體鼠標(biāo)的移動軌跡為,從上到下,從左到右,老師依次點擊每個評價維度的內(nèi)容,到最右側(cè)生成評語,然后到最右下角復(fù)制評語。
配色網(wǎng)站
界面是必須考慮美觀的。公司的圖標(biāo)是紅色的,儀表板默認(rèn)的主題是Light,主題色是藍(lán)色(可修改)。
我找了一個[配色網(wǎng)站](http://www.peisebiao.cn/),以紅色為主題,進行色相配色,找到了幾個自以為好看的顏色。
按鈕
規(guī)劃好界面與配色后,可以用按鈕來實現(xiàn)每個評價選項,不同評價維度有不同的分組,每個分組內(nèi)從上到下,評價等級依次提升。設(shè)置4組按鈕:
結(jié)果顯示
每一次點擊按鈕以后,都會發(fā)出一個數(shù)據(jù)包,而載荷正好是我們需要的字符串。每組按鈕最下方,設(shè)置一個“text”節(jié)點顯示當(dāng)前評價維度的內(nèi)容。
在最右側(cè),“生成”分組下,也是用一個“text”節(jié)點來顯示完整的評語。
顯示圖片
為了讓界面美觀一些,同時體現(xiàn)公司信息,因此要顯示一張圖片。圖片本不是評價系統(tǒng)必備的,但是“如何使用Node-red顯示圖片”,中文搜索無法快速得到答案,此處稍微提一下。
如果已經(jīng)安裝了base64節(jié)點,可以按照下圖編寫測試程序。
假如我在D盤放置了名為test.jpg的文件,點擊注入節(jié)點,在http://localhost:1880/ui/地址的text頁面下,即可看到以下現(xiàn)象:
代碼如下,可自行導(dǎo)入觀察效果。
[{"id":"e90b9e5.8d1a76","type":"ui_template","z":"a27b80b1c2d45b59","group":"efcf5006.15dae","name":"Display image","order":4,"width":"6","height":"6","format":"\n","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"local","x":1000,"y":440,"wires":[[]]},{"id":"e15b65de.f75f98","type":"base64","z":"a27b80b1c2d45b59","name":"Encode","action":"","property":"payload","x":760,"y":440,"wires":[["e90b9e5.8d1a76"]]},{"id":"813f5fbc.785a7","type":"file in","z":"a27b80b1c2d45b59","name":"","filename":"D:test.jpg","format":"stream","chunk":false,"sendError":false,"encoding":"none","allProps":false,"x":540,"y":440,"wires":[["e15b65de.f75f98"]]},{"id":"2909d426.407b4c","type":"inject","z":"a27b80b1c2d45b59","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":370,"y":440,"wires":[["813f5fbc.785a7"]]},{"id":"efcf5006.15dae","type":"ui_group","name":"test","tab":"65324def.436554","order":8,"disp":true,"width":"6","collapse":false},{"id":"65324def.436554","type":"ui_tab","name":"test","icon":"dashboard","disabled":false,"hidden":false}]
內(nèi)嵌圖片編碼
這種做法要求D盤必須有個test.jpg文件,我最后部署在云服務(wù)器上,懶得在云服務(wù)器中的D盤放一個圖片(其實也沒有D盤),而是把圖片轉(zhuǎn)為Base64編碼,放在注入節(jié)點中。
[有些網(wǎng)站]能將圖片轉(zhuǎn)為Base64編碼,如下。Chrome瀏覽器也可以,具體教程請自行搜索。
然后把獲取的Base64編碼作為注入節(jié)點的載荷即可。
函數(shù)節(jié)點編寫
按下按鈕會產(chǎn)生一個message,message相當(dāng)于參數(shù),傳遞給后邊的函數(shù)節(jié)點。函數(shù)節(jié)點內(nèi)部申請的所有變量,都是局部變量,在函數(shù)的調(diào)用結(jié)束后,局部變量的值就被釋放了,無法保留。因此要用一種特殊的機制,來保存某個維度的打分信息,可以使用global,將參數(shù)設(shè)置為全局的。
Global全局傳遞參數(shù)
在按鈕節(jié)點后添加函數(shù)節(jié)點,用Global全局變量保留某個打分維度的信息。
數(shù)據(jù)拼接
設(shè)置一個按鈕,當(dāng)按下以后,讀取各個打分維度的信息,然后拼接字符串
在線復(fù)制功能
至此已經(jīng)實現(xiàn)了所有的功能,但是生成的結(jié)果復(fù)制起來比較麻煩。可以考慮增加在線復(fù)制的功能,這也是本系統(tǒng)最復(fù)雜的部分。
我的想法是,找一個剪貼板的節(jié)點,向剪貼板節(jié)點輸出文本,未果。
或者應(yīng)用Nodejs的機制,復(fù)制頁面的內(nèi)容,可能比較復(fù)雜,暫未嘗試。
我?guī)缀蹩梢源_定,一定會用到Dashboard的Template節(jié)點,因為在此節(jié)點內(nèi)可以使用代碼實現(xiàn)較高定制化程度的功能。
我以clipboard與Template為關(guān)鍵字,在官方的論壇中找到了這么一個[帖子],解決了問題
稍加修改,代碼如下
第13行,將輸入的內(nèi)容設(shè)置為了載荷,
第26行,通過輸入數(shù)據(jù)的ID獲取了內(nèi)容,
第29行,復(fù)制到剪貼板。
第30行,用彈窗顯示被復(fù)制的文本,我把彈窗關(guān)掉了。
完整程序,來個合照。
沒錯,這是編程界面,只有“函數(shù)”節(jié)點“Template”節(jié)點內(nèi),編寫少量代碼,其它的節(jié)點都是拖拽編程,是不是很省心呢
外網(wǎng)使用
負(fù)責(zé)教務(wù)的小姐姐說,不會安裝Node-red,能不能不安裝,遠(yuǎn)程操作?
Node-red界面的默認(rèn)地址是本地IP的1880端口,如果進行內(nèi)網(wǎng)穿透,或者擁有公網(wǎng)IP,就可以通過公網(wǎng)訪問。
在618的時候,我花了60塊錢買了一年的華為云服務(wù)器,在云服務(wù)器上部署了Node-red,然后允許訪問這個1880端口,就可以直接通過IP來使用Node-red的評語系統(tǒng)了。
之前演示的手機訪問,用的就是公網(wǎng)哦。
在線評語系統(tǒng)源碼:
鏈接: https://pan.baidu.com/s/1iPV958WLe7nwW6-jGtOI9A?pwd=hjcx
提取碼: hjcx
到此這篇關(guān)于基于Node-red的在線評語系統(tǒng)(可視化編程,公網(wǎng)訪問)的文章就介紹到這了,更多相關(guān)Node-red在線評語內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Node.JS枚舉統(tǒng)計當(dāng)前文件夾和子目錄下所有代碼文件行數(shù)
這篇文章主要介紹了Node.JS枚舉統(tǒng)計當(dāng)前文件夾和子目錄下所有代碼文件行數(shù),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-08-08詳解如何在NodeJS應(yīng)用程序中處理多個API請求
NodeJS默認(rèn)是異步的,這意味著它已經(jīng)能夠同時處理多個請求,但它只適用于I/O操作,如HTTP請求、文件系統(tǒng)操作、數(shù)據(jù)庫查詢、實時聊天應(yīng)用等,在處理CPU密集型任務(wù)時,可能需要很長時間,這就是為什么NodeJS提供了一些我們將在下面介紹的特定包2023-12-12nodejs進階(6)—連接MySQL數(shù)據(jù)庫示例
本篇文章主要介紹了nodejs進階(6)—連接MySQL數(shù)據(jù)庫示例,詳細(xì)的介紹了NodeJS操作MySQL數(shù)據(jù)庫,作為應(yīng)用最為廣泛的開源數(shù)據(jù)庫則成為我們的首選,有興趣的可以了解一下。2017-01-01node.js利用redis數(shù)據(jù)庫緩存數(shù)據(jù)的方法
Redis數(shù)據(jù)庫采用極簡的設(shè)計思想,最新版的源碼包還不到2Mb。其在使用上也有別于一般的數(shù)據(jù)庫。下面這篇文章就來給大家介紹了node.js利用redis數(shù)據(jù)庫緩存數(shù)據(jù)的方法,需要的朋友可以參考借鑒,下面來一起看看吧。2017-03-03詳解Node.js開發(fā)中的express-session
express-session 是基于express框?qū)iT用于處理session的中間件,本篇文章主要介紹了詳解Node.js開發(fā)中的express-session,有興趣的可以了解一下2017-05-05