開發的vue項目終於告一段落,終於是可以部署在測試服務器給客戶看了,期間也是遇到各式各樣的坑。
1.有些bug在谷歌是在沒問題的,在ie上就會暴露出來,因為其中一個模塊設計多個類型資源的列表,所以寫純模板的vue是行不通的,所以考慮寫rander或者是jsx,
最終是選擇了些jsx,rander當時寫的時候還不是特別熟練。(不過看完vue-rander部分的源碼,問題不大,還是要多多看源碼)。
其間往jsx中傳入一個圖片的地址,是對象中的一個屬性。我傳的文件的地址,一直給我報 vue Error in nextTick: "Error: 參數無效。",ie是真的牛逼,這都能檢測的出來,
導致我后續所以的字組件都沒有渲染出來,請原諒我的無知,剛開始一直以為是ie11不支持jsx,現在想想確實腦洞有點大。
所以下次遇見 vue Error in nextTick: "Error: 參數無效。" 一定要先檢測傳的數據是否有問題,ie並沒有谷歌那么好的包容性。
2.項目上是分前台和后台,前台並沒有直接跳到后台的連接,所以是直接在流浪器上改變的連接地址,wtf,盡然不跳轉。谷歌上是號的,這又是啥。
所以就仔細分析一下這個問題,首先,ie上的vue-router連接是可以跳轉的,所以說ie11是可以使用vue-router,也就是說我們使用this.$router.push 這個方法是可用的
然而我們直接改變鏈接地址為什么不跳轉,那么肯定是ie上這個有bug.既然我們直接改變地址他不跳轉,那么我們是否可以監聽一下地址,如果地址改變手動執行this.$router.push
查了一下ie上確實是有方法監聽ie地址改變的, window.addEventListener('hashchange', ()=>{},false),所以我們再最初的父組件mouted中調價這個監聽。發生改變是在執行this.$router.push
if (!!window.ActiveXObject || 'ActiveXObject' in window) { window.addEventListener('hashchange', () => { let currentPath = window.location.hash.slice(1) if (this.$route.path !== currentPath) { this.$router.push(currentPath) } }, false) }
來源地址:https://www.jianshu.com/p/1e94f20f8672
3.iis上部署項目,因為項目在子文件夾下,所以不能指定默認文檔,iis只能執行第一層的文件夾的文件作為默認文檔,所以我們可以新建一個默認文檔,然后在做一次跳轉
<script>window.location.href='/static/index.html'</script>