使用PWA的機制開發制定一套系統,會發現有優缺點。
當PWA的專案開發進行一段時間後,會有一些問題浮出。
會想用PWA,也是對上客戶有離線作業的需求,於client端作業,這時很多思考細項都不能像系統"都是"從client往Server發Request一樣的做法。
當不能隨時和Server要資料時,要如何操作? Local Storage 都適合嗎? 還是有限制? 這些都需要考量進來。
再來,離線系統需不需要有使用者帳密登入? 一般都會確切說要。因為無法預測公司配發裝置,是否多人可以使用,也不是口語交代就能完全掌握。資料的區別與正確性此時就會遭遇到挑戰與考驗。
而技術面來探討,離線系統資料靠登入來區別可用性,其實是沒有意義的。當系統的資料都下載下來供離線使用的時刻,已經全都在client端了,基本上已經沒有安全性可言了。因為現階段,任何的工具都有機會破解任何 Local Storage的防禦機制,把資料無差別取出。回到登入的議題,還會覺得登入在技術面上是有意義的嗎?
另外要思考的是,各公司主管會去同意用一個不用登入的系統? 以現階段台灣受過這麼多資安攻擊的經歷,是不可能會贊同的。所以,登入的安全性與區別每個使用者系統資料是一個挑戰。在設計系統與談需求時,就要確定好什麼功能是可以在client端作業,才不會有太多的風險。
系統設計面,PWA是非常前端面相的系統,怎麼保護資料、資安防護等等,一定要有所考量。而產生驗證的機制,不能放在client端做。
軟體設計開發面,JS一定要熟練,雖然有很多的library框架,但是會不會有衝突很難說,所以native JS熟練,是一個 "不怕你有一千招式,只怕一招練了千次" 的概念,內功好學什麼都容易。而本次用到的Indexdb與 cache 是要在同一個站台才能存取。
如果在實作上有任何額外的注意事項,會再補充上來。