Vandaag gaan we een nieuwe herbruikbare bibliotheek maken. Als je dezelfde component in meer dan één app maakt (of als je je component met andere ontwikkelaars wilt delen), heb je een bibliotheek nodig.
Maak het project
We gaan angular cli gebruiken om het skelet van de bibliotheek te genereren. Als u angular cli niet hebt geïnstalleerd, raadpleeg dan de installatiegids van angular cli.
De volgende commando’s genereren angular project my-project
en bibliotheek my-lib
ng new my-projectcd my-projectng generate library my-lib
Dit creëert projects/my-lib
in my-project
map, die my-lib.component.ts
en my-lib.service.ts
bevat. Angular cli heeft ook public-api.ts
bestand aangemaakt in my-lib
map. Dit bestand bevat de volgende regels code,
export * from './lib/my-lib.service';export * from './lib/my-lib.component';export * from './lib/my-lib.module';
Dit bestand definieert wat beschikbaar is voor de gebruikers van de bibliotheek (A.K.A publieke API).
Als u my-lib.component.ts
opent, ziet u de volgende code:
import { Component, OnInit } from '@angular/core';@Component({ selector: 'lib-my-lib', template: `<p>my-lib works!</p>`, styles: })export class MyLibComponent implements OnInit { constructor() { } ngOnInit(): void {}}
De uitvoer van deze eenvoudige bibliotheek my-lib works!
en we gebruiken de selector, <lib-my-lib></lib-my-lib>
om de component te consumeren.
Installeer de bibliotheek als npm dependency.
Om een bibliotheek in angular te gebruiken, moet je het installeren via package manager zoals npm. In dit voorbeeld zullen we onze bibliotheek niet publiceren naar npm package manager. Als u wilt leren over hoe u angular bibliotheek te publiceren, verwijzen wij u naar angular gids.
Nu zullen we my-lib
installeren als npm afhankelijkheid van het bestand. Open package.json
en voeg "my-lib": "file:projects/my-lib"
toe aan het blok afhankelijkheden, zie de onderstaande code.
"dependencies": { ... "@angular/router": "~9.1.4", "rxjs": "~6.5.4", "tslib": "^1.10.0", "zone.js": "~0.10.2", "my-lib": "file:projects/my-lib" }
my-lib
is de pakketnaam die u in de map node_modules
zult zien en file:projects/my-lib
is de eigenlijke bibliotheek. Als we onze bibliotheek hadden gepubliceerd bij npm, zouden we file:projects/my-lib
vervangen door versienummer(0.0.1
).
Als u npm install
uitvoert, zult u zien dat my-lib
is toegevoegd aan node_modules
map. Nu kunnen we de bibliotheek importeren en gebruiken in ons project. zie codefragment hieronder:
import {MyLibModule} from 'my-lib';@NgModule({ declarations: , imports: , providers: , bootstrap: ,})export class AppModule { }
Nu we de bibliotheekmodule hebben geïmporteerd in ons project, kunnen we MyLibComponent
gebruiken. Open app.component.html
en vervang alle code door <lib-my-lib></lib-my-lib>
.
Start de app
Run npm start
of ng serve
om de app te starten. Open de browser en kijk op http://localhost:4200, u zult my-lib works!
zien verschijnen.
Gefeliciteerd u heeft met succes de angular bibliotheek gemaakt!!
Code beschikbaar op github