麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

基于vue開發的在線付費課程應用過程

2019-11-19 14:28:54
字體:
來源:轉載
供稿:網友
  • 使用 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開發的在線付費課程應用過程,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 草久网| www.91视频com| 九九热免费精品 | 91小视频在线观看免费版高清 | av在线直播观看 | 欧美成人影院 | 日本看片一区二区三区高清 | 日产精品久久久一区二区开放时间 | 天天碰天天操 | 国产成人高清成人av片在线看 | 91成人久久 | xxxxxx中国 | 在线观看网址av | 国产噜噜噜噜久久久久久久久 | 国产精品一区二区视频 | jj视频在线播放 | 男女无遮挡羞羞视频 | 香蕉久草在线 | 日韩美香港a一级毛片 | 国产成人av一区二区 | 999久久久国产999久久久 | 精品国产一区二区三区天美传媒 | 色婷婷a v | 国产成人免费精品 | 日韩视频不卡 | 福利免费观看 | 成年免费看 | 99亚洲伊人久久精品影院红桃 | 亚洲操比视频 | 国产日本欧美在线观看 | 亚州成人在线观看 | 久久精品欧美一区二区三区不卡 | 国产精品区一区二区三区 | 欧美精品一区二区久久 | 中文字幕激情 | 亚洲精品av在线 | 桥本有菜免费av一区二区三区 | 欧美老外a级毛片 | 91九色网址 | 91 免费视频 | 99热1|