Easily boost the performance of your Angular applications by memoizing functions and getters with this lightweight and simple-to-use library.
- Memoize Functions: Cache function results for improved performance.
- Lightweight: Designed for efficiency without adding unnecessary overhead.
- Decorator Support: Memoization is as simple as adding a decorator.
- Angular Compatible: Fully supports Angular 19 and later.
- Tree Shakable: Only include what you need.
To get started, install Ngememoize via npm:
npm install ngememoize
Or, if you use Yarn or PNPM:
yarn add ngememoize
# or
pnpm add ngememoize
import { Ngememoize } from 'ngememoize';
// Method example
@Ngememoize({
debugLabel: 'processData'
})
processData(value: number): number {
console.log('Processing...');
return value * 2;
}
// Async method example
@Ngememoize({
debugLabel: 'fetchData',
maxAge: 5000
})
async fetchData(id: string): Promise<string> {
console.log('Fetching...');
return new Promise(resolve =>
setTimeout(() => resolve(`Data for ${id}`), 1000)
);
}
For more examples on how to use Ngememoize, please refer to the /projects/example
directory.
To ensure everything works perfectly, tests are included. Run the following commands:
npm test
- @Ngememoize: Use this decorator on functions or getters to enable memoization.
- Cached results are invalidated when parameters or getter states change.
- Performance Boost: Reduce redundant computations.
- Cleaner Code: Simplify logic by reducing manual caching.
- Angular Ready: Seamlessly integrates with your Angular projects.
We welcome contributions! Here's how you can help:
- Fork the repository.
- Create a feature branch:
git checkout -b feature/awesome-feature
- Commit your changes:
git commit -m 'Add awesome feature'
- Push to the branch:
git push origin feature/awesome-feature
- Open a Pull Request.
This project is licensed under the MIT License. See the LICENSE file for details.
Ngememoize was built with ❤️ by developers who love Angular and believe in the power of simplicity and efficiency.
If you find this library helpful, consider giving it a ⭐ on GitHub. Your support means a lot!
Now go forth and memoize your way to blazing-fast Angular apps! 🚀