Skip to main content

Module 20: Component Reuse & Libraries

As SAPUI5 applications grow, reuse becomes critical.
Reusable components and libraries help you:

  • Reduce duplication
  • Improve consistency
  • Scale large enterprise landscapes
  • Improve performance with lazy loading

This module explains how reuse is done correctly in SAPUI5.


1. Reusable Components​


What is a UI5 Component?​

A UI5 component is a self-contained, reusable application unit with:

  • Its own Component.js
  • manifest.json
  • Views, controllers, models
Key Concept

A component is a mini application.


When to Create a Reusable Component​

Create reusable components for:

  • Common dialogs
  • Value help
  • Reusable dashboards
  • Cross-app widgets
Rule of Thumb

If logic + UI is reused across apps → component.


Basic Component Structure​

my.reuse.component/
├─ Component.js
├─ manifest.json
├─ view/
├─ controller/
└─ model/

2. Component Containers​


What is ComponentContainer?​

sap.ui.core.ComponentContainer is used to:

  • Embed one component inside another
  • Load components dynamically

Example: Using ComponentContainer​

<core:ComponentContainer
name="my.reuse.component"
xmlns:core="sap.ui.core" />

Dynamic Component Loading​

sap.ui.component({
name: "my.reuse.component"
}).then(function (oComponent) {
// Use component instance
});
Best Practice

Use ComponentContainer for decoupled reuse, not fragments.


3. Custom UI5 Libraries​


What is a UI5 Library?​

A UI5 library is a collection of:

  • Custom controls
  • Utility classes
  • Reusable logic

Libraries are framework-level reuse, not app-level.


When to Use a Library vs Component​

Use CaseComponentLibrary
UI + Logic✅❌
Custom Controls❌✅
Cross-App Utils❌✅
Standalone App✅❌
Design Guideline

Libraries provide building blocks, components provide features.


Typical Library Structure​

my.custom.library/
├─ src/
│ ├─ control/
│ ├─ util/
│ └─ library.js
└─ manifest.json

4. Lazy Loading (Very Important)​


Why Lazy Loading?​

Lazy loading:

  • Improves initial load time
  • Reduces memory usage
  • Improves perceived performance

Lazy Loading Components​

this.getOwnerComponent().getRouter().navTo("lazyView");

UI5 loads:

  • View
  • Controller
  • Dependencies

only when needed.

Built-in Benefit

UI5 routing supports lazy loading by default.


Lazy Loading Libraries​

Libraries are loaded on demand based on usage.

Best Practice

Do not preload heavy libraries unnecessarily.


5. Dependency Management​


Dependency Declaration (manifest.json)​

"sap.ui5": {
"dependencies": {
"libs": {
"sap.m": {},
"sap.ui.core": {}
},
"components": {
"my.reuse.component": {}
}
}
}

Why Explicit Dependencies Matter​

  • Predictable loading
  • Faster startup
  • Avoid runtime errors
SAP Rule

Declare all dependencies explicitly.


6. Versioning & Reuse Strategy​


Follow These
  • Version reusable components
  • Keep backward compatibility
  • Avoid breaking changes
  • Document APIs

Real Enterprise Pattern​

Shared UI Library
↓
Reusable Components
↓
Business Applications

7. Performance Considerations​


Reuse vs Performance​

AspectImpact
Too many componentsSlower load
Proper lazy loadingFaster load
Shared librariesSmaller bundles

Performance Best Practices​

Follow These
  • Keep components small
  • Lazy load heavy components
  • Avoid circular dependencies
  • Share common libraries

8. Common Mistakes​

Avoid These
  • Using fragments where components are needed
  • Overloading one component
  • Tight coupling between apps
  • Missing dependency declarations

9. Interview-Grade Explanation​

Q: How do you implement reuse in SAPUI5?

Answer:

I use reusable components for feature-level reuse and custom UI5 libraries for shared controls and utilities. Components are embedded using ComponentContainer and loaded lazily to optimize performance, with dependencies declared explicitly in manifest.json.


10. Summary​

  • Components enable feature reuse
  • ComponentContainer embeds components
  • Libraries enable framework-level reuse
  • Lazy loading improves performance
  • Dependency management is critical
  • Reuse improves scalability

11. What’s Next?​

➡️ Module 21: Performance Optimization in SAPUI5

Learning Tip

Good reuse reduces code — great reuse improves architecture.