David's Model是David Nuescheler多年前所寫的,但今天仍然適用。 David模型的主要原則如下:
clone()
, merge()
、和 update()
.David的模型可在Jackrabbit wiki上找到,網址為 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)