內容架構 content-architecture
追隨大衛的模式 follow-david-s-model
《大衛的模型》是幾年前由大衛·紐謝勒寫的,但思想在今天仍然成立。 David's Model的主要原則如下:
- 資料首先,結構之後。 也許吧。
- 驅動內容階層,別讓它發生。
- 工作區適用於
clone()
,merge()
,和update()
. - 請注意同名同胞。
- 引用被認為有害。
- 檔案是檔案。
- 身份是邪惡的。
David's Model可在Jackrabbit Wiki上找到,網址為 https://wiki.apache.org/jackrabbit/DavidsModel.
一切都是內容 everything-is-content
所有內容都應儲存在儲存庫中,而不是依賴獨立的第三方資料來源,例如資料庫。 這適用於製作內容、二進位資料,例如影像、程式碼、設定等。 這可讓我們使用一組API來管理所有內容,並透過復寫管理此內容的促銷活動。 我們還獲得了備份、日誌記錄等單一源。
使用「內容模型優先」的設計原則 use-the-content-model-first-design-principle
建置新功能時,請一律從設計JCR內容結構開始,然後使用預設的Sling servlet來研究讀取和撰寫內容。 這可讓您確保實施可搭配現成的存取控制機制正常運作,並避免產生不必要的CRUD樣式servlet。
RESTful be-restful
Servlet應根據resourceTypes而非路徑來定義。 這可讓您使用JCR存取控制、遵循REST原則,以及使用要求中提供給我們的資源和資源解析程式。 這也可讓我們變更在伺服器端轉譯URL的指令碼,而不需從用戶端變更任何URL,同時從用戶端隱藏伺服器端實作詳細資訊,以提高安全性。
避免定義新的節點類型 avoid-defining-new-node-types
節點類型在基礎結構層中處於較低的級別,而大多數要求都可以通過使用分配給nt:unstructured、oak:Unstructured、sling:Folder或cq:Page節點類型的sling:resourceType來滿足。 節點類型等於儲存庫中的架構,而更改節點類型可能非常昂貴。
遵循JCR中的命名慣例 adhere-to-naming-conventions-in-the-jcr
遵循命名慣例可增加程式碼庫的一致性、降低缺陷發生率,並提高開發人員在系統中工作的速度。 Adobe在開發AEM時會使用下列慣例:
-
節點名稱
- 全部小寫
- 使用連字型大小分詞
-
屬性名稱
- 駝峰式大小寫,以小寫字母開頭
-
元件(JSP/HTML)
- 全部小寫
- 使用連字型大小分詞
recommendation-more-help
2315f3f5-cb4a-4530-9999-30c8319c520e