A mai napon egy új újrafelhasználható könyvtárat fogunk létrehozni. Ha több alkalmazásban is ugyanazt a komponenst készítjük (vagy meg akarjuk osztani a komponensünket más fejlesztőkkel), akkor szükségünk van egy könyvtárra.
Projekt létrehozása
Az angular cli segítségével fogjuk létrehozni a könyvtár vázát. Ha nincs telepítve az angular cli, olvassa el az angular cli telepítési útmutatóját.
A következő parancsok létrehozzák az angular projekt my-project és a könyvtár my-lib
ng new my-projectcd my-projectng generate library my-lib
Ez létrehozza projects/my-lib a my-project mappában, amely tartalmazza my-lib.component.ts és my-lib.service.ts. Az Angular cli létrehozott egy public-api.ts fájlt is a my-lib mappában. Ez a fájl a következő kódsorokat tartalmazza,
export * from './lib/my-lib.service';export * from './lib/my-lib.component';export * from './lib/my-lib.module';
Ez a fájl határozza meg, hogy mi áll a könyvtár felhasználói rendelkezésére (A.K.A public API).
Ha megnyitjuk a my-lib.component.ts fájlt, a következő kódot látjuk:
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 {}}
Ez az egyszerű könyvtár kimenet my-lib works! és mi a szelektor, <lib-my-lib></lib-my-lib> segítségével fogyasztjuk a komponenst.
Telepítsük a könyvtárat npm függőségként.
Hogy bármilyen könyvtárat használjunk az angularban, telepítenünk kell a csomagkezelőből, például az npm-ből. Ebben a példában nem fogjuk közzétenni a könyvtárunkat az npm csomagkezelőben. Ha meg szeretné tanulni, hogyan kell közzétenni az angular könyvtárat, olvassa el az angular útmutatót.
Most telepítjük a my-lib mint npm függőséget a fájlból. Nyisd meg a package.json és add hozzá a "my-lib": "file:projects/my-lib" függőségek blokkban, Lásd az alábbi kódrészletet.
"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 a csomag neve, amit a node_modules mappában fogsz látni és file:projects/my-lib a tényleges könyvtár. Ha közzétennénk a könyvtárunkat az npm-ben, akkor az file:projects/my-lib helyett a verziószámot(0.0.1) adnánk meg.
Ha a npm install futtatásával észrevehetjük, hogy a node_modules mappába my-lib került. Most már importálhatjuk és használhatjuk a könyvtárat a projektünkben. lásd az alábbi kódrészletet:
import {MyLibModule} from 'my-lib';@NgModule({ declarations: , imports: , providers: , bootstrap: ,})export class AppModule { }
Most, hogy importáltuk a könyvtár modult a projektünkbe, használhatjuk a MyLibComponent. Nyissuk meg a app.component.html-et, és cseréljük ki az összes kódot <lib-my-lib></lib-my-lib>-ra.
Az alkalmazás futtatása
Futtassuk a npm start vagy ng serve parancsot az alkalmazás elindításához. Nyissa meg a böngészőt és látogassa meg a http://localhost:4200, látni fogja a my-lib works! megjelenését.
Gratulálok, sikeresen létrehozta az angular könyvtárat!!!
A kód elérhető a githubon
.