您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關vue開發應用的示例分析,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
使用 vux UI組件庫
使用 vue-navigation 緩存頁面,此庫實現了前進刷新后退讀緩存的功能,像原生APP導航一樣。用子路由的方式實現tabbar有bug,用vuex解決了。
使用 lib-flexible 解決移動頁面適配
來一個清單
"dependencies": { "fastclick": "^1.0.6", "lib-flexible": "^0.3.2", "lodash": "^4.17.4", "vue": "^2.5.2", "vue-navigation": "^1.1.3", "vue-router": "^3.0.1", "vuex": "^2.1.1", "vuex-i18n": "^1.3.1", "vux": "^2.7.8" }
微信登錄
應用需要登錄后可以訪問,微信登錄要實現的功能是從任意一個鏈接進入,判斷是否登錄,未登錄跳到微信授權,成功后返回登錄前鏈接,由于對php的微信授權做得比較多,所以微信授權放在的php實現,這里說一下實現過程。路由方式使用了 history 模式,打包好的 index.html 文件用php渲染出來。路由path定義統一的格式 r/xxxx ,這樣對于php端的路由可以實現匹配,只要是這個格式的路由都匹配到渲染 index.html 的方法,要不然訪問的時候服務端出現404錯誤。
php端路由配置,這里是laravel,其他框架應該也差不多
Route::get('/', 'HomeController@index')->middleware('auth')->name("home"); Route::get('/r/{query}', 'HomeController@index')->middleware('auth')->name("home");
為什么不用 hash 模式呢,因為用hash模式的下php獲取來源地址的時候獲取不到#后面參數,雖然可以用參數傳給后端,但是好麻煩,所以就用 history 模式了,后面的支付和分享也是這樣
微信登錄流程
打開任意鏈接 xxx.com/r/xxx
先經過php端,匹配路由,匹配失敗的話就會找不到頁面啦~
匹配成功判斷登錄,未登錄就跳到微信登錄,跳轉之前先記錄當前鏈接,登錄成功就返回記錄的鏈接
用戶登錄狀態使用token,token定義在index.html這個頁面里面
<script> var TOKEN = '{{$token}}';//php模板變量 var HOST = 'http://read.xxx.com';//程序api接口域名 var INURL = location.href //頁面域名(在ios自定義分享時候會用到) </script>
微信支付
微信支付要解決的就是路徑配置問題,由于我們的路由都是以 r/xxxxx 的格式來的,所以在微信那邊就直接填寫 http://xxx.xxxx.com/r/ ,注意需要支付的頁面傳參請使用 query 的方式。要不然r后面就會出現目錄了,比如 r/goods/id/1 要換成 r/goods?id=1 ,這樣只要定義一個路徑全站都可以拉起支付
自定義分享
由于使用了 history 的路由模式,所以ios的問題需要解決,在路由跳轉后,安卓能正常難道當前的路徑,ios獲取的是你第一打開應用的路徑,所以在簽名的時候就得注意了,安卓拿當前路徑去簽名,ios要拿第一次打開頁面的路徑去簽名。這就是為什么要在路由初始化之前要定義一個第一次打開應用的路徑。就是 index.html 里面那個具體怎么去簽名,我這里使用的是 axios
關鍵代碼
let http = axios.create({ baseURL: HOST + '/api/', timeout: 10000, headers: { 'Accept': 'application/json', 'Authorization': 'Bearer ' + TOKEN, 'InUrl': INURL,//傳第一次打開頁面的鏈接 'IsIos': isiOS//傳是否ios } })
后臺要拿三個
$is_ios = request()->header('IsIos');//獲取是否ios $in_url = request()->header('InUrl');//獲取第一次打開頁面路徑 $in_url = explode("#", $in_url)[0];//處理一下 if ($is_ios == 'true') { $url = $in_url;//ios用第一次打開頁面路徑簽名 } else { $url = url()->previous();//安卓就用請求這個接口的路徑去簽名 } //用url去簽名吧
拿到簽名后怎么初始化呢
this.$wechat.config(res.data.wx_config)
這是vux提供的
由于應用使用了頁面緩存,所以在定義自定義分享數據的代碼就要放在 activated 里面執行,具體實現
首先定義一個 init=false
mounted 開始請求數據拿到簽名
this.$wechat.config(res.data.wx_config) this.$wechat.ready(() => { this.set_share() })
在 methods 定義一個方法
set_share () { // 自定義分享到朋友圈 this.$wechat.onMenuShareTimeline({ title: this.share.title, link: this.share.url, imgUrl: this.share.icon, success: () => {} }) this.$wechat.onMenuShareAppMessage({ title: this.share.title, desc: this.share.desc, link: this.share.url, imgUrl: this.share.icon }) }
activated 定義
activated () { this.set_share() }
keep-alive 組件激活時重新設置一下自定義分享的數據,要不然如果在返回前的頁面也定于的自定義分享,返回后頁面沒有刷新,分享的數據就會是之前的,這里重新定義一下就可以了。
關于vue開發應用的示例分析就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。