基於 Angular7,ng-zorro7.x 的中後臺實踐案例

範兒發表於2019-01-02

在一個專案維護的過程中,需求總是累加的,一開始總是很簡單,之後需求越來越多,維護會越來越頭疼,所以一個好的專案結構可以幫助節省很多的維護成本。
很多開發者以元件樹的形式去開發 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…

相關文章