我正在創建一個應用程式,可用于概述您的 IT 環境。目前,它可以顯示一個表格,其中包含您環境中的介面及其連接的應用程式。它還能夠根據這些資料創建 SVG 影像。資料本身可以通過 API 呼叫添加。
我從一個專案開始:
leiningen new luminus versiontracker h2 shadow-cljs kee-frame swagger (some other)
為了能夠生成具有拖放支持的 SVG 檔案,我在專案 .clj 檔案中添加了rid3。
當我在開發模式下運行應用程式時:
lein repl
和
lein shadow-cljs watch app
我可以拖動生成的 SVG 檔案中的任何專案。我可以單擊一個圓圈并將其拖動到我想要的任何位置。
但是,當我創建“生產”版本時:
lein uberjar
然后使用以下命令運行此應用程式:
java -Dconf=config.edn -jar versiontracker.jar
拖動物件無法正常作業。選擇整個 SVG 而不是 SVG 影像中的單個物件;這會導致奇怪的拖放行為。
通過控制臺視窗查看事件,我可以看到不同的行為。
- 在開發環境中,如果我抓取一個圓圈(附加了拖動功能),則 sourceEvent 中的 srcElement 是顯示在該圓圈頂部的文本。雖然沒有選擇圓圈,但拖動按預期作業。所選專案在拖動時跟隨滑鼠。
- 在“生產”環境中,如果我抓住一個圓圈,sourceEvent 中的 srcElement 是完整的 svg;這會導致奇怪的拖放行為。所選專案不跟隨滑鼠,但專案確實開始以不可預測的方式四處移動。
轉到Version Tracker下載生產版本標簽為 V0.3.0 的版本(還有一個帶有一些示例資料的 H2 資料庫),并通過檢查專案將其與開發版本進行比較。
任何幫助表示贊賞
uj5u.com熱心網友回復:
你的錯誤描述有點缺乏,而且專案太復雜,無法快速重現。
構建時是否收到任何外部推斷警告?在生產版本的瀏覽器控制臺中,您是否收到任何錯誤/警告?
這里最可能的原因是外部。這意味著諸如此類的屬性名稱(set! (.-fx d) (.-x event))最終可能會被重命名或被洗掉。因此,它會破壞任何依賴于選擇正確名稱的行為。有關該主題的更多資訊,請參閱檔案。^js在適當的地方添加一些提示可能就足夠了。
您還使用了一個相當舊的shadow-cljs版本(截至今天是2.16.10)。因此,您需要:compiler-options {:infer-externs :auto}在構建配置中選擇加入以獲取外部推理警告。較新的版本默認啟用此功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/397494.html
標籤:svg d3.js 拖放 clojurescript shadow-cljs
上一篇:cgb2111-day03
