第一回:官網(wǎng)起步式
以前的官網(wǎng)
現(xiàn)在的官網(wǎng)
地址沒(méi)變......
https://cn.vuejs.org/v2/guide/installation.html#%E5%91%BD%E4%BB%A4%E8%A1%8C%E5%B7%A5%E5%85%B7-CLI
靠,這怎么玩兒
我們隨便玩兒一下效五,跟著感覺(jué)走
原來(lái)的命令行都不見(jiàn)了地消,給了這么一句話:Vue 提供了一個(gè)[官方的 CLI],地址我這里貼出來(lái)https://cli.vuejs.org/zh/guide/installation.html
一眼看到要求node版本畏妖,趕緊啟動(dòng)cmd脉执,node -v查看一下,還好我裝了戒劫,版本遠(yuǎn)遠(yuǎn)高出它要求的v8.9
安裝一下腳手架vue-cli這是舊版半夷,新版@vue/cli是這樣的,命令是這樣的
npm install -g @vue/cli
執(zhí)行后安裝好vue在cmd中就是一個(gè)有效的命令了迅细,我們看看此時(shí)版本信息vue -V巫橄,當(dāng)然用這個(gè)也可以vue --version
快速開(kāi)發(fā)原型?這又是個(gè)什么鬼簡(jiǎn)單點(diǎn)不好嗎茵典?
但是湘换,手賤沒(méi)辦法,稀里糊涂就執(zhí)行了這條命令统阿,這玩意兒不會(huì)影響我的腳手架環(huán)境吧彩倚?
npm install -g @vue/cli-service-globa
看了vue serve說(shuō)明,快速原型開(kāi)發(fā)扶平?哦帆离!有點(diǎn)懂了,以前我們寫前端頁(yè)面不論是idea蜻直,webstorm盯质,還是vscode右上角有各種瀏覽器可以邊編輯邊預(yù)覽頁(yè)面效果袁串,那么vue文件中你如果點(diǎn)擊右上角的那些瀏覽器圖標(biāo)彈出的頁(yè)面是讓你下載當(dāng)前這個(gè)vue文件概而,它不會(huì)幫你解析成html解析
靠呼巷!那咋辦,我畫一個(gè)簡(jiǎn)單的vue原型頁(yè)面還要打開(kāi)笨重的腳手架項(xiàng)目嗎赎瑰?或者自己
創(chuàng)建一套腳手架項(xiàng)目王悍?好麻煩!幫我搞一個(gè)能解析vue的工具就可以了餐曼,但是上面說(shuō)的幾個(gè)ide工具都辦不到压储,必須依賴腳手架,但是又不想在笨重的腳手架項(xiàng)目里搞來(lái)搞去源譬,所以vue serve就有用了集惋。
首先,創(chuàng)建個(gè)空文件夾vue-serve踩娘,里面可以手動(dòng)創(chuàng)建一個(gè)txt文本文件刮刑,放入一些vue標(biāo)簽,然后保存把后綴改成.vue,總之就是手動(dòng)搞一個(gè)vue后綴的文件养渴,或者你copy一個(gè)隨便雷绢,或者直接用ide前端代碼工具打開(kāi)這個(gè)文件夾直接創(chuàng)建一個(gè)vue文件,然后在這個(gè)文件夾中啟動(dòng)cmd理卑,然后執(zhí)行命令
vue serve
好了看起來(lái)和腳手架啟動(dòng)的項(xiàng)目沒(méi)什么兩樣翘紊,啟動(dòng)時(shí)會(huì)多出一個(gè)node_modules文件夾
好吧,用idea打開(kāi)啟動(dòng)看看藐唠,效果是一樣的
頁(yè)面效果
如果我想看看app2的怎么辦帆疟?把a(bǔ)pp.vue刪掉?
看來(lái)兔羊兔深破宇立,人家提示不管你是誰(shuí)踪宠,但是要想啟動(dòng)就給我這幾樣?xùn)|西之一,就像文檔里說(shuō)的
你所需要的僅僅是一個(gè) App.vue
就是app.vue還是App.vue總得給我一個(gè)泄伪,我只認(rèn)這個(gè)殴蓬,所以想看別的頁(yè)面效果你就用組件嵌套到app里去跳轉(zhuǎn)切換的看吧。
第二回:開(kāi)始真正的vue-cli3.x版本以上的腳手架吧
vue create hello-world
不用看蟋滴,這就是創(chuàng)建項(xiàng)目的命令染厅,hello-world是你的項(xiàng)目名稱,不管那么多先執(zhí)行看看
當(dāng)然津函,具體操作官網(wǎng)有截圖肖粮,很詳細(xì),我只對(duì)比差異尔苦,算了我還是一步步來(lái)吧涩馆!
上面的預(yù)設(shè)是指我之前創(chuàng)建項(xiàng)目后把我的設(shè)置操作保存成模板行施,下次再創(chuàng)建項(xiàng)目時(shí),直接選擇預(yù)設(shè)的模板創(chuàng)建一個(gè)一模一樣的項(xiàng)目是不是很快很方便魂那。但是這里選擇最下面的手動(dòng)創(chuàng)建
這是官網(wǎng)的截圖
哦蛾号!發(fā)現(xiàn)版本不一樣我的Vue CLI v4.5.9,官網(wǎng)的Vue CLI v3.4.0涯雅,然后我就多了一個(gè)這玩意兒Choose Vue version鲜结,至于其他沒(méi)什么兩樣,就按它默認(rèn)的選擇活逆,回車?yán)^續(xù)(移動(dòng)鍵盤上下箭頭用空格可以選擇和取消)精刷,是這樣的
讓選vue.js版本,我們先選3.x蔗候,回車?yán)^續(xù)
選擇ESLint + Standard config繼續(xù)
回車?yán)^續(xù)
下個(gè)頁(yè)面輸入n怒允,不保存預(yù)設(shè),繼續(xù)锈遥,然后完成看看項(xiàng)目結(jié)構(gòu)
好的再來(lái)一遍纫事,這回我們選擇2.x
看看項(xiàng)目結(jié)構(gòu),沒(méi)什么兩樣迷殿,區(qū)別在這里"vue": "^2.6.11"儿礼,vue-cli的版本和vue.js的版本不要搞混,前者在cmd中用命令vue -V查看庆寺,后者在項(xiàng)目里配置依賴管理里面查看package.json
好的再來(lái)一遍蚊夫,這次用2.x 加個(gè)路由Router
看看項(xiàng)目結(jié)構(gòu),多了些東西
好了懦尝,到這里可以放心大膽的創(chuàng)建項(xiàng)目了知纷,有沒(méi)有坑?我們?cè)囋嚳础?br> 等等陵霉,還有些騷操作琅轧,你的創(chuàng)建項(xiàng)目方式怎么跟網(wǎng)上的不一樣,別人用的是這個(gè)命令
vue init webpack hello-world
那就試試看唄
靠踊挠,報(bào)錯(cuò)乍桂,仔細(xì)一看這玩意兒是vue-cli2.x的命令,我都vue-cli4.x了不支持了效床,看你這么騷睹酌,那就全局安裝一下以下命令就可以了
npm install -g @vue/cli-init
然后此時(shí)就已進(jìn)入vue-cli2.x的世界
第三回:回到真正的vue-cli2.x的腳手架吧
執(zhí)行創(chuàng)建項(xiàng)目
vue init webpack hello-world5
咦,熟悉的界面又回來(lái)了
然后一問(wèn)一答剩檀,就不多說(shuō)啦
看看項(xiàng)目結(jié)構(gòu)憋沿,咦!是這樣子啟動(dòng)的npm run dev
好了沒(méi)什么大驚小怪的沪猴,再來(lái)一遍加上router康康
一樣的操作辐啄,但是有兩個(gè)yes采章,康康項(xiàng)目結(jié)構(gòu)
沒(méi)啥特別的,多了router而已壶辜,多了eslint
那么我想用回vue-cli2.x版本悯舟,當(dāng)前是vue-cli3.x版本以上,那就卸載唄士复。
npm uninstall -g @vue/cli
然后查看版本vue -V什么都沒(méi)有图谷,那就安裝vue-cli2.x
npm install -g vue-cli
默認(rèn)安裝好的版本vue -V 查看是 vue-cli2.9.6翩活,我們創(chuàng)建項(xiàng)目吧
vue create mypg
我去阱洪,失敗菠镇?告訴我你CLI2.x的版本竟敢使用我CLI3.x以上的命令冗荸,你要么把CLI2.x卸載,然后裝我CLI3.x吧
算了我老老實(shí)實(shí)用CLI2.x的命令吧 vue init webpack hello-world
第三回:踩坑對(duì)比腳手架
用vue-cli2.9.6創(chuàng)建一個(gè)項(xiàng)目利耍,創(chuàng)建時(shí)勾選路由蚌本,然后就有了一個(gè)帶路由的項(xiàng)目,我們做個(gè)小實(shí)驗(yàn)隘梨,將elementui的菜單放入app.vue中看效果
但是前提是你先安裝了elementui才行程癌,怎么裝?去官網(wǎng)吧https://element.eleme.cn/#/zh-CN/component/menu 算了轴猎!遷就你嵌莉,我還是把命令貼出來(lái)吧
npm i element-ui -S
main.js中引入
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.use(ElementUI);
啟動(dòng)項(xiàng)目npm run dev,查看效果
點(diǎn)擊選項(xiàng)一捻脖,發(fā)生了跳轉(zhuǎn)
這是因?yàn)檫@里設(shè)置了
那么锐峭,為什么發(fā)生跳轉(zhuǎn),頁(yè)面怎么沒(méi)跳可婶?第一沿癞,首先得確認(rèn)有沒(méi)有這個(gè)路由路徑,你點(diǎn)擊了它會(huì)去全局的路由里面去找矛渴,那么全局路由是哪一個(gè)噻椎扬?沒(méi)猜錯(cuò)的話是這一個(gè)
那么我在app.vue里玩兒怎么能找到你router呢?所以早就幫你在創(chuàng)建項(xiàng)目時(shí)就引入main.js里了具温,main.js當(dāng)然就是全局的啦蚕涤,同理你的router也是在App.vue里隨便調(diào)用了
但是elementui底層幫我們調(diào)用了router沒(méi)問(wèn)題,然后呢桂躏?調(diào)完接收怎么處理在哪里顯示呢钻趋,export default new Router()這里明明輸出了一堆東西給我們用,我也不知道怎么用剂习。但是vue-cli會(huì)幫我們處理蛮位,你只管告訴我你要跳轉(zhuǎn)的路徑name或path较沪,反正就是index=" "里面的內(nèi)容,我會(huì)去export default new Router()輸出這堆東西里找失仁,找到后從這個(gè)出口標(biāo)簽顯示 <router-view/>尸曼,就這么簡(jiǎn)單
我們來(lái)試試看,改一下菜單路由index="/home"萄焦,home可以看做路徑控轿,可以隨便命名,但是斜杠不能少拂封,哪怕少了路徑名稱也不能少斜杠
修改一下全局路由文件index.js,同理哪怕少了路徑名稱也不能少斜杠茬射,路徑名稱要一致
好的,啟動(dòng)看效果冒签,我們來(lái)跳轉(zhuǎn)一下在抛,我們通過(guò)路由找到了這個(gè)組件頁(yè)面,就是當(dāng)初的helloworld.vue組件
就這樣萧恕,以后我們基本上就在這個(gè)視口 <router-view/>里書寫人生刚梭,施展奇技淫巧。
同樣的操作我們?cè)賮?lái)一遍
這時(shí)我們創(chuàng)建一個(gè)不帶路由的vue-cli2.x票唆,引入elementui的menu
啟動(dòng)npm run dev一氣呵成朴读,點(diǎn)擊,跳轉(zhuǎn)走趋,沒(méi)反應(yīng)衅金!我嚓!
爆紅吆视!表示找不到典挑?不存在?沒(méi)這個(gè)東西啦吧? 確實(shí)elementui點(diǎn)擊事件是觸發(fā)了您觉,但是在全局js中找不到有關(guān)路由的東西,因?yàn)閙ain.js里確實(shí)沒(méi)有路由的相關(guān)引入授滓。接下來(lái)一大波騷操作來(lái)襲琳水,俗稱之為坑!我以為執(zhí)行一條命令全局安裝路由就能自動(dòng)結(jié)合elementui用起來(lái)了般堆。
npm install vue-router --save
好的在孝,先停一下項(xiàng)目ctrl+c Y退出,執(zhí)行命令安裝好vue-router,在main.js中引入淮摔,這下全局有路由了吧私沮,不會(huì)找不到了吧,再次啟動(dòng)
import VueRouter from 'vue-router'
Vue.use(VueRouter)
首先項(xiàng)目啟動(dòng)成功和橙,但是控制臺(tái)報(bào)錯(cuò)Error in render: "TypeError: route is undefined"仔燕,頁(yè)面顯示白板造垛,什么都顯示不出
注釋掉<router-view/>可以正常顯示
點(diǎn)擊“選項(xiàng)1”跳轉(zhuǎn)火狐報(bào)錯(cuò)
TypeError: route is undefined
點(diǎn)擊“選項(xiàng)1”跳轉(zhuǎn)Chrome報(bào)錯(cuò)
element-ui.common.js?ccbf:3383 TypeError: Cannot read property 'push' of undefined
表示沒(méi)有所謂的router可用,手動(dòng)引入router后晰搀,其它明明兩個(gè)項(xiàng)目都一樣為毛報(bào)錯(cuò)五辽,以為是框架版本問(wèn)題,還是多從自身找問(wèn)題吧外恕,兩個(gè)項(xiàng)目真的一樣嗎杆逗?至少一個(gè)有router文件夾index.js路由文件,而另一個(gè)則沒(méi)有鳞疲。我們不一樣罪郊。。建丧。不一樣排龄。。翎朱。歌聲響起來(lái)
結(jié)果顯示一切正常涉枫,當(dāng)然剛剛注釋掉的<router-view/>可以放開(kāi)了喘漏,去掉或者保留vue-router這個(gè)引用好像并不影響結(jié)果。那么自己挖的坑自己填上士修,main.js里引入router就此一種凛忿,就是以下這種澈灼,引入的是我們配置的“路由規(guī)則js文件”
import router from './router' //找到項(xiàng)目中的路由js文件
new Vue({
el: '#app',
router, //引入Vue中
components: { App },
template: '<App/>'
})
而以下這種引入方式,引入的是全局安裝的路由Router這個(gè)插件店溢,
import Router from 'vue-router'
Vue.use(Router)
//這里會(huì)用到
export default new Router({
routes: [
{
path: '/home',
name: 'HelloWorld',
component: HelloWorld
}
]
})
總結(jié):基礎(chǔ)操作不扎實(shí)叁熔,學(xué)會(huì)這個(gè)就忘了那個(gè),記得不牢容易遺漏床牧,而且對(duì)網(wǎng)上資源理解太片面容易踩坑荣回。