Book 2: Advanced Developer - ranjanui/AEM GitHub Wiki

Syllabus

  1. Development Models for Teams
  2. OSGI Components, annotation
  3. Sling, Resource, Test
  4. Sling Events
  5. Sling Scheduling
  6. JCR (Oak) Basics, Content Modeling, Indexing, Search
  7. JCR Versioning, Observation
  8. Jackrabbit Oak
  9. User, group, Permissions
  10. Testing(Sling and Maven)
  11. Deployment and packaging
  12. Dispatcher, Reverse Replication
  13. Content Automation, Periodic Importers
  14. Overlays, Extending Foundation Components, Content Reuse
  15. Content Migration/Import
  16. Higher Level APIs
  17. Client Libraries
  • AEM Application modules sit on the top of AEM Shared framework, -> Granite, contains all the functionality that is shared among all the application modules. AEM applications -> Sites, Assets, Apps etc,

01 Development Models for Teams

  • Using Maven build the project(POM) - Project object Model
  • nt:file , nt:folder
  • other types rendered as directories in the file system with sets of properties and values in a specific file called .context.xml

17. Client Libraries

  • Client Libraries are a folder of node type cq:ClientLibraryFolder, that contains client side assets, css and js files and required resources. eg: images and fonts
  • convention: under /etc/clientlibs or within the component folder
Properties:
jcr:primaryType: cq:ClientLibraryFolder
category: an array of names to identify the client-library
depedencies: an array of categories(dependent client libraries)
embed: an array of client libraries that will be included
  • css.txt or js.txt files - starts with #base=., for subfolder starts with #base=sub-folder
  • client library included with cq:includeClinetLib
  • cq:includeClinetLib/ tag includes a client library which can be a JS, css, or a theme library.
  • Client library loaded programmatically with the com.day.cq.widget HtmlLibraryManager service interface.
  • adding clientlib:
//all js, css, theme
<cq:includeClientLib categories="cq.wcm.edit" />

//only js libs
<cq:includeClientLib js="cq.collab.calender, cq.security" />

//themes only
<cq:includeClientLib theme="cq.collab.calender, cq.security" />

//css only
<cq:includeClientLib css="cq.collab.calender, cq.securoty" />
  • Manage Clinet Libraries-> localhost:4502/libs/cq/ui/content/dumplibs.html