這次記錄主要是日常開發時遇到的一些問題。jquery
如何較爲正確的書寫axios請求
在上一篇文章中,我簡單的使用了一下axios。在工做中,由於我是剛入職的緣故,我並無負責寫axios API的這些東西,可是我對這些內容仍是挺感興趣的,因此學習了一下前輩們的書寫格式。
要我本身寫的話,確定是下面這樣:ios
axios({ method:'get', url:'/static/music.json' }).then((data)=>{ console.log(data) })
無他,在以前的開發中,用jquery的ajax習慣了...web
$.ajax({ method:'get', url:'/static/music.json', success:function(data){ console.log(data) } })
這樣看來,jquery和axios仍是挺像的,不過jquery處理結果是和請求的配置等在一個對象裏面,而axios是使用then函數,顧名思義,then->而後,在請求異步操做完成後再執行。下面是前輩們的寫法:ajax
getMusicInfo:function(reqData){ return new Promise(function(resolve,reject){ axios({ method:'get', url:'/static/music.json', data:{}, }).then((data)=>{ if(data.status==200){ resolve(data.data.music) }else{ reject(data) } }) }) }
若是請求成功,返回的data裏面的狀態碼爲200
這些東西都是寫在API文件夾裏面的,初看的時候我不明白爲何要new一個promise對象。在發送請求的地方和api函數所在的做用域是不同的,axios.then的結果在發送請求的位置是獲取不到的,雖然若是把axios寫在發送請求的頁面,能夠在then裏面賦值給this裏面的數據,但又怎麼把它獨立出來封裝呢。因此給請求返回一個promise對象,而後再請求的位置,鏈式的使用then方法,就能夠獲取獲得數據。這樣寫,確實比我本身寫的更加實用~chrome
給axios設置攔截器
攔截器能夠在請求發送以前或者響應被then或者catch以前攔截並處理他們。具體的用處固然要看實際的需求咯。json
var myInterceptor=axios.interceptors.request.use(function(config){ console.log('發送了一個請求') return config; },function(error){ console.log(error) })
攔截器的設置仍是很方便的。此處要注意,return config是必需要寫的,剛開始我覺得沒什麼用處,就沒寫,結果報了個不知道爲何的錯誤:axios
還有另一點,攔截器設置了卻不移除的話,每次發生請求都會建立一次攔截器,就像這樣:api
因此,若是沒有特殊需求的話,在設置過攔截器以後仍是要注意移除的:promise
axios.interceptors.request.eject(myInterceptor)
隱藏滾動條
溢出的內容通常就設置隱藏或者滾動。可是有時想要滾動卻又不想要滾動條,怎麼辦呢?有這麼一種辦法:瀏覽器
::webkit-scrollbar{ display:none; }
在網上搜了很久,纔看到這麼一個功能。能夠把滾動條也看作一個元素,經過display控制,不過貌似只有webkit內核的瀏覽器才支持這個效果,要兼容其餘瀏覽器的話也許只能經過插件來完成了吧~
由於帶樣式的部分要跟隨長度變化,因此不可能截恰好那麼長的一段圖,固然你能夠截一張100%寬度的圖片,可是這樣確定很佔空間。這時候只須要截取一小段:
就ok了,而後設置背景圖片平鋪,只須要設置容器的寬度就能達到目的。截取的這一小段要能表明樣式的一個週期,平鋪出來的樣式才正常。
最後告訴你們一個很牛逼的插件:three.js,顧名思義,就是用js實現的3d效果。由於剛纔知道,因此本人也不會寫[捂臉]你們能夠自行搜索,點下面這個連接進去看看就知道是什麼效果了~
https://threejs.org/examples/...