使用Angular Cli如何創(chuàng)建Angular私有庫(kù)詳解
前言
在實(shí)際開發(fā)中,會(huì)發(fā)現(xiàn)我們好多工作都是重復(fù)的,在代碼層面,發(fā)現(xiàn)好多代碼是可以被重用的。這樣我們就可以建一個(gè)庫(kù),類似于java的庫(kù),來提高工作效率。
下面話不多說了,來一起看看詳細(xì)的介紹吧
創(chuàng)建Angular項(xiàng)目
打開命令行終端, cd 到用于創(chuàng)建應(yīng)用的目錄下,執(zhí)行創(chuàng)建Angular項(xiàng)目命令:
ng new arsprojects -S
此命令將會(huì)創(chuàng)建一個(gè)新的Angular項(xiàng)目,文件夾名為 arsprojects 。 -S 參數(shù)表示不創(chuàng)建測(cè)試文件。我們創(chuàng)建的ng庫(kù)都將依托于 arsprojects 項(xiàng)目,它只是作為ng庫(kù)的容器存在,不需要建立測(cè)試。
用IDE打開 arsprojects 項(xiàng)目。
看到的文件結(jié)構(gòu)就是我們常用的Angular項(xiàng)目結(jié)構(gòu)。平時(shí)我們開發(fā)Angular項(xiàng)目,就是在 src/app 目錄下進(jìn)行的。
我們想建的是一個(gè)ng庫(kù),它和原來的Angular項(xiàng)目還是有一定差異的,ng庫(kù)不需要操作 src/app 下的內(nèi)容。
創(chuàng)建一個(gè)組件庫(kù)
ng g library ars-components -p ars
g 是generate的簡(jiǎn)寫方式, library 表示我們創(chuàng)建的是一個(gè)庫(kù)。 -p ars 表示我們創(chuàng)建的庫(kù)里面的組件是以 ars 開頭的。例如我們創(chuàng)建一個(gè)checkbox組件,那么他的selector就是 ars-checkbox ,在HTML中通過標(biāo)簽來使用我們組件。
執(zhí)行完該命令后,在ide中會(huì)發(fā)現(xiàn),在我們的arsprojects中多了一個(gè) projects 文件夾,里面是我們剛創(chuàng)建的 ars-components 。
同時(shí),我們一開始創(chuàng)建arsprojects項(xiàng)目時(shí)創(chuàng)建的angular-cli.json也會(huì)被修改。里面會(huì)增加 ars-components 的項(xiàng)目信息。
"ars-components": { "root": "projects/ars-components", "sourceRoot": "projects/ars-components/src", "projectType": "library", "prefix": "ars", "architect": { "build": { "builder": "@angular-devkit/build-ng-packagr:build", "options": { "tsConfig": "projects/ars-components/tsconfig.lib.json", "project": "projects/ars-components/ng-package.json" }, "configurations": { "production": { "project": "projects/ars-components/ng-package.prod.json" } } }, "test": { "builder": "@angular-devkit/build-angular:karma", "options": { "main": "projects/ars-components/src/test.ts", "tsConfig": "projects/ars-components/tsconfig.spec.json", "karmaConfig": "projects/ars-components/karma.conf.js" } }, "lint": { "builder": "@angular-devkit/build-angular:tslint", "options": { "tsConfig": [ "projects/ars-components/tsconfig.lib.json", "projects/ars-components/tsconfig.spec.json" ], "exclude": [ "**/node_modules/**" ] } } } } }, "defaultProject": "arsprojects"
同時(shí)會(huì)在 tsconfig.json 中創(chuàng)建 paths 選項(xiàng)。
"paths": { "ars-components": [ "dist/ars-components" ]
通過修改tsconfig.json配置,可以讓我們方便的使用ars-components庫(kù)。
創(chuàng)建web站點(diǎn)項(xiàng)目
ng g application arswebsite --prefix web
此命令通過 application 腳手架創(chuàng)建一個(gè)名為 arswebsite 的項(xiàng)目,selector前綴為 web 。在ide中發(fā)現(xiàn)在ars-commponents同級(jí)目錄下創(chuàng)建了arswebsite和arswebsite-e2e兩個(gè)文件夾。
運(yùn)行項(xiàng)目
在運(yùn)行項(xiàng)目前,先做一些小改動(dòng),用于區(qū)分項(xiàng)目。
修改 projects/arswebsite/src/app/app.component.html 為
<h1>ArsWeb</h1>
修改 src/app/app.component.html 為
<h1>Main Angular App</h1>
啟動(dòng)項(xiàng)目
ng serve
打開瀏覽器,訪問 http://localhost:4200。
另打開一個(gè)終端,執(zhí)行命令
ng serve arswebsite --port 4201
打開瀏覽器,訪問 http://localhost:4201。
此時(shí)會(huì)發(fā)現(xiàn),訪問了兩個(gè)不同的項(xiàng)目?jī)?nèi)容。
在ng庫(kù)中創(chuàng)建新組件
cd projects/ars-components/src/lib ng generate component checkbox --project=ars-components
這樣就會(huì)在我們的ars-components庫(kù)中創(chuàng)建一個(gè)checkbox組件,組件的selector為ars-checkbox
編譯組件
cd yourfolder/arsprojects ng build ars-components
會(huì)在dist目錄下生成ars-components編譯后的內(nèi)容。
安裝組件
編譯后的組件,想要使用,需要現(xiàn)在本地安裝。
npm install dist/ars-components
使用組件
在arswebsite中使用ars-components組件,此時(shí)和使用其他第三方組件沒有任何區(qū)別。
website/src/app/app.moudle.ts 中引入 ArsComponentsModule :
import { ArsComponentsModule } from 'ars-components'; .... imports: [ BrowserModule, ArsComponentsModule ],
這樣就可以在arswebsite中直接使用自定義庫(kù)中的庫(kù)組件了。
arswebsite/src/app/app.component.html 添加自定義組件
<ars-checkbox></ars-checkbox>
總結(jié)
在使用Angular cli創(chuàng)建庫(kù)總體來說還是很方便的,創(chuàng)建庫(kù)的意義就是讓我們?cè)趯?shí)際開發(fā)過程中,總結(jié)的一些可以被復(fù)用的代碼形成一個(gè)可被共享的資源,從而提高效率。
好了,以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Angular 與 Component store實(shí)踐示例
這篇文章主要為大家介紹了Angular 與 Component store實(shí)踐示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02利用require.js與angular搭建spa應(yīng)用的方法實(shí)例
這篇文章主要給大家介紹了關(guān)于利用require.js與angular搭建spa應(yīng)用的方法實(shí)例,文中通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的理解和學(xué)習(xí)具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面跟著小編來一起看看吧。2017-07-07AngularJS遞歸指令實(shí)現(xiàn)Tree View效果示例
這篇文章主要介紹了AngularJS遞歸指令實(shí)現(xiàn)Tree View效果,結(jié)合實(shí)例形式分析了AngularJS基于遞歸指令實(shí)現(xiàn)樹形結(jié)構(gòu)層次數(shù)據(jù)的相關(guān)操作步驟與注意事項(xiàng),需要的朋友可以參考下2016-11-11簡(jiǎn)單談?wù)凙ngular中的獨(dú)立組件的使用
這篇文章主要介紹了簡(jiǎn)單談?wù)凙ngular中的獨(dú)立組件的使用的相關(guān)資料,通過實(shí)際案例向大家展示操作過程,操作方法簡(jiǎn)單快捷,實(shí)用性強(qiáng),需要的朋友可以參考下2022-08-08詳解AngularJS通過ocLazyLoad實(shí)現(xiàn)動(dòng)態(tài)(懶)加載模塊和依賴
本篇文章主要介紹了詳解AngularJS通過ocLazyLoad實(shí)現(xiàn)動(dòng)態(tài)(懶)加載模塊和依賴 ,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03