Could someone please help me in answering this question in most understanding way possible?
Solved! Go to Solution.
Views
Replies
Total Likes
Hello @vijayku8 ,
Here is my take on Sling Models.
For simple things like printing properties of a page, Sightly can surely be used and having a Sling Model in such situations will be redundant.
Sightly is a templating language and its primary purpose being "to display data". It does have some capability to calculate values and loop over lists, but as for any templating language, those capabilities are limited.
- In situations where additional conditions, code statements fetching data from another page/service is needed, using a Sling Model is a good choice.
- When we need Logic to format email addresses or format/validate date inputs or validate if the the file browsed is an asset or a page.
- Fetch data from a service/servlet to show rating/reviews, count of pages, breadcrumb, build navigation, and similar dynamic data related functionalities.
Some of the simple checks can be done in using Sightly frontend however, that would make the Sightly code difficult to debug and maintain at later stages of the project.
Using Sling Models, the code is kept clean and maintainable.
thanks,
Preetpal
Hello @vijayku8 ,
Here is my take on Sling Models.
For simple things like printing properties of a page, Sightly can surely be used and having a Sling Model in such situations will be redundant.
Sightly is a templating language and its primary purpose being "to display data". It does have some capability to calculate values and loop over lists, but as for any templating language, those capabilities are limited.
- In situations where additional conditions, code statements fetching data from another page/service is needed, using a Sling Model is a good choice.
- When we need Logic to format email addresses or format/validate date inputs or validate if the the file browsed is an asset or a page.
- Fetch data from a service/servlet to show rating/reviews, count of pages, breadcrumb, build navigation, and similar dynamic data related functionalities.
Some of the simple checks can be done in using Sightly frontend however, that would make the Sightly code difficult to debug and maintain at later stages of the project.
Using Sling Models, the code is kept clean and maintainable.
thanks,
Preetpal
Hi @vijayku8
Look, Sightly's great for grabbing simple stuff, like titles or images. But when things get tricky - complex logic, formatting, caching - Sling Models become your best bud. Think of them as data wranglers, transforming raw JCR into shiny, ready-to-use content for Sightly.
They save you time by:
Plus, models handle security like a boss, ensuring only authorized eyes see sensitive info. Sure, you can grab a burger without a spatula, but it'll be messy. Sling Models are your spatula, making AEM development smoother, faster, and more secure. Trust me, they're not just hype, they're developer magic
Thanks
This article, written by one of Adobe's champions, provides one of the best insights on AEM Sling Models. You can read it here: https://www.bounteous.com/insights/2020/07/22/aem-sling-models-why-bother.
Quote: "Some common perceptions are that sling models for these components represent unnecessary complexity (arguable in some aspects, but not true in the big picture) and that development is simpler and quicker, especially for front-end developers, by omitting sling models (also not true).
Sling models are recommended for all AEM components, complex or simple, and building them via standard practices saves development time in both initial implementation and ongoing maintenance."
Just to add my two cents here. This is a best practice because it maintains a good design pattern for the overall architecture, encompassing both Sling and your code.
Hope this helps
As mentioned by others simple tasks like printing properties of a page or component without any logic, Sightly can be used without creating any sling model.
However, there are many benefits of using Sling Models in conjunction with Sightly.
1. Sling Models provide a structured approach to building components. With Java annotations, you can easily map properties from your JCR repository to your model class, making it more maintainable and reusable.Sighty, on the other hand, allows for cleaner and more readable HTML templates. With its simplified syntax and separation of concerns between markup and logic, it becomes easier to collaborate with front-end developers who may not have extensive knowledge of Java.
2. Sling Models with Sightly enables better testability. You can write unit tests for your models independently of the view layer, ensuring data integrity and logic correctness.
Additionally, when using Sling Models and Sightly together, you can take advantage of caching mechanisms provided by AEM. The built-in caching capabilities help improve performance by reducing unnecessary server-side rendering.
Thanks
Dipti
Views
Likes
Replies