在一個專案維護的過程中,需求總是累加的,一開始總是很簡單,之後需求越來越多,維護會越來越頭疼,所以一個好的專案結構可以幫助節省很多的維護成本。
很多開發者以元件樹的形式去開發 Angular,其實以模組樹的形式去開發是更好的選擇。
在開始前希望你已經閱讀過以下文章
目錄結構
這是一個標準的 Angular CLI 構建的專案,並參考了ng-alain 的目錄結構。
├── src
│ ├── app
│ │ ├── core # 核心模組
│ │ │ ├── net
│ │ │ │ └── default.interceptor.ts # 預設HTTP攔截器
│ │ │ ├── services
│ │ │ │ └── startup.service.ts # 初始化專案配置
│ │ │ └── core.module.ts # 核心模組檔案
│ │ ├── layout # 通用佈局
│ │ ├── modules
│ │ │ ├── home
│ │ │ │ ├── pages
│ │ │ │ │ ├── ** # 業務目錄
│ │ │ │ ├── home.module.ts # 業務路由模組
│ │ │ │ └── home-routing.module.ts # 業務路由註冊口
│ │ ├── shared # 共享模組
│ │ │ └── shared.module.ts # 共享模組檔案
│ │ ├── app.component.ts # 根元件
│ │ └── app.module.ts # 根模組
│ ├── assets # 本地靜態資源
│ ├── environments # 環境變數配置
│ ├── styles # 樣式目錄
└── └── style.less # 樣式引匯入口
複製程式碼
開始
# 安裝依賴
npm i
# 啟動
ng s
複製程式碼
問題總結
Angular 已經是非常成熟的一個框架,可以通過找到各種各樣的問題解決方案,以下是一些國內比較常見但是很少有回答的一些問題。
Angular 的 HttpClient 需要二次封裝嗎?
答:這個看場景,在我們之前的專案中是使用自己二次封裝過的 HttpClient,現在已經放棄(因為發現封裝後沒啥意義),之後在群裡請教雪狼汪志成,他們也沒有進行二次封裝。
舉個多介面字首的例子(國內有很多這樣的場景,之前我們進行二次封裝也是做這個工作,通過 headers 指定頭傳值,在攔截器中獲取到後移除 domain,具體請參考本專案登陸模組程式碼,
// src/environment/environment.ts 環境變數
export const environment = {
BASE_URL: `https://test.BASE_URL.com/admin/`,
LOGIN_URL: `https://test.LOGIN_URL.com/login/`,
production: false
};
// src/app/coer/net/default.interceptor.service.ts 攔截器
if (req.headers.get("domain")) {
url = environment[req.headers.get("domain")] + url;
} else {
url = environment.BASE_URL + url;
}
// src/app/login/pages/user-login.component.ts 使用
this.httpClient
.get("admin/login", {
headers: { domain: "LOGIN_URL" }
})
.subscribe();
複製程式碼
如何使用 RSA 加密?
答:RSA 加密是使用jsencrypt,具體在 Angular 中使用請參考登陸模組,有完整使用案例。
未完待續。。
專案原始碼:github.com/faner11/ang…