將Angular單項目升級為多項目的全過程
前言
有時候在開發(fā)的過程中發(fā)現(xiàn)一個Angular項目不太夠用,兩個獨立的項目又不太好復(fù)用。比如當前我們需要一個新的運行于微信小程序端的H5項目,但卻在想在新的H5項目中應(yīng)用原WEB項目中實體、Share、Serivce以及MockApi等模塊。此時,便需要將原來的Angular項目簡單做個升級。
情景:
- 當前已經(jīng)有了一個運行于瀏覽器端的web項目。
- 在當前項目的基礎(chǔ)上新增一個wechat項目。
- 將web項目中的一些公有的東西抽離出來組成一個公共庫
- 原web項目、新的wechat項目均能調(diào)用其公共庫
開發(fā)環(huán)境
本文開發(fā)環(huán)境如下:
panjie@panjies-iMac web % ng --version
_ _ ____ _ ___
/ \ _ __ __ _ _ _| | __ _ _ __ / ___| | |_ _|
/ △ \ | '_ \ / _` | | | | |/ _` | '__| | | | | | |
/ ___ \| | | | (_| | |_| | | (_| | | | |___| |___ | |
/_/ \_\_| |_|\__, |\__,_|_|\__,_|_| \____|_____|___|
|___/
Angular CLI: 12.1.4
Node: 14.16.0
Package Manager: npm 6.14.11
OS: darwin x64
Angular: 12.1.5
... animations, common, compiler, compiler-cli, core, forms
... platform-browser, platform-browser-dynamic, router
Package Version
---------------------------------------------------------
@angular-devkit/architect 0.1201.4
@angular-devkit/build-angular 12.1.4
@angular-devkit/core 12.1.4
@angular-devkit/schematics 12.1.4
@angular/cli 12.1.4
@schematics/angular 12.1.4
rxjs 6.6.7
typescript 4.3.5
生成新工程
我們進入原web項目的根文件夾,執(zhí)行ng generate application wechat。
panjie@panjies-iMac web % ng generate application wechat ? Would you like to add Angular routing? Yes
選擇是否使用路由以及css樣式類別后angular cli將為我們生成projects文件夾:
projects
├── karma.conf.js
├── src
│ ├── app
│ │ ├── app-routing.module.ts
│ │ ├── app.component.html
│ │ ├── app.component.scss
│ │ ├── app.component.spec.ts
│ │ ├── app.component.ts
│ │ └── app.module.ts
│ ├── assets
│ ├── environments
│ │ ├── environment.prod.ts
│ │ └── environment.ts
│ ├── favicon.ico
│ ├── index.html
│ ├── main.ts
│ ├── polyfills.ts
│ ├── styles.scss
│ └── test.ts
├── tsconfig.app.json
└── tsconfig.spec.json5 directories, 17 files
同時更新了angular.json文件,寫入了wechat這個新的項目的配置信息。
此時我們便可以使用ng s wechat來啟動wechat項目,使用ng t wechat來測試wechat項目,以及使用ng build wechat來構(gòu)建wechat的項目了。
wechat項目有了以后,我們當前得到了如下的目錄樹:
panjie@panjies-iMac web % tree -L 1 -a
.
├── .browserslistrc ②
├── .editorconfig ①
├── .eslintrc.json ②
├── README.md ①
├── angular.json ①
├── dist ①
├── karma.conf.js ②
├── node_modules ①
├── package-lock.json ①
├── package.json ①
├── projects ①
├── src ②
├── tsconfig.app.json ②
├── tsconfig.json ②
└── tsconfig.spec.json ②
① Angular工程文件,對web及wechat項目均生效
② web項目的專屬文件
移動web項目
為了更加的整齊劃一,我們將以②為標識的文件統(tǒng)一移動到projects文件夾中。新建文件夾名為web。

項目移動完成后,我們對應(yīng)修正項目的配置信息
angular.json
該文件存放的是Angular項目的配置信息,配置不正確將直接導(dǎo)致ng s等命令無法正常啟動。
我們對應(yīng)修正如下:
{
"projects": {
"web": {
- "root": "",
+ "root": "projects/web",
- "tsConfig": "tsconfig.app.json",
+ "tsConfig": "projects/web/tsconfig.app.json",
- "tsConfig": "tsconfig.spec.json",
+ "tsConfig": "projects/web/tsconfig.spec.json",
- "karmaConfig": "karma.conf.js",
+ "karmaConfig": "projects/web/karma.conf.js",
然后使用全局替換,將"src替換為"projects/web/src

修改完成后,運行ng s web或ng t來檢查是否存在其它的語法錯誤(主要是在遷移過程中可能發(fā)生的引用錯誤),有的話按提示進行修正。
至此,歷史項目遷移完畢。
公共模塊
接下來便可以在projects里面新一個common文件夾,然后將公用的實體、服務(wù)、組件等全部移過去了。這些小的功能模塊即可以在web工程中使用,也可以在wechat中使用,這樣以來同樣的輪子我們只造一個就可以了。
總結(jié)
到此這篇關(guān)于將Angular單項目升級為多項目的文章就介紹到這了,更多相關(guān)Angular單項目升級多項目內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
AngularJS 獲取ng-repeat動態(tài)生成的ng-model值實例詳解
這篇文章主要介紹了AngularJS 獲取ng-repeat動態(tài)生成的ng-model值實例詳解的相關(guān)資料,這里提供實例代碼及實現(xiàn)效果圖,需要的朋友可以參考下2016-11-11
總結(jié)AngularJS開發(fā)者最常犯的十個錯誤
AngularJS是如今最受歡迎的JS框架之一,簡化開發(fā)過程是它的目標之一,這使得它非常適合于元型較小的apps的開發(fā),但也擴展到具有全部特征的客戶端應(yīng)用的開發(fā)。下面給大家總結(jié)了AngularJS開發(fā)者最常犯的十個錯誤,有需要的可以參考學習下。2016-08-08
對比分析AngularJS中的$http.post與jQuery.post的區(qū)別
這篇文章主要給大家對比分析AngularJS中的$http.post與jQuery.post的區(qū)別,十分的詳細,是篇非常不錯的文章,這里推薦給小伙伴們。2015-02-02
使用AngularJS 應(yīng)用訪問 Android 手機的圖片庫
這篇文章主要介紹了使用AngularJS 應(yīng)用訪問 Android 手機的圖片庫的相關(guān)資料,需要的朋友可以參考下2015-03-03
解決angular2 獲取到的數(shù)據(jù)無法實時更新的問題
今天小編就為大家分享一篇解決angular2 獲取到的數(shù)據(jù)無法實時更新的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
解決angular的post請求后SpringMVC后臺接收不到參數(shù)值問題的方法
這篇文章主要介紹了解決angular的post請求后SpringMVC后臺接收不到參數(shù)值問題的方法,感興趣的小伙伴們可以參考一下2015-12-12
angular安裝import?echarts?from‘echarts‘標紅報錯解決
這篇文章主要介紹了angular安裝import?echarts?from‘echarts‘標紅報錯解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-10-10

