Այս շարքի առաջին մասում մենք քննարկեցինք Angular կոդավորման որոշ ընդհանուր խնդիրներ և դրանց լուծումները: Այս երկրորդ մասում մենք ավելի խորը կխորացնենք ավելի առաջադեմ տեխնիկայի և լավագույն փորձի մեջ՝ ձեր Անկյունային զարգացման հմտությունները հետագա զարգացնելու համար:

1. Ծույլ բեռնումը չօգտագործելը

Lazy loading-ը Angular-ում դիզայնի օրինաչափություն է, որը թույլ է տալիս բեռնել JavaScript-ի բաղադրիչները ասինխրոն կերպով, երբ որոշակի երթուղի է ակտիվանում: Սա կարող է զգալիորեն բարելավել կատարողականությունը՝ բեռնելով ձեր հավելվածի միայն անհրաժեշտ մասերը:

Լուծում. օգտագործեք Angular-ի ներկառուցված աջակցությունը ծույլ բեռնման համար: Սա ներառում է յուրաքանչյուր հատկանիշի համար առանձին մոդուլի ստեղծում և ձեր երթուղիների կազմաձևում՝ դրանք ասինխրոն բեռնելու համար:

const routes: Routes = [
  {
    path: 'feature',
    loadChildren: () => import('./feature/feature.module').then(m => m.FeatureModule)
  }
];


2. Փոփոխությունների հայտնաբերման ռազմավարության անտեսում

Լռելյայնորեն, Angular-ն օգտագործում է ChangeDetectionStrategy.Default-ը, որը ստուգում է յուրաքանչյուր բաղադրիչ ծառի փոփոխությունները, երբ ինչ-որ բան փոխվում է: Սա կարող է հանգեցնել մեծ ծրագրերում կատարողականի խնդիրների:

Լուծում. հնարավորության դեպքում օգտագործեք ChangeDetectionStrategy.OnPush: Սա Angular-ին հրահանգում է ստուգել բաղադրիչի ներսում փոփոխությունները միայն այն դեպքում, եթե դրա մուտքային հատկությունները փոխվեն:

@Component({
  selector: 'app-my-component',
  templateUrl: './my-component.component.html',
  changeDetection: ChangeDetectionStrategy.OnPush
})
export class MyComponent {}


3. Չօգտագործել TrackBy-ը *ngFor-ով

Երբ օգտագործում եք *ngFor՝ կաղապարներում զանգվածի վրայով պտտելու համար, Angular-ը հետևում է յուրաքանչյուր տարրի ներքին օբյեկտի ID-ով: Եթե ​​զանգվածը փոխվում է, Angular-ը վերարտադրում է ամբողջ DOM ծառը: Բայց եթե օբյեկտներն ունեն եզակի id, դա կարելի է խուսափել:

Լուծում. օգտագործեք trackBy ֆունկցիան *ngFor-ում: Այս ֆունկցիան վերցնում է ինդեքսը և ընթացիկ տարրը և վերադարձնում է եզակի ID-ն:

<div *ngFor="let item of items; trackBy: trackByFn">{{ item.name }}</div>
trackByFn(index, item) {
  return item.id; // unique id corresponding to the item
}


4. Չօգտագործել Բովանդակության պրոյեկցիան

Բովանդակության պրոյեկցիան (նախկինում AngularJS-ում հայտնի է որպես ներառում) թույլ է տալիս ստեղծել բազմակի օգտագործման բաղադրիչներ՝ դրսից HTML ներարկելով:

Լուծում. օգտագործեք ‹ng-content› բաղադրիչի ձևանմուշում այն ​​տեղը նշելու համար, որտեղ պետք է գնա նախագծված բովանդակությունը:

<app-my-component>
  <div>This will be projected</div>
</app-my-component>
<!-- my-component.component.html -->
<div>
  <ng-content></ng-content>
</div>


5. Չօգտագործել TypeScript-ը իր ամբողջական պոտենցիալ TypeScript-ի համար

Լեզուն, որով գրված է Angular-ը, ապահովում է ստատիկ տիպեր: Սա կարող է օգնել շուտ հայտնաբերել սխալները, բարելավել գործիքակազմը և ձեր կոդը դարձնել ավելի ինքնափաստաթղթավորվող:

Լուծում. օգտագործեք TypeScript-ի առաջադեմ գործառույթները, ինչպիսիք են ինտերֆեյսները, տիպի պահակները և թվերը: Նաև մտածեք TSLint-ի օգտագործման մասին՝ կոդավորման ստանդարտները կիրառելու համար:

interface User {
  name: string;
  age: number;
}

function isUser(user: any): user is User {
  return typeof user.name === 'string' && typeof user.age === 'number';
}

Խուսափելով Angular կոդավորման առաջադեմ խնդիրներից՝ դուք կարող եք գրել ավելի արդյունավետ, պահպանվող և ամուր կոդ: Մնացեք Երրորդ մասի համար, որտեղ մենք կուսումնասիրենք նույնիսկ ավելի առաջադեմ Angular տեխնիկան:

Ուրախ կոդավորում: