---
# System prepended metadata

title: "\U0001F4CC[R]2020/03/11前端會議"
tags: [會議紀錄]

---

###### tags: `會議紀錄`
###### Thunder:
###### CodeReview: `行動版 #權限` `行動版 #效能、架構問題` `行動版 #通知` `行動版 #keyboardHide` `A1 #From popUp`
###### Announcement:
###### Attendee: 政儀、永佳、偉恩、弘翊、政儒
# 📌[R]2020/03/11前端會議
## 踩雷事件
### ⚡無踩雷事件

## 寫法交流
### ⛏行動版
#### #1 權限
* CRM.ts
1. onGoWork()是新寫的權限判斷Function，改好後大家可以都用這個試試看，舊的Function onWork 可以先留著。

2. 有加了crmAuth { B0012_OR_B0013: true } 可以在需要判斷此權限的Component路由上加上這個。如果有需要再新增其他模組判斷，要在interface新增項目， isCheck是拿來判斷是否綁定員工代號。

3. this.navCtel.push(rout.page, route.data.pSource) 這個就可以讓大家都可以在自己的Component上，需要取user資料就可以直接拿，就可以不用有的人自己在identefity.getUserPower()，或是用vaildate.getUser()拿。
> 不用vaildate主要原因是，要用它可能在第一次使用他以後被暫存住，那這樣下一次可能登出後，下一個使用者近來取到的值會是上一個使用者的資料。

4. 現在的權限都是用string自己打，所以可以整理enum來做整理維護，之前進銷存的(舊程式)先註解掉，Business2是不用的程式。

#### #2 效能、架構問題
1. `this.navCtrl.setRoot(Page1Page)`會將Page1Page作為根(第一層)，變數並不會與其他子Page共有，所以如果今天設計的程式是子Page更新後，根Page的參數也需要更新的話，那根(Page)就需要自己寫Function更新(更新的程式可以寫在共用的service)。
==> 設計的架構複雜時，更新的流程很容易錯誤。==

2. `this.navCtrl.push(Page1Page, {'param1' : value});`會將{'param1' : value}的值丟給Page1Page，這樣Page1Page再去this.navParams.getget('param1')就可以拿到值了，但今天的設計是step1->step2->step3->step1那step1程式跳去別頁，如果step1不是根Page那step2、step3是不會自己結束生命周期的，因為他們是一頁疊一頁的。
==>設計的架構是有順序性時，很容易讓程式堆疊，會有耗費效能的問題。==

3. `rxjs Subject` 可以在多處訂閱，只是資料有更新，有訂閱的就會更新值，這可以用在如果有很多頁的資料是互相影響的，就可以嘗試使用subject試試，但要記得在有用sunject訂閱資料的程式內取消訂閱(可以寫在OnDestroy()中)。
==>政儀有說有一隻可以參考 但我忘了QQ==

> 所以在一開始程式寫之前可以先想好程式架構的走向，可以依此與SD討論、說明未來開發時需要注意的功能類型，才不會在後續維護花很多時間改寫。
#### #3 通知
目前通知是前端寫隔30分鐘call一次後端，未來看以後是不是可以搭配oneSingal來搭配，就是如果有新的通知來了 那在去call後端做更新。

#### #4 keyboardHide
按完Enter後鍵盤要隱藏的需要加。
政儀建議: 可以試試看寫個Directive給大家共用。

### ⛏網頁版
#### #1 From popUp
此元件是用來做 快速新增的


## 事情公告
### 📢無事情公告