學(xué)習(xí) Vue.js 遇到的那些坑
排名不分先后
最近好像都是只發(fā)了一些生活類(lèi),吐槽的一些 blog,不更新點(diǎn)技術(shù)相關(guān)的 可能有人會(huì)覺(jué)得 這家伙肯定又在偷懶了。
那么 好 我要開(kāi)始裝逼了
類(lèi)空指向
就是類(lèi)似于空指針的一種錯(cuò)誤方式 不會(huì)在 console 上報(bào)錯(cuò) 非常難找的問(wèn)題
resp.data.user.avatar
//如果這個(gè)user是null的話 這么調(diào)用不會(huì)報(bào)錯(cuò) 也不會(huì)向下執(zhí)行 非常坑
//如果你想判斷這個(gè)avatar的話 要這么做
if(resp.data.user && resp.data.user.avatar){
//do...
}
ES6 箭頭函數(shù)
箭頭函數(shù)和非箭頭函數(shù)也是有很大區(qū)別的
//普通匿名函數(shù)寫(xiě)法
api()
.then(function(resp){
this.count()
//注意這個(gè)this 不是能正常使用的 count會(huì)是個(gè)undefined
})
//ES6 箭頭函數(shù)
api()
.then(resp => {
this.count()
//這里沒(méi)毛病
})
vuetify
這是一個(gè)基于 Google Material 設(shè)計(jì)語(yǔ)言的 UI 框架,可以在 Vue.js 運(yùn)行。
只是安裝方式有點(diǎn)特殊,并且它的插件安裝方式也很特殊。
例如 vuetify 的 dialog
import VuetifyDialog from 'vuetify-dialog'
import vuetify from './plugins/vuetify';
Vue.use(VuetifyDialog, {
context: {
vuetify
}
})
這就導(dǎo)致你寫(xiě) UI 的時(shí)候 要面向 Google 編程。(雖說(shuō)其他后端語(yǔ)言也差不多 笑)
vue-cli
如果你是要新創(chuàng)建一個(gè)項(xiàng)目,并且這個(gè)項(xiàng)目規(guī)模不是特別大。
我非常推薦你使用 vue-cli 創(chuàng)建,說(shuō)簡(jiǎn)單點(diǎn)兒 這會(huì)提升 b 格。
廢話少說(shuō) 上圖

vue create your_project_name vue ui
vue ui 會(huì)打開(kāi)一個(gè)可視化頁(yè)面 像是上圖那樣。
然后在里面導(dǎo)入由 vue-cli 創(chuàng)建的項(xiàng)目就可以和上圖一樣了 :)
異步和同步
其實(shí)之前有個(gè)非常蠢的想法。
就是在用戶(hù)輸完表單之后,立即和服務(wù)器進(jìn)行驗(yàn)證,然后將結(jié)果刷新到 UI 上。
但是這個(gè)刷新 UI 需要一個(gè)同步操作。
我就一個(gè)勁的折騰怎么去搞定將 axios 的異步操作變成同步。
如果是之前的 jQuery 就非常簡(jiǎn)單么 只需要將里面的 aysnc 屬性改掉就可以了。
但是你每次發(fā)請(qǐng)求 瀏覽器都會(huì)在 console 上提示 不推薦 XHR 同步請(qǐng)求。
為啥呢,因?yàn)闉g覽器里面頁(yè)面是單線程的,如果你的請(qǐng)求是同步的,那么就會(huì)導(dǎo)致每個(gè)請(qǐng)求都會(huì)讓頁(yè)面卡住一定的時(shí)間。
所以我最后還是改成了逐步驗(yàn)證的方式 讓所有的請(qǐng)求都是異步操作的。
運(yùn)行和部署
如果你本地開(kāi)發(fā)
運(yùn)行 serve(有些項(xiàng)目是 dev) 會(huì)開(kāi)放一個(gè)端口號(hào) 讓你訪問(wèn)用戶(hù)界面,并進(jìn)行接近實(shí)時(shí)的 UI 調(diào)整。
如果你是要部署到線上 需要先執(zhí)行 build 會(huì)在輸出目錄里面生成靜態(tài)文件。
再把這些文件部署到服務(wù)器上 像是:
- nginx
- caddy
這里我非常推薦 caddy,它是一個(gè)基于 golang 開(kāi)發(fā)的服務(wù)器,部署輕量化,并且?guī)в泄芾?api,非常良好的支持 Http2,并且 支持 http3。
TIPS
這里只記錄一些剛開(kāi)始玩的項(xiàng)目,在后面的開(kāi)發(fā)里,還會(huì)遇到更多問(wèn)題。
例如頁(yè)面之間的刷新,等等等等。
所以很快就會(huì)有下一章的。
希望能幫到你。
以上就是學(xué)習(xí) Vue.js 遇到的那些坑的詳細(xì)內(nèi)容,更多關(guān)于學(xué)習(xí) Vue.js 遇到的坑的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
vue使用$emit時(shí),父組件無(wú)法監(jiān)聽(tīng)到子組件的事件實(shí)例
下面小編就為大家分享一篇vue使用$emit時(shí),父組件無(wú)法監(jiān)聽(tīng)到子組件的事件實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-02-02
vue.js el-table動(dòng)態(tài)單元格列合并方式
這篇文章主要介紹了vue.js el-table動(dòng)態(tài)單元格列合并方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-02-02
vue實(shí)現(xiàn)多個(gè)echarts根據(jù)屏幕大小變化而變化實(shí)例
這篇文章主要介紹了vue實(shí)現(xiàn)多個(gè)echarts根據(jù)屏幕大小變化而變化實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07
詳解利用eventemitter2實(shí)現(xiàn)Vue組件通信
這篇文章主要介紹了詳解利用eventemitter2實(shí)現(xiàn)Vue組件通信,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11
vite+vue3代碼風(fēng)格校驗(yàn)及格式化方式
這篇文章主要介紹了vite+vue3代碼風(fēng)格校驗(yàn)及格式化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-03-03
關(guān)于Element Loading的全局使用(自定義Loading)
這篇文章主要介紹了關(guān)于Element Loading的全局使用(自定義Loading),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
Vue中$bus的用法及$on、$off的使用說(shuō)明
這篇文章主要介紹了Vue中$bus的用法及$on、$off的使用說(shuō)明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05
100行代碼理解和分析vue2.0響應(yīng)式架構(gòu)
通過(guò)100行代碼幫助大家理解和分析vue2.0響應(yīng)式架構(gòu)的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03

