I dag ska vi skapa ett nytt återanvändbart bibliotek. Om du upptäcker att du skapar samma komponent i mer än en app (eller om du vill dela din komponent med andra utvecklare) har du ett behov av ett bibliotek.
Skapa projektet
Vi kommer att använda angular cli för att generera biblioteksskelett. Om du inte har angular cli installerat, se angular cli installationsguide.
Följande kommandon genererar angularprojekt my-project
och bibliotek my-lib
ng new my-projectcd my-projectng generate library my-lib
Detta skapar projects/my-lib
i mappen my-project
, som innehåller my-lib.component.ts
och my-lib.service.ts
. Angular cli skapade också public-api.ts
i mappen my-lib
. Denna fil innehåller följande kodrader,
export * from './lib/my-lib.service';export * from './lib/my-lib.component';export * from './lib/my-lib.module';
Denna fil definierar vad som är tillgängligt för användarna av biblioteket (A.K.A public API).
Om du öppnar my-lib.component.ts
ser du följande kod:
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 {}}
Denna enkla biblioteksutgång my-lib works!
och vi använder selector, <lib-my-lib></lib-my-lib>
för att konsumera komponenten.
Installera biblioteket som npm-dependency.
För att använda något bibliotek i angular måste du installera det från pakethanteraren, till exempel npm. I det här exemplet publicerar vi inte vårt bibliotek till npm package manager. Om du vill lära dig hur du publicerar angularbibliotek hänvisar du till angularguiden.
Nu installerar vi my-lib
som npm-beroende från filen. Öppna package.json
och lägg till "my-lib": "file:projects/my-lib"
i blocket för beroenden, Se kodutdraget nedan.
"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
är paketnamnet som du kommer att se i mappen node_modules
och file:projects/my-lib
är det faktiska biblioteket. Om vi hade publicerat vårt bibliotek till npm skulle vi ersätta file:projects/my-lib
med versionsnummer(0.0.1
).
Om du kör npm install
ser du att my-lib
har lagts till i mappen node_modules
. Nu kan vi importera och använda biblioteket i vårt projekt. se kodutdrag nedan:
import {MyLibModule} from 'my-lib';@NgModule({ declarations: , imports: , providers: , bootstrap: ,})export class AppModule { }
Nu när vi importerat biblioteksmodulen i vårt projekt kan vi använda MyLibComponent
. Öppna app.component.html
och ersätt all kod med <lib-my-lib></lib-my-lib>
.
Kör appen
Kör npm start
eller ng serve
för att starta appen. Öppna webbläsaren och besök http://localhost:4200, du kommer att se my-lib works!
visas.
Grattis, du har lyckats skapa ett angularbibliotek!!
Kod tillgänglig på github