從零開始搭建web組態

?成果展示:by組態[web組態插件]


一、技術選擇


目前只有兩種選擇,canvas和svg

Canvas: 是一個基于像素的渲染引擎,使用JavaScript API在畫布上繪制圖像,它的優點包括:

  • Canvas渲染速度快,適合處理大量圖像和高度動態的圖像。
  • 可以直接操作像素,能夠創建高質量、流暢的動畫效果。
  • Canvas可用于實現復雜的游戲、3D效果等。

SVG: 是一種基于矢量的圖形格式,可以使用XML和JavaScript API在瀏覽器中繪制圖像,它的優點包括:

  • SVG是基于矢量的圖形格式,圖像可以無限放大而不失真。
  • 可以為SVG圖像添加事件處理器,實現交互效果。
  • 可以通過CSS進行樣式控制,使得SVG圖像更加靈活。
  • SVG圖像可以直接嵌入到HTML文檔中,不需要另外下載。

但它也存在一些缺點:

  • SVG渲染速度較慢,適合處理少量圖像和少量動態的圖像。
  • SVG圖像在處理復雜圖形時可能會導致性能問題。
  • 由于SVG是基于矢量的圖形格式,它的復雜度比較高,可能會導致文件大小較大。

????????根據個人喜好選擇,一般來說canvas的性能要不svg好的多,對于組態畫面,實時性要求要高,我們選擇canvas。對canvas的開發,都需要選擇一款框架,底層開發太難了,選擇框架一定要選擇文檔全面,例子多的,konva.js是非常不錯的。

ui框架自行選擇,都行。

二、 konva.js簡介


????????konva 是一個對 canvas API 做了封裝增強的 JavaScript 庫。

????????HTML 原生的 canva 提供的 API 比較底層,用法上像是操縱一支畫筆進行各種操作,畫完就結束了。

????????canvas 本身不維護圖形樹,你也無法操作修改已被繪制的圖形。

????????而 konva 能夠像我們操作 DOM 樹一樣去繪制和維護元素,它會額外維護圖形構成的樹,并能在繪制后,對特定圖形進行樣式的修改。

????????你還可以在上面添加事件,比如鼠標滑入某圖形時,圖形變大一點。此外還支持方便的變形、動畫、拖拽等高級能力。

????????konvas提供商了所有組態的基礎功能,如,點,線,面,拖拽,變化,放大縮小,事件等等,只要你想到的,他都有,我們要做的就是一點一點的吧這些功能堆起來,形成一個完整的組態工具。技術上并不難,就是花點時間。

三、 組態功能


????????我們做一個最簡單的功能,其他的功能自己慢慢堆,下面是功能列表

????????組態圖元: 變量組件(可根據后臺推送的數據顯示到畫布上),屬性(文字顏色)

????????后臺通訊:websocket

????????畫面保存:畫面要能以字符串的形式保存到后臺數據庫,或者生成文件,查看畫面的時候在字符串拿出來,在還原為畫面

????????實時數據渲染:后臺來數據后要及時呈現到畫布上

四、 需求分析


????????我們做的組件是一個一個的,組件要方便存儲,這樣后續才能方便添加,一個組件里面包含該組件所有的屬性。這是最重要的,否則后面擴展及其困難

????????konva可以將單個的組件,序列化為字符串。這樣就方便了我們做一個一個組件。

五、成功案例
?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/718304.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/718304.shtml
英文地址,請注明出處:http://en.pswp.cn/news/718304.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

TIOBE 2024榜單啟示:程序員如何把握未來編程趨勢與機遇

程序員如何選擇職業賽道? 程序員的職業賽道就像是一座迷宮,有前端的美麗花園,后端的黑暗洞穴,還有數據科學的神秘密室。你準備好探索這個充滿挑戰和機遇的迷宮了嗎?快來了解如何選擇職業賽道吧! 方向一…

linux時間校準(ntpdate)

在Linux中,可以使用ntpdate命令來進行時間校準。 首先,打開終端并輸入以下命令安裝ntpdate工具 yum install ntpdate 然后,運行以下命令來同步系統的時間與網絡上的NTP服務器 ntpdate time.nist.gov 若要設置定期自動更新時間,可…

CSS中如何解決 1px 問題?

1px 問題指的是:在一些 Retina屏幕 的機型上,移動端頁面的 1px 會變得很粗,呈現出不止 1px 的效果。原因很簡單——CSS 中的 1px 并不能和移動設備上的 1px 劃等號。它們之間的比例關系有一個專門的屬性來描述: window.devicePix…

重構筆記系統:Docker Compose在微服務架構中的應用與優化

雖然我的筆記系統的開發是基于微服務的思想,但是在服務的配置和編排上感覺還是不太合理,具體來說,在開發上的配置和在生產上的配置差別太大。現在規模小,后面規模變大,估計這一塊會成為系統生長的瓶頸。 因此&#xff…

【Web】速談FastJson反序列化中BasicDataSource的利用

目錄 關于BCEL BCEL的惡意利用demo FastJson配合BCEL初始化任意類 parse情況下后天精心構造彌補先天之不足 exp 參考文章: BCEL ClassLoader去哪了 Java動態類加載,當FastJson遇到內網 關于BCEL BCEL(Byte Code Engineering Library)的全名是Apa…

跨時鐘信號處理方法

1. 背景 現在的芯片(比如SOC,片上系統)集成度和復雜度越來越高,通常一顆芯片上會有許多不同的信號工作在不同的時鐘頻率下。比如SOC芯片中的CPU通常會工作在一個頻率上,總線信號(比如DRAM BUS)會…

python+Django+Neo4j中醫藥知識圖譜與智能問答平臺

文章目錄 項目地址基礎準備正式運行 項目地址 https://github.com/ZhChessOvO/ZeLanChao_KGQA 基礎準備 請確保您的電腦有以下環境:python3,neo4j 在安裝目錄下進入cmd,輸入指令“pip install -r requirement.txt”,安裝需要的python庫 打…

貓為什么挑食?可以改善、預防貓咪挑食的主食凍干分享

現在的貓咪主人都把自家的小貓當成了心頭的寶貝,呵護備至。最令人頭疼的就是貓咪挑食不吃貓糧,貓為什么挑食?遇到這類情況怎么辦呢?今天,我要分享一個既能確保貓咪不受苦,又能有效改善挑食問題的方法。 一、…

vue api封裝

api封裝 由于一個項目里api是很多的,隨處都在調,如果按照之前的寫法,在每個組件中去調api,一旦api有改動,遍地都要去改,所以api應該也要封裝一下,將api的調用封裝在函數中,將函數集…

C++實現簡易版http server

mini服務器簡介 mini服務器功能 1.實現了GET和POST方法的HTTP request和HTTP respond的構建和發送,使服務器可以完成基本通信功能。 2.使用了線程池技術,使服務器可以一次接收更多的鏈接和加快了服務器處理數據的速度。 3.實現了簡易的CGI&#xff0…

【MATLAB源碼-第155期】基于matlab的OFDM系統多徑信道LS,LMMSE,SVD三種估計算法的比較誤碼率對比仿真。

操作環境: MATLAB 2022a 1、算法描述 OFDM(Orthogonal Frequency Division Multiplexing,正交頻分復用)是一種高效的無線信號傳輸技術,廣泛應用于現代通信系統,如Wi-Fi、LTE和5G。OFDM通過將寬帶信道劃分…

jmeter 按流量階梯式壓測數據庫

當前版本: jmeter 5.6.3mysql 5.7.39 簡介 JMeter 通過 BZM - Arrivals Thread Group 來模擬并發到達的用戶流量、按時間加壓,可以有效地幫助測試人員評估系統在高壓力和高并發情況下的性能表現。 文章目錄如下 1. 下載插件 2. 界面說明 3. 測試步驟…

C#在并發編程使用Frozen來確保線程安全性

在C#中,Frozen方法通常用于通過不可變對象來確保線程安全性。這通常在并發編程中很有用,特別是在共享狀態的多線程環境中。Frozen方法是Caliburn Micro框架中的一個方法,它用于將對象標記為不可變。 當你調用Frozen方法時,它返回…

云計算 2月26號 (進程管理和常用命令)

一、權限擴展 文件權限管理之: 隱藏權限防止root誤刪除 文件屬性添加與查看 [rootlinux-server ~]# touch file1 file2 file3 1.查看文件屬性 [rootlinux-server ~]# lsattr file1 file2 file3 ---------------- file1 ---------------- file2 ---------------- f…

【FAQ】HarmonyOS SDK 閉源開放能力 —Account Kit

1.問題描述 實時驗證和非實時驗證的區別是什么? 解決方案 相同點: “手機號快速驗證”和“實時驗證”都是為了向用戶發起獲取手機號信息的請求。最終目的都是為了獲取到手機號。這兩種獲取方式都需要完成“獲取您的手機號”的Scope權限申請。 區別&…

UDP協議和TCP協議詳解

文章目錄 應用層自定義協議 傳輸層udp協議TCP協議1.確認應答2.超時重傳3.連接管理建立連接, 三次握手斷開連接, 四次揮手tcp的狀態 4.滑動窗口5.流量控制6.擁塞控制7.延時應答8.攜帶應答9.面向字節流10.異常情況 應用層 自定義協議 客戶端和服務器之間往往要進行交互的是“結構…

Eigen-約簡,訪問和廣播

約簡化,訪客和廣播 一、約簡化1. 標準計算2. 布爾約減 二、訪問三、部分約簡1. 將部分約減與其他業務相結合 四、廣播1. 將廣播與其他業務相結合 一、約簡化 在Eigen中,約簡化是一個接受矩陣或數組并返回單個標量值的函數。最常用的約簡方法之一是.sum(…

心法利器[108] | 微調與RAG的優缺點分析

心法利器 本欄目主要和大家一起討論近期自己學習的心得和體會。具體介紹:倉頡專項:飛機大炮我都會,利器心法我還有。 2023年新的文章合集已經發布,獲取方式看這里:又添十萬字-CS的陋室2023年文章合集來襲,更…

修復通達OA 百度ueditor 文件上傳漏動

前些日子,服務器阿里云監控報警,有文件木馬文件,因為非常忙,就沒及時處理,直接刪除了木馬文件了事。 誰知,這幾天對方又上傳了木馬文件。好家伙,今天不花點時間修復下,你都傳上癮了…

PHP【swoole】

前言 Swoole官方文檔:Swoole 文檔 Swoole 使 PHP 開發人員可以編寫高性能高并發的 TCP、UDP、Unix Socket、HTTP、 WebSocket 等服務,讓 PHP 不再局限于 Web 領域。Swoole4 協程的成熟將 PHP 帶入了前所未有的時期, 為性能的提升提供了獨一無…