《大衛的模型》是幾年前由大衛·紐謝勒寫的,但思想在今天仍然成立。 David's Model的主要原則如下:
clone()
、merge()
和update()
。您可以在Jackrabbit Wiki上找到David的模型,網址為https://wiki.apache.org/jackrabbit/DavidsModel。
所有內容都應儲存在儲存庫中,而不是依賴獨立的第三方資料來源,例如資料庫。 這適用於製作內容、二進位資料,例如影像、程式碼、設定等。 這可讓我們使用一組API來管理所有內容,並透過復寫管理此內容的促銷活動。 我們還獲得了備份、日誌記錄等單一源。
建置新功能時,請一律從設計JCR內容結構開始,然後使用預設的Sling servlet來研究讀取和撰寫內容。 這可讓您確保實施可搭配現成的存取控制機制正常運作,並避免產生不必要的CRUD樣式servlet。
Servlet應根據resourceTypes而非路徑來定義。 這可讓您使用JCR存取控制、遵循REST原則,以及使用要求中提供給我們的資源和資源解析程式。 這也可讓我們變更在伺服器端轉譯URL的指令碼,而不需從用戶端變更任何URL,同時從用戶端隱藏伺服器端實作詳細資訊,以提高安全性。
節點類型在基礎結構層中處於較低的級別,而大多數要求都可以通過使用分配給nt:unstructured、oak:Unstructured、sling:Folder或cq:Page節點類型的sling:resourceType來滿足。 節點類型等於儲存庫中的架構,而更改節點類型可能會非常昂貴。
遵循命名慣例可增加程式碼庫的一致性、降低缺陷發生率,並提高開發人員在系統中工作的速度。 Adobe在開發AEM時會使用下列慣例:
節點名稱
屬性名稱
元件(JSP/HTML)