整合營銷服務商

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

          免費咨詢熱線:

          SVGEdit:老牌開源 SVG 編輯器是如何架構的?

          家好,我是前端西瓜哥。這次簡單看看 SVGEdit 的架構。

          SVGEdit 的版本為 7.2.0。

          SVGEdit 一款非常老牌的 SVG 圖形編輯器,用于編輯處理 SVG,star 數目前是 5.8k。

          它的優點在于經過多年的開發,完成度高,較為成熟,功能相當豐富

          1. 有豐富的工具:選擇工具、鉛筆工具、鋼筆工具(三階貝塞爾)、直線、各種圖形、圖片、文字等;
          2. 畫布縮放、圖形縮放旋轉、編組、復制粘貼、層級排布修改、對齊;
          3. 網格線、標尺、圖層管理、導入導出 SVG;
          4. 歷史記錄,支持撤銷重做(編輯器的基本功能)等等。

          缺點是幾乎不維護了,提交很少,大概一個月一提交,最新版 7.2.0 也是 22 年 8 月的時候了。

          UI 比較簡陋,很簡單就能看到一些 UI bug。

          如果要找一個 UI 好看的,可以看看開源項目 :Method-Draw,這個 UI 好看很多。它 fork 了 SVG-Edit 并做了一些改造。

          Method-Draw 標榜簡單易用,所以有意去掉了 SVGEdit 的一些高級功能,比如圖層。

          技術棧

          Web Component + SVG + Rollup + i18next

          UI 使用了 Web Component,瀏覽器原生支持的組件方案。

          作為一款 SVG 編輯器,選擇 SVG 沒有毛病,這樣渲染效果就完全交給瀏覽器,不需要根據標準去實現渲染效果,自己專心寫編輯器的業務邏輯即可。

          沒有用 TypeScript,因為是很老的項目,當時 TypeScript 尚未大行其道。如果要做新項目,建議還是上 TypeScript,大型復雜軟件還是很需要類型系統的。

          打包用了 Rollup。國際化用了 i18next。

          模塊設計

          UI 層對應 Editor 類,該類繼承了 EditorStartup 類,后者做一些初始化操作。

          編輯器內核對應 SvgCanvas 類。

          SvgCanvas 感覺太多讀寫屬性的方法(getXx 和 setXx)了,學 Java 學的。可以抽幾個小類把耦合性強的方法封裝起來。

          有插件機制,插件對象通過 addExtension 方法注入到 SvgCanvas.extensions 對象。

          可以看到注冊了 grid(網格)、markers(標尺)之類的插件。

          關于 UI 層和內核層的通信,UI 層改數據,會直接改內核層,然后再改 UI 層。

          這里的 zoom 有兩個數據源,可能會出現改了一個忘記改另一個的情況。建議只使用一個內核層數據源,改這個數據源后通過事件通知 UI 層或其他層做數據同步。多數據源是壞文明。

          渲染方案

          渲染方案是 SVG。

          SVG 編輯器用 SVG,相當合理。

          對于圖形樹的實現、圖形拾取(點選)、圖形渲染,SVGEdit 都交給瀏覽器都去實現。

          SVG 對一般前端開發是非常好上手的,不需要太多圖形知識,本質就是一個有層級的 DOM 元素樹,前端同學再熟悉不過了,只是元素專門用來描述圖形。

          但因為遠離底層,不方便做一些渲染優化和緩存,圖形多的時候很卡,不適合做高性能圖形編輯器。

          靈活性也較差,比如一個 0.5 線寬的直線還把畫布縮小了,根本就點不中好不好,希望點擊區域可以外擴一些,或想點中一個設置為不可見的圖形點擊區域。這個做不了。

          當然一個可以考慮的方案是 SVG 只是單純做渲染,圖形拾取自己實現。

          但 SVG 有一個強大的優點:方便做功能擴展,進行二次開發

          比如你要在圖形編輯器里加一個新的模塊,比如倒計時、一個表單組件,網上找到輪子集成進去會很方便。因為 SVG 里面可以嵌入 DOM 元素,DOM 元素里也可以嵌入 SVG。

          UI 層

          UI 層原本是基于 jQuery UI 的,但后面丟棄 jQuery 改用 Web Component 進行了重構。

          順帶一提,有個叫做 jPicker 的基于 jQuery 的拾色器插件,也做了魔改,去掉對 jQuery 的依賴。

          它沒有用 React、Vue 這些 UI 框架,而是選擇 Web Component,我認為這是一個糟糕的決策。

          Web Component 雖然被 瀏覽器原生支持,但并不是主流,生態一般,輪子不如 React 和 Vue 豐富。

          我們繼續看代碼。

          以左側欄 LeftPanel 為例,HTML 為:

          這里的 se-button 就是一個 Web Component 組件,里面有局部樣式和交互邏輯,類似 React 和 Vue。

          全局樣式文件是 svgedit.css

          LeftPanel 類初始化后會調用 init 方法。

          該方法會:

          1. 讀取前面的 HTML 創建一個 template 元素,然后添加 DOM 樹中。
          2. 給一些 DOM 元素綁定了事件響應函數。

          $id 這些是工具類方法。

          下面代碼的作用是,給選擇工具按鈕綁定方法,該方法更改編輯器的模式為選擇模式。

          LeftPanel 的 init 方法是在 EditorStartUp 類(這個是 Editor 的父類)的 init 方法中被調用的。

          圖形拾取

          點選 圖形的圖形拾取是交給瀏覽器,監聽鼠標按下事件的方式,讀取 mouseEvent.target

          因為可能有組的存在,所以會不斷地讀 parentNode 找最頂層的 group 元素,直到當前 group 結束。

          框選 會在點中空白區域出現,并將當前模式(currentMode)臨時切換為 multiselect。

          期間產生的選區矩形元素保存在 svgCanvas.rubberBox 屬性中。

          拖拽修改選區矩形寬高時,會遞歸 SVG 樹,計算它們的 bbox,判斷是否和選區矩形相交。將相交的圖形放到 selectedElements 屬性中。

          工具管理

          切換工具使用 SvgCanvas.setMode('line') 的方式。

          不同工具都有各自實現的事件響應函數,當用戶進行鼠標操作時,會執行 mouseDownEvent、mouseMoveEvent、mouseUpEvent,會根據 mode 執行不同的工具的方法。

          鋼筆工具對應 svgCanvas.pathActions 屬性,對應 pathActionsMethod 方法,沒有用類,而是用了閉包的方式進行邏輯封裝。

          圖形工具的邏輯倒沒有抽一個對象出來,直接寫在 ouseDownEvent、mouseMoveEvent、mouseUpEvent 里。

          操作的歷史記錄

          我以前的文章說過,歷史記錄需要維護一個撤銷棧和一個重做棧。

          兩個棧等價于一個數組或雙向鏈表中,加上一個指針,該指針指向多個命令中的當前命令。

          撤銷就是把指向往左移動,重做往右移,新操作則把指針后面的命令丟掉,然后把這個新的操作加到數組中,并將指針后移。

          SVGEdit 的歷史命令都保存在 UndoManager 類的 undoStack 數組中,并用 undoStackPointer 指針指向最新命令的位置。

          SVGEdit 使用了 patch(打補丁)的方式記錄歷史操作,沒有使用圖形樹快照的方式

          下面是移動一個矩形產生的操作命令,它記錄了修改圖形屬性的命令,該命令保存了一個元素修改前后的屬性。

          這里有個特殊的 BatchCommand 批量命令對象,它的 stack 數組記錄了一次操作要執行的多個子命令。

          其實就是 宏命令。宏命令的作用是將多個命令組合在一起批量執行。

          各種命令類保存在 svgCanvas.history 中。

          簡評

          UI 框架應該選擇 React 或 Vue

          這樣項目才會有更多人使用,作為一款比較古早的編輯器才可能煥發第二春。

          最好是 Vue3,國內很多中小廠在用,那里的程序員不喜歡造輪子,這樣他們就會用你這個編輯器,然后社區繁榮,贏。當然最好 React 和 Vue 都做。

          SVGEdit 丟掉 jQuery 用 Web Component,我不是很理解,外國比較流行這個?這樣就不好集成進公司的項目中,不利于項目的持續發展。

          不要使用單例

          我看不少地方用了單例,單例模式有個問題,如果頁面需要同時有多個編輯器實例,比如做兩張圖紙對比功能。

          那它們就會因為單例的對象共享導致沖突,比如改了編輯器 A 的設置屬性會同時改了編輯器 B 的,這不是我們想要的。

          類的面向對象風格是比較好的解法,每個對象都要創建一個新的實例,就不會沖突了。

          較多的 UI bug

          選中一個元素就能復現,此外 UI 也不好看。

          監聽鼠標事件應該放到 document 下

          放到 SVG 的容器或 SVG 上其實并不是很好的做法,當光標移到這些元素外時,監聽就消失了,綁定到 doucment 下即使光標移動到瀏覽器外都能監聽。

          結尾

          SVGEdit 支持的功能很多,但 UI 比較復古,小 bug 有點多的樣子。

          但如果你要做 SVG 編輯器,與其從零開始,不如基于 SVGEdit 做去二次開發。

          我是前端西瓜哥,關注我,學習更多圖形編輯器知識。

          家好,我是 Echa。

          今天來分享 50 個超實用的 Chrome 瀏覽器擴展!

          JSON

          1. JSON Viewer Pro

          JSON Viewer Pro 用于可視化JSON文件。其核心功能包括:

          • 支持將JSON數據進行格式化,并使用屬性或者圖表進行展示;
          • 使用面包屑深入遍歷 JSON 屬性;
          • 在輸入區寫入自定義 JSON;
          • 導入本地 JSON 文件;
          • 使用上下文菜單下載 JSON 文件;
          • 網址過濾器;
          • 改變主題;
          • 自定義 CSS ;
          • 復制屬性和值;

          輸入界面如下:

          格式化之后:

          2. JSONVue

          JSONVue 是一個JSON數據查看器,主要用來格式化JSON數據:

          網站技術

          3. Library Sniffer

          Library Sniffer 是一款給開發者使用的工具,能夠探測當前網頁所使用的類庫、框架和服務器環境,為開發者提供了方便。

          4. Wappalyzer

          Wappalyzer 擴展可以用來識別網站背后的底層技術。通過此擴展,可以了解特定應用程序是否是用 React、Vue、Angular、PHP等編寫的。還可以訪問有關 Web 服務器、編程語言、框架、內容管理系統、分析的信息工具、數據庫等。

          5. WhatRuns

          WhatRuns 擴展程序只需單擊一下即可找到任何網站上使用的技術。

          開發調試

          6. PerfectPixel by WellDoneCode

          使用PerfectPixel插件可以將設計圖加載至網頁中,與已成型的網頁進行重疊對比,以幫助開發和設計人員規范網頁像素精度。這是一款可以優化前端頁面顯示的Chrome插件。

          7. Clear Cache

          可以使用此擴展程序快速清除緩存,無需任何確認對話框、彈出窗口等。可以在選項頁面上自定義要清除的數據和數量,包括:應用程序緩存、緩存、Cookie、下載、文件系統、表單數據、歷史記錄、索引數據庫、本地存儲、插件數據、密碼和 WebSQL。

          8. VisBug

          VisBug 是一個使用 JavaScript 構建的開源網頁設計調試工具,它可以讓用戶使用點擊式和拖放式界面來查看網站的元素。

          9. Debug CSS

          Debug CSS 是一個幫助調試CSS的插件。他可以顯示出頁面元素的輪播,按住Ctrl,并將鼠標懸浮在元素上,即可查看其信息:

          10. CSS Viewer

          CSS Viewer 是一款適用于 Web 開發人員的高效 Chrome 擴展。顧名思義,CSS 查看器可以顯示將鼠標懸停在任何網頁上的元素的 CSS 屬性。

          11. EditThisCookie

          EditThisCookie 是一個 cookie 管理器。可以添加,刪除,編輯,搜索,鎖定和屏蔽cookies。

          12. React Developer Tools

          React Developer Tools 是開源 JavaScript 庫 React 的 Chrome DevTools 擴展。它允許我們在 Chrome 開發者工具中檢查 React 組件層次結構。安裝此插件之后,將在 Chrome DevTools 中獲得兩個新選項卡:"?? Components" 和 "?? Profiler":

          • Components 選項卡顯示了在頁面上呈現的根 React 組件,以及它們最終呈現的子組件;
          • Profiler 選項卡用來記錄性能信息。

          13. Vue.js devtools

          Vue.js devtools 是一款基于chrome瀏覽器的用于調試Vue.js應用程序的插件,可以使得開發人員大大提高調試效率。支持用戶對DOM結構數據結構進行解析和調試功能。

          14. Augury

          Augury 可以幫助開發人員在 Google Chrome 瀏覽器中調試和分析 Angular 應用程序。

          15. Firebug Lite for Google Chrome

          Firebug Lite是火狐瀏覽器中著名的開發者工具firebug插件移植到Chrome中的插件,在Chrome中安裝了Firebug Lite插件以后,開發人員可以像在火狐瀏覽器中使用firebug一樣熟悉的方式來調試網頁內容,其包含了基本的HTML、CSS以及Javascript的調試功能,用于幫助網頁前端開發工程師快速地調試網頁,以便及時地找到網頁中的BUG并及時修復。

          16. HTML Validator

          HTML Validator 在 Chrome 的開發者工具中添加了 HTML Validator。HTML 頁面的錯誤數通過瀏覽器狀態欄中的圖標顯示,詳細信息可以在瀏覽器的開發者工具中查看。

          17. Web Developer

          Web Developer 擴展為帶有各種 Web 開發工具的瀏覽器添加了一個工具欄按鈕。該擴展適用于 Chrome 和 Firefox,并且可以在這些瀏覽器支持的任何平臺上運行,包括 Windows、macOS 和 Linux。

          18. Requestly

          Requestly 是一款Chrome和Firefox瀏覽器插件,提供URL轉發、修改HTTP請求和結果、插入腳本等功能。

          19. Window Resizer

          Window Resizer 主要用來調整瀏覽器窗口的大小以模擬各種屏幕分辨率。

          20. Responsive Viewer

          Responsive Viewer 是在一個視圖中顯示多個屏幕的 Chrome 擴展程序。該擴展將幫助前端開發人員在開發響應式網站/應用程序時測試多個屏幕。

          21. Moesif Origin & CORS Changer

          此插件允許直接從瀏覽器發送跨域請求,而不會收到跨域錯誤。可以使用此插件覆蓋 Request Origin 標頭,并將 Access-Control-Allow-Origin 設置為 *.

          22. ColorPick Eyedropper

          ColorPick Eyedropper 是一個放大的吸管和顏色選擇器工具,可讓從網頁等中選擇顏色值。

          23. CSSPeeper

          CSS Peeper 用于檢查和復制元素樣式的優秀工具,使用 CSSPeeper 可以將鼠標懸停在網頁中的任何元素上,然后單擊鼠標即可復制元素的樣式。

          24. Dimensions

          Dimensions是一款能幫助使用者對網頁上各種元素屬性之間的距離進行測量的Chrome頁面元素測量插件,該插件在點擊啟動插件圖標后,可以對頁面中圖像、輸入字段、按鈕以及視頻等頁面元素之間上下左右的方位尺寸進行測量,同時還可以通過使用快捷鍵來快速啟用或關閉該插件的功能,簡單實用。

          25. Site Palette

          Site Palette 用于生成調色板。設計師和前端開發人員必備的工具。可以通過這款插件輕松獲取網站的配色方案。

          26. ColorZilla

          ColorZilla 是一款功能強大地提取網頁色彩的工具;也是個快速的對顏色進行調節的Chrome插件,許多的用戶將這款軟件稱呼為顏色吸取插件,它提取的顏色是非常的多樣化,還可生產css顏色的代碼等。

          • 吸管器-獲取頁面上任何像素或區域的顏色;
          • 一個先進的顏色選擇器類似于可以在Photoshop和Paint Shop Pro中找到的;
          • 網頁顏色分析器-分析任何網頁上的DOM元素顏色,找到相應的元素;
          • 終極CSS梯度發生器;
          • 調色板查看器與7預先安裝調色板;
          • 顏色歷史最近挑選的顏色;
          • 顯示標簽名稱,類別,編號,大小等元素信息;
          • 光標下的輪廓元素;
          • 自動將生成或采樣的顏色復制到CSS RGB,Hex和其他格式的剪貼板;
          • 使用鍵盤快速采樣頁面顏色的鍵盤快捷鍵。

          字體

          27. WhatFont

          當我們想查看網頁中文字的字體時,最常用的方法就是在控制臺查看文字的字體樣式。那還有沒有更簡單的方法呢?WhatFont 就是一個查看網頁字體的Chrome擴展。只需要的點擊擴展圖標,再點需要查看為文字即可:

          28. Fonts Ninja

          Fonts Ninja 可以從任何網站識別字體、添加書簽、試用并購買它們。

          標簽頁

          29. BrowserStack

          使用 BrowserStack 快速啟動擴展在任何瀏覽器中啟動一個新的測試會話。最多可設置 12 個瀏覽器以實現快速訪問并最大限度地減少切換瀏覽器所花費的時間。

          30. Toby

          Toby 是一款 Chrome 新標簽頁工具,能夠將未讀的標簽頁分組顯示在新標簽頁中,這樣就能把所有未看完的標簽頁都關閉了。分組相當于多個 Chrome 窗口,將你的標簽頁都拖進 Toby 中,就不需要實時開著占地方了。

          31. daily.dev

          該擴展提供了每日熱門開發者新聞,不需要再浪費時間搜索高質量的文章了。

          32. Momentum

          Momentum 擁有漂亮的新標簽頁面,每日更新精彩背景壁紙圖片,可設置每日新鮮事焦點以及跟蹤待辦事項,無廣告,無彈窗。

          33. The Great Suspender

          The Great Suspender 是一個輕量級的擴展用來減少 Chrome 的內存占用。如果同時打開許多選項卡,在可配置的時間之后未查看的選項卡將在后臺自動掛起,從而釋放該選項卡消耗的內存和 CPU。

          34. Session Buddy

          Session Buddy是一個可以幫助用戶查看、新增、編輯當前網站Session狀態的Chrome插件。用戶可以利用該插件保存網站當前的狀態以便在關閉Chrome或關閉計算機后恢復,從而達到節省內存的作用。

          Github

          35. Octotree

          Octotree 旨在讓 GitHub 體驗更好。通常,為了檢查 Github 中的子文件夾,需要手動單擊文件夾并導航。Octotree 擴展解決了這個問題。此擴展在項目的左側顯示存儲庫的目錄結構,這有助于更好地理解文件夾結構。

          1_EKF88oqIyX6FzgueCKdtXg.gif

          36. File Icons for GitHub and GitLab

          File Icons for GitHub and GitLab 可以將 GitHub 和 GitLab 上的原始文件圖標替換為特定文件類型的圖標。

          網頁測試

          37. axe DevTools

          ax DevTools 是一個快速、輕量級但功能強大的測試工具,由 Deque 開發的世界上最值得信賴的可訪問性測試引擎 axe-core 驅動。使用 ax DevTools 在網站開發過程中查找并修復更多可訪問性問題。

          38. OctoLinker

          OctoLinker 可以將特定語言的語句(如 include、require 或 import)轉換為鏈接。當打開一個包含多個導入語句的文件并且想要快速打開它時,只需將鼠標懸停在鏈接的文件上并單擊即可打開。

          39. Web Developer Checklist

          此擴展可幫助 Web 開發人員分析網頁是否違反最佳實踐。

          40. Check My Links

          Check My Links 是一個鏈接檢查器,它可以抓取網頁并查找損壞的鏈接。

          41. Checkbot

          Checkbot 是用于驗證一組HTML頁面上的鏈接的工具。Checkbot可以檢查一個或多個服務器上的單個文檔或一組文檔。它會創建一個報告,該報告匯總了引起某種警告或錯誤的所有鏈接。

          42. PageSpeed Insights

          Google Page Speed Insighs 是一款旨在優化所有設備上的網頁、提高網頁加載速度的工具。

          43. Meta SEO Inspector

          META SEO inspector是一款可以幫助用戶分析網頁的meta信息并得到SEO評估的谷歌瀏覽器插件。

          隱私廣告

          44. Ghostery

          Ghostery 是強大的隱私保護擴展程序。其主要有以下功能:

          • 攔截廣告:Ghostery 內置的廣告攔截工具可以移除網頁上的廣告,防止網頁雜亂無章,讓你專注于想看的內容。
          • 保護隱私:利用 Ghostery 可以查看和攔截所瀏覽的網站上的跟蹤器,控制收集數據的跟蹤器。增強反跟蹤功能還能將數據匿名化,進一步保護隱私。
          • 提高瀏覽速度:Ghostery 的智能攔截功能可以自動攔截和取消攔截跟蹤器來滿足網頁質量標準,提高網頁加載速度,優化網頁性能。

          45. AdBlock

          AdBlock 用來在YouTube、Facebook、Twitch和其他你喜愛的網站上攔截廣告和彈窗。

          效率工具

          46. Marinara

          番茄工作法(Pomodoro?)時間管理助理。? 長短兩種休息時間 ? 帶有倒計時顯示的工具欄圖標 ? 追蹤Pomodoro歷史和統計訊息 ? 可配置的長休間隔 ? 可配置的定時器時長 ? 桌面與新標簽頁通知 ? 超過20種音效可選的聲音通知 ? 計時器秒針走動音效

          47. Loom

          Loom 可以用來快速錄制視頻,并且能夠將錄制的視頻上傳到指定的網頁中,Loom還支持在用戶點擊啟動插件時,立即捕捉屏幕圖像,同時開始視頻錄制操作,還可以將錄制好的視頻復制到粘貼板中存儲。

          48. GoFullPage

          GoFullPage 是一款全屏截圖插件(整個網頁截圖),完整捕獲您當前頁面的屏幕,進行滾動截圖,而無需任何額外的權限。單擊擴展程序圖標,然后將其傳輸到屏幕快照的新標簽頁中,可以在其中將其下載為圖像或PDF,甚至只需拖動即可,保存到桌面。

          49. BetterViewer

          BetterViewer 可以提供更好的圖像查看體驗,旨在替代基于 Chrome 瀏覽器中內置的圖像查看模式。使用時,只需在頁面右鍵點擊圖片,選擇“在新標簽頁中打開圖片”即可。

          50. svg-grabber

          svg-grabber 是一個快速預覽并從網站獲取所有 svg 的工具。可以用來預覽、下載和復制網站中所有 SVG 圖標和插圖的代碼。

          anvas技術的誕生可謂是讓繪圖技術如虎添翼,本文將推薦一系列Canvas圖形繪制、流程圖、組織圖、甘特圖、全景圖、3D庫、VR/AR、圖像編輯等方面的庫,希望助你在Canvas繪圖時尋得一把趁手的利器。

          同時,愣錘將Canvas的相關資源進行的收錄整理分類,更多的資源請關注Github項目地址awesome-canvas。目前該庫持續維護中,已收錄大約200+的Canvas庫,以及資源網址、插件、書籍、博客等資源。

          圖形處理庫

          圖形繪制是Canvas中最基本的內容,但是Canvas本身提供的api比較基礎,開發起來低效。而且也缺少完整的事件系統、區域監測、緩存等等。下面讓我們來看幾款高效的圖形處理庫吧。

          Konva

          簡介:Konva是一個 HTML5 Canvas JavaScript 框架, 通過擴展 Canvas 的 2D Context 讓桌面端和移動端Canvas支持交互性,使其支持高性能動畫、過渡、節點嵌套、分層、過濾、緩存、事件處理等等。Konva官方地址(https://konvajs.org/docs/sandbox/index.html)

          除上述之外,文檔相對友好,但也僅僅是相對于同類庫的文檔友好那么一滴滴,社區有維護一個中文文檔。

          fabric.js

          簡介: Fabric.js是一個可以輕松處理 HTML5 Canvas元素的框架,使得Canvas元素支持交互式對象模型,同時也是一個SVG-to-CanvasCanvas-to-SVG的解析器, fabric.js官方地址(http://fabricjs.com/demos/)

          fabricjs是和konva同類型但是比konva更老牌的一個的Canvas庫,目前github上Star數2萬+

          更多示例如下圖所示:

          圖像編輯

          市面上圖像編輯的軟件有很多,像大家所熟知的PS、sketch、axure、激萌、剪映等等。那么如果我們想開發類似的軟件,有沒有可以使用的庫或者參考的開源軟件呢?

          miniPaint

          簡介:miniPaint [官方網站在線演示](https://viliusle.github.io/miniPaint/) - 在線版的PS。PS這款軟件大家都不陌生,web版本的如何呢?請看下圖:

          DarkroomJS

          簡介:DarkroomJS [官方網站在線演示](https://pqina.nl/pintura/?affiliate_id=854594675) - 基于Fabricjs的瀏覽器端可擴展的圖像編輯工具

          fabric-brush

          簡介:fabric-brush [官方網站在線演示] (https://tennisonchan.github.io/fabric-brush/)- 基于Fabric.js的Canvas筆刷工具

          fabricjs-image-editor-origin

          簡介:fabricjs-image-editor-origin [官方網站在線演示] (https://fabricjs-image-editor-f62330.netlify.app/)- Fabricjs圖像編輯器

          react-sketch

          簡介:react-sketch [官方網站在線演示] (http://tbolis.github.io/showcase/react-sketch/)- 基于React、Fabricjs的素描應用

          glitch-canvas

          簡介:glitch-canvas [官方網站在線演示](https://snorpey.github.io/jpg-glitch/) - 給畫布元素添加故障效果

          animockup

          簡介:animockup [官方網站在線演示] (https://animockup.com/)- 在瀏覽器中創建動畫模型,并導出為視頻或動畫GIF

          物理引擎

          物理引擎使用質量、速度、摩擦力和空氣阻力等變量,模擬了一個近似真實的物理系統,為剛性物體賦予真實的物理效果,比如重力、旋轉和碰撞等效果,讓物體的行為表現的更加趨向真實。例如,守望先鋒的英雄在跳起時,系統所設置的重力參數就決定了他能跳多高,下落時的速度有多快,子彈的飛行軌跡等等。

          matter.js

          簡介: matter.js是一個用于 Web 的 JavaScript 2D 物理引擎庫 matter.js官方地址(https://brm.io/matter-js/demo/#wreckingBall)

          matter.js相較于老牌的 Box2D 引擎庫更為輕量級(壓縮版僅有 87 KB),并且在性能和功能方面也不遜色。

          流程圖/組織圖/圖編輯等

          工業軟件開發,一直是軟件領域復雜而又重要的一環。其對技術人的要求要是更高的,下面看看有哪些可以輔助我們快速開發的庫或者參考的場景吧。

          gojs

          簡介: gojs是一款可以非常方便的開發交互式流程圖、組織結構圖、設計工具、規劃工具、可視化語言的JavaScript圖表庫。 gojs.js官方地址(https://gojs.net/latest/)

          • GoJS用自定義模板和布局組件簡化了節點、鏈接和分組。
          • 給用戶交互提供了許多先進的功能,如拖拽、復制、粘貼、文本編輯、工具提示、上下文菜單、自動布局、模板、數據綁定和模型、事務狀態和撤銷管理、調色板、概述、事件處理程序、命令和自定義操作的擴展工具系統。

          文檔中提供了大量的demo可供參考,基本對于常見的圖編輯程序做到了全覆蓋。

          butterfly

          簡介:butterfly [官方網站在線演示] (https://butterfly-dag.gitee.io/butterfly-dag/demo/analysis)一個基于JS的數據驅動的節點式編排組件庫,同時適用于React/Vue2組件。

          • 豐富的DEMO,開箱即用
          • 全方位管理畫布,開發者只需要更專注定制化的需求
          • 利用DOM/REACT/VUE來定制元素;靈活性,可塑性,拓展性優秀
          • 提供了中文文檔,這點對英文不好的小伙伴很Nice

          wireflow

          簡介:wireflow [官方在線演示](https://app.wireflow.co/) 用戶流程圖實時協作工具。

          • Wireflow 有超過 100 種自定義構建圖形/卡可供使用,涵蓋了大多數 Web 元素、交互和使用案例。
          • Wireflow 考慮到了協作。您可以邀請您的同事和他們一起實時設計下一個項目的用戶流程。
          • 它具有內置的實時聊天功能,讓您能夠與您的隊友進行交流,并且在您實時協作時仍然在同一個應用程序中。

          flowy

          簡介:Flowy [官方在線演示](https://alyssax.com/x/flowy) - 用于創建流程圖的最小javascript庫。使創建具有流程圖功能的 WebApp 成為一項非常簡單的任務。通可以在幾分鐘內構建自動化軟件、思維導圖工具或簡單的編程平臺。

          • 響應式拖放、自動捕捉、自動滾動
          • 塊重排、刪除塊、自動塊居中
          • 條件捕捉、條件塊移除、無依賴項

          Workflow Designer

          簡介:Workflow Designer [官方在線示例] (https://guozhaolong.github.io/wfd/)- 基于G6和React的可視化流程編輯器。

          web-pdm

          簡介:web-pdm [在線示例](https://erd.zyking.xyz/demo) - 用G6做的ER圖工具,最終目標是想做成在線版的powerdesigner.

          X-Flowchart-Vue

          簡介:X-Flowchart-Vue [官方在線演示] (http://oxoyo.co/X-Flowchart-Vue/)- 基于G6和Vue的可視化圖形編輯器。

          OrgChart

          簡介:OrgChart [官方在線演示] (https://dabeng.github.io/OrgChart/)- 簡單直接的組織圖插件

          welabx-g6

          簡介:welabx-g6 [官方在線示例] (https://claudewowo.github.io/welabx-g6/dist/?_blank)- 基于G6和Vue的流程圖編輯器。

          全景圖/AR/VR

          5g的普及、虛擬現實/增強現實落地、元宇宙的火熱......似乎讓Canvas再度推上了技術的頂峰。下面讓我來看看開發這些場景常見的Canvas庫吧。

          Pannellum

          簡介:Pannellum [官方在線演示] (https://pannellum.org/)- 輕量、免費、開源的web全景查看器。

          Panolens.js

          簡介:Panolens.js [官方在線演示] (https://pchen66.github.io/Panolens/)- Panolens.js基于Three.JS,主要研究領域是全景、虛擬現實和潛在的增強現實。

          JS-Cloudimage-360-View

          簡介:JS-Cloudimage-360-View [官方在線演示] (https://scaleflex.github.io/js-cloudimage-360-view/)一個簡單的、交互式的資源,可以用來提供您的產品的虛擬游覽。

          A-Frame

          簡介:A-Frame [官方在線演示](https://aframe.io/) A-Frame 除了幫助您構建 360 度媒體播放器外,它還提供了許多附加功能。其他功能可幫助您增強網站的虛擬現實體驗。

          3D庫

          three.js

          簡介:three.js [官方在線演示](https://threejs.org/examples/) - 創建易于使用、輕量級、跨瀏覽器的通用3d js庫。three.js就不多介紹了,大家想必都很熟悉。

          zdog

          簡介:zdog [官方在線演示](https://zzz.dog/) - 基于canvas和SVG設計師友好的偽3D引擎

          seen.js

          簡介:seen [官方在線演示] (http://seenjs.io/)- 使用SVG或Canvas渲染3D場景。

          Oimo.js

          簡介:Oimo.js [官方在線演示](http://lo-th.github.io/Oimo.js/index.html#basic) - 輕量級的JS 3D物理引擎。

          phoria.js

          簡介:phoria.js [官方在線演示](http://www.kevs3d.co.uk/dev/phoria/index.html) - 用于在 HTML5 畫布 2D 渲染器上進行簡單 3D 圖形和可視化的 JavaScript 庫。它不使用 WebGL。適用于所有 HTML5 瀏覽器,包括桌面、iOS 和 Android。

          原文來自:https://juejin.cn/post/7038267477121302542


          主站蜘蛛池模板: 熟女大屁股白浆一区二区| 人妻无码第一区二区三区| 国产精品主播一区二区| 国产视频一区在线观看| 婷婷亚洲综合一区二区| 日本欧洲视频一区| 一区二区视频在线免费观看| 亚洲av日韩综合一区久热| 亚洲国产日韩一区高清在线| 波多野结衣AV无码久久一区| 亚洲成a人一区二区三区| 亚洲精品伦理熟女国产一区二区 | 黑人大战亚洲人精品一区| 国产一区美女视频| 相泽南亚洲一区二区在线播放 | 日韩在线视频一区| 亚洲精品伦理熟女国产一区二区 | 国产精品va无码一区二区| 精品国产不卡一区二区三区| 免费人人潮人人爽一区二区| 成人h动漫精品一区二区无码| 国产精品一区视频| 国产香蕉一区二区在线网站| 亚洲日本久久一区二区va| 精品无码人妻一区二区免费蜜桃| 亚洲国产精品无码久久一区二区 | 无码精品久久一区二区三区| 国产婷婷色一区二区三区深爱网| eeuss鲁片一区二区三区| 色欲AV蜜桃一区二区三| 亚洲性色精品一区二区在线| 3D动漫精品啪啪一区二区下载| 亚洲一区二区三区久久久久| 毛片一区二区三区| 亚洲av无码成人影院一区| 爱爱帝国亚洲一区二区三区| 乱色熟女综合一区二区三区| 国产一区二区三区免费观在线| 国产精品高清一区二区三区| 男插女高潮一区二区| 色一乱一伦一区一直爽|