固相行政區
這是預阿爾法階段,將來可以改變。
這開始是一個有趣的項目,用於內部目的,以製作更可靠的 Solidus_backend 管理面板版本。 Solidus 有一個很棒的核心組件和一個包含電池的管理介面,但在我們看來,由於我們的定制,管理 gem 缺乏作為與 Solidus_core 結構通信的真正側面基礎設施的設計結構。
特徵
- 美觀且易於使用(使用者體驗很重要)
- Hotwire 渦輪動力⚡️
- 使用導入貼圖產生小火花的刺激
- Ransack 讓過濾變得簡單
- 大量操作如銷毀
為什麼要重寫輪子?
正如我們所說,在我們看來,solidus_backend 繼承了許多被困在庫中的警告,選擇回到狂歡分支(Deface 我看著你!),而這個結構對於這些選擇來說太嚴格了:
- 許多帶有 ransack 的過濾器都因自訂參數摘要而變得混亂
- Cancan 與「巨集」(:manage、:admin)一起使用,而不是與真正的 CRUD 路由一起使用,並且不遵守 MVC 模式的約定。
- 產品、訂單和促銷編輯依賴具有骨幹能力的 ajax,而不是更傳統的 CRUD 行為。
- 不是「真正」的 Turbo 相容:Turbolinks 是在 hotwire 中發展起來的,目前的用法只是 JavaScript 正確腳本執行的片段。
- 大量使用 Rails-ujs 的 javascript 遠端執行和“remote: true”,而不是使用 Turbo 進行更乾淨且可預測的 html 回應。我認為遠端不是一個好方法,因為它在瀏覽器控制台中註入 JavaScript 程式碼以希望被執行,對我來說,這是跨腳本潛在的安全威脅。
正如您所看到的,solidus_admin 已經相當舊了,而對於使用 Solidus_starter_frontend 進行的 Solidus_frontend 改造,是時候進行大量的實驗和更新了!
您是否正在嘗試建立新的solidus_backend gem?
有點像,但沒有。我首先將其作為一個替代項目,因為它是一個alpha 項目,它的目標是提供一個包含電池的後端,與Rails 框架的低耦合,而且還提供一個結構合理的Adminland 框架,用於可擴展性和無需headdacle 的UI 定制。我想讓它更加依賴宿主項目所有者選擇的庫,作為一種簡單的集成,而不需要太嚴格。
好吧,那你的選擇是什麼?你的也有意見嗎?
我認為我們可以考慮讓 adminland 程式碼結構尊重以下基本原則:
- 使用較少的覆蓋/猴子補丁方法易於覆蓋和擴展。我們是人不是猴子!
- 之前因毀容而被禁止。我從來不喜歡破壞方法,我認為最好從一開始就將 UI 視為模組化,透過複製而不是透過修補和注入來取代覆蓋視圖。對於另一個 sidecar 工具(所有具有管理部分的 Solidus 擴充性)的可擴充性,我更喜歡製作一個更清晰和公開的前置點。
- 嚴格遵守 CRUD 路線。 Everthing 必須盡可能嚴格地依賴 CRUD 路由,對於巢狀路由方法也是如此,有利於約定優於設定方法。
- 使用生成器腳手架範本從託管 Rails 應用程式新增外部資源。
考慮到這一點,我開始為「新」solidus_adminland 專案做出一些選擇,例如:
- 預設使用 hotwire 並鼓勵使用 js 以外的 DOM 操作方法。
- 刺激簡單可靠的添加,例如選擇器、輸入遮罩和表單驗證
- 使用 view_component gem 將輔助方法與 HTML 結果封裝在一起(例如 link_to 或更複雜的方法)。對於覆蓋目的也更容易,替代可靠性的部分和 UI 邏輯的 PORO 類
- 每次資產導入都是使用rails-importmap進行的,以實現“無以javascript為中心的應用程式方法”
- 使用管理 gem 來劃分錶示(帶有 *Dashboard 類別)和用於顯示或提交資料的 CRUD 路由之間的關注點
- 每個表單都由 FormBuilder 設計樣式,其中每個欄位都使用單獨的 Component 類別呈現。如果在功能中我們或某人想要放置一些奇怪的字段,例如 Dropdown JS 字段,可以使用新的 Admininstrate::Field、FormBuilder::Component 和 js Sparkle 刺激來製作?
- 對於政策方式,我認為我們可以採用一種混合方法來與康康舞相容,但採用更簡單的普迪特方法。在我們的例子中,我們使用 action_policy gem。它依賴 PORO 對象,我們可以在其中為每個操作定義執行的規則。它是控制器的真正中間部分,用於控制「記錄範圍」、「記錄允許的參數」和「記錄可存取路由」的策略。
正如您所看到的,對於每個資源都有:
- 用於標準 CRUD 操作的同名控制器
- 具有相同名稱的索引、new_form、edit_form 和要顯示的顯示參數的儀表板
- 我可以存取當前使用者的範圍的策略,我可以提交的參數以及允許該資源使用的路由。
……作為一種「傳統」方法,您可以創建自己的(或擴展)這三個方法,並按照您的喜好(或您的應用程式要求)放置業務邏輯!
初始設計是使用 Bootstrap 5 和 Tabler 進行的,但您可以輕鬆地覆蓋來自管理/應用程式的 CRUD 標準視圖。觀看次數將嚴格保持在盡可能低的水平
路線圖
所有標誌和顏色的權利均來自 Solidus Presskit 管理主題的靈感來自 Solidus 網站模型並基於 Bootstrap 5 版本的 Tabler