ios中滾動沒有慣性問題
ios設備上dom的滾動都沒有慣性,
解決方案
body{
-webkit-overflow-scrolling: touch;
}
但是在項目應用中使用這個之後出現了一個新的問題;動態創建的節點在第一次訪問時只能渲染出首屏,並且無法滾動
Vue單頁面應用配置微信SDK
之前做公衆號開發的時候,需求編輯每個頁面的分享功能,項目是vue開發的,vue-router用的是hash模式,網上看了很多相關的文章、博客,大致的觀點就是每個路由都要進行微信授權,也就是wx.config()操作;
單獨路由授權操作
如果只是單獨的路由調用,授權時完全沒有問題的,代碼如下
ajax({
url : "",//後端獲取相關簽名接口
data : {
url : encodeURIComponent(location.href.split("#")[0])//此處傳遞頁面url是因爲服務器端使用了代理模式,無法獲取請求頁面的url,如果沒有代理存在,url的獲取可以交由後端完成
},
success:res =>{
wx.config({
debug : false, //開啓調試模式,調用的所有api的返回值會在客戶端alert出來,若要查看傳入的參數,可以在pc端打開,參數信息會通過log打出,僅在pc端時纔會打印。
appId : res.data.appId, // 必填,公衆號的唯一標識
timestamp : res.data.timestamp, // 必填,生成簽名的時間戳
nonceStr : res.data.nonceStr, // 必填,生成簽名的隨機串
signature : res.data.signature,// 必填,簽名
jsApiList : [] // 必填,需要使用的JS接口列表
});
}
})
所有路由都需要授權
但是如果所有路由都需要授權時,比如分享接口,項目的所有頁面都必須支持;這時候就會存在着代碼的複用問題,一開始是想着既然所有路由都要配置,我直接在APP.vue裏面的watch $route監聽路由變化時執行授權操作,但是結果行不通,折騰了半天只能放棄;
後面有想過直接把授權操作放到每個路由的mounted生命週期裏面,應該也能實現效果,但是這裏存在一個問題,每一次路由的變化都會執行一次ajax請求,所以體驗和性能方面可能會比較差;在許多文章和博客裏面也都是這樣做的;
既然微信官方文檔裏面說的hash部分的變化不影響頁面的授權,我在想vue-router用的是hash模式,那麼整個項目除了域名,後面的路由部分應該都算是hash,所以乾脆把授權操作放到了index.html裏面,直接在index.html裏面引入sdk文件,然後進行授權操作,結果授權是通過的;
然後在需要使用的路由頁面中調用api接口
mounted(){
//由於index.html裏面引入了sdk文件,相當於window上面掛載了以個wx對象,所以此處的wx不需要再引入其他文件
wx.ready(()=>{
let shareData={
title:"分享標題",
desc:"分享內容描述",
link : "", // 分享鏈接,該鏈接域名或路徑必須與當前頁面對應的公衆號JS安全域名一致
imgUrl : "", // 分享圖標
success : function(){
// 設置成功
}
}
wx.updateAppMessageShareData(shareData);
wx.updateTimelineShareData(shareData);
wx.onMenuShareAppMessage(shareData);
wx.onMenuShareTimeline(shareData);
})
}
代碼丟到服務器上去了,效果也確實實現了,而且只有一次授權,所有路由都有效果,至於有什麼弊端,還請各位大神給點意見,這個問題我也一直沒有想明白,既然能一次解決,爲什麼所有的文章、博客都在說每個路由都要進行一次授權