背景介紹:第一次使用uni-app開發項目,所以選擇了平台推薦的編輯工具HBuilder X來開發。前端UI框架選擇的uview。
PS;這篇文章依然是作為項目開發的總結文章。都是在項目的實際開發中遇到的問題及自己的解決思路方法,都很實用的。
1、框架搭建:
打開HBuilder X 文件 -> 新建 ->項目,選擇uview模板,之后工具就會為我們引入uView的相關組件及配置文件。
2、代理設置
現在都是前后端分離,那就避免不了跨域的問題,前端流行的解決也是我常用的就是在開發階段設置代理,這個需要后台同學幫助的。我這里只介紹前端相關配置了。
打開mainfest.json,點擊源碼視圖,找到H5配置,在devServe中填寫proxy配置,具體看下圖,大部分項目都不會放在服務器根目錄的,所以都需要設置服務根部門,我們的是放在mnblm文件夾下,所以在proxy中就要設置/mnblm/api(由於開發和測試環境有關,所以需要加上api,可根據實際項目配置)。target就是代理地址了,問后台要就可以。
參考鏈接:https://www.jianshu.com/p/8cb6efb9f628
之后就是api的設置了,也來個圖片吧,更直觀些。這樣配置之后,如果沒有特殊需要基本上就不需要配置baseurl了。
3、請求攔截
只要在common->http.interceptor.js中作相應的設置就可以,添加token,userId等等。還是如下圖👇
3.1基本配置
3.2請求時的動態配置,也就是token,userId之類的,這里在多一嘴,要想持久存貯得放在cookie中,localStorage是不行的,用戶退出會被清除的。
3.3 請求響應,自己根據需要設置即可
3.4 每個接口的特殊設置,在http.api.js中單獨設置,👇:
4、路由守衛
設置了請求攔截,還得有頁面的鑒權處理,頁面跳轉時也要判斷用戶是否登錄,需要在項目根目錄新建router.js。這里需要安裝一個插件, npm install -S uni-simple-router,然后在router.js中import進來RouterMount和createRouter,具體配置看👇圖。正常跳轉別忘記調用next()方法,攔截跳轉到登錄頁也要調用next()跳轉,此時next()接受一個對象url是跳轉路徑,還可以添加參數query,query也是對象類型,里面是你要傳遞的參數。可以保證授權成功后再跳轉回來時保留原參數。
參考:https://www.cnblogs.com/XHappyness/p/13808413.html
常規配置完成,基本可以開發了。接下來的都是業務開發中遇到的一些問題了。
5、微信授權
這一部分也是很多微信開發的新人苦惱的地方,不知道該是前端做,還是后台處理,我的建議是最好服務端處理,因為前端只能拿到code,無法獲取openid,這個安全級別較高,微信服務器是不會返回給前端的,只能服務端獲取發送給前端。微信開放文檔:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html。
說下我的做法,前端發起授權,向微信服務器請求code,之后發送服務端,由服務端去向微信服務器請求openid及access_token等信息,再返回前端。
首先要獲取當前url,設置為redirect_uri,設置公眾號appId,response_type設為code,scope設為snsapi_base(靜默授權,只能拿到openid),state是回調時的參數,可以隨便設置。記住這個要使用頁面跳轉的方式請求code,請求成功后,微信服務器會返回到你指定的redirect_uri的地址,將code及state參數拼接到url后面,👇
在onload中獲取返回的code,大概地址是這樣的,https://域名/mnblm/pages/account/account?code=你需要的Code值&state=123,從url中截取你需要的code就可以了,再發給后端就可以了。剩下的工作就交給后端吧。
5、引用外部api,如百度地圖api
前端使用會有跨域的問題,這里使用是jsonP的方式,使用了一個插件,npm install -S vue-jsonp,然后在main.js中引入下就行了
PS:報如下👇錯誤的,就需要后台服務做響應安全設置,前端是解決不了的,不要瞎浪費時間琢磨了(其他外部Api通用)。
6、文件上傳如果超過1M也是要在服務端修改默認設置,修改上傳文件大小設置。如果自己使用input框 實現圖片上傳,在上傳成功后要記得清空input的value,防止再選擇相同文件時,無法選擇的問題。
好了,大概就這么多了。