Performance: Why providers encapsulate business logic
MEDIUM IMPACT
This affects the rendering speed and responsiveness by organizing code to minimize unnecessary computations and side effects during request handling.
import { Injectable, Controller, Get } from '@nestjs/common'; @Injectable() export class UserService { getActiveUsers() { const users = this.fetchUsersFromDb(); return users.filter(u => u.isActive); } private fetchUsersFromDb() { return [{ id: 1, isActive: true }, { id: 2, isActive: false }]; } } @Controller('users') export class UserController { constructor(private readonly userService: UserService) {} @Get() getUsers() { return this.userService.getActiveUsers(); } }
import { Controller, Get } from '@nestjs/common'; @Controller('users') export class UserController { @Get() getUsers() { // Business logic directly in controller const users = fetchUsersFromDb(); const filtered = users.filter(u => u.isActive); return filtered; } } function fetchUsersFromDb() { // Simulate DB fetch return [{ id: 1, isActive: true }, { id: 2, isActive: false }]; }
| Pattern | DOM Operations | Reflows | Paint Cost | Verdict |
|---|---|---|---|---|
| Business logic in controller | N/A | N/A | N/A | [X] Bad |
| Business logic in provider | N/A | N/A | N/A | [OK] Good |