入門vue-cli腳手架版本差異升酣,router幻工、elementUI的使用

第一回:官網(wǎng)起步式

以前的官網(wǎng)


image.png

現(xiàn)在的官網(wǎng)


image.png

地址沒(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

image.png

一眼看到要求node版本畏妖,趕緊啟動(dòng)cmd脉执,node -v查看一下,還好我裝了戒劫,版本遠(yuǎn)遠(yuǎn)高出它要求的v8.9
image.png

安裝一下腳手架vue-cli這是舊版半夷,新版@vue/cli是這樣的,命令是這樣的
npm install -g @vue/cli
執(zhí)行后安裝好vue在cmd中就是一個(gè)有效的命令了迅细,我們看看此時(shí)版本信息vue -V巫橄,當(dāng)然用這個(gè)也可以vue --version
image.png

快速開(kāi)發(fā)原型?這又是個(gè)什么鬼簡(jiǎn)單點(diǎn)不好嗎茵典?
image.png

但是湘换,手賤沒(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解析


image.png

image.png

靠呼巷!那咋辦,我畫一個(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

image.png

好了看起來(lái)和腳手架啟動(dòng)的項(xiàng)目沒(méi)什么兩樣翘紊,啟動(dòng)時(shí)會(huì)多出一個(gè)node_modules文件夾
image.png

好吧,用idea打開(kāi)啟動(dòng)看看藐唠,效果是一樣的
image.png

頁(yè)面效果
image.png

如果我想看看app2的怎么辦帆疟?把a(bǔ)pp.vue刪掉?


image.png

看來(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í)行看看

image.png

當(dāng)然津函,具體操作官網(wǎng)有截圖肖粮,很詳細(xì),我只對(duì)比差異尔苦,算了我還是一步步來(lái)吧涩馆!
image.png

上面的預(yù)設(shè)是指我之前創(chuàng)建項(xiàng)目后把我的設(shè)置操作保存成模板行施,下次再創(chuàng)建項(xiàng)目時(shí),直接選擇預(yù)設(shè)的模板創(chuàng)建一個(gè)一模一樣的項(xiàng)目是不是很快很方便魂那。但是這里選擇最下面的手動(dòng)創(chuàng)建
image.png

這是官網(wǎng)的截圖
image.png

哦蛾号!發(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)鍵盤上下箭頭用空格可以選擇和取消)精刷,是這樣的
image.png

讓選vue.js版本,我們先選3.x蔗候,回車?yán)^續(xù)
image.png

選擇ESLint + Standard config繼續(xù)
image.png

回車?yán)^續(xù)
image.png

下個(gè)頁(yè)面輸入n怒允,不保存預(yù)設(shè),繼續(xù)锈遥,然后完成看看項(xiàng)目結(jié)構(gòu)
image.png

image.png

好的再來(lái)一遍纫事,這回我們選擇2.x

image.png

看看項(xiàng)目結(jié)構(gòu),沒(méi)什么兩樣迷殿,區(qū)別在這里"vue": "^2.6.11"儿礼,vue-cli的版本和vue.js的版本不要搞混,前者在cmd中用命令vue -V查看庆寺,后者在項(xiàng)目里配置依賴管理里面查看package.json
image.png

image.png

好的再來(lái)一遍蚊夫,這次用2.x 加個(gè)路由Router
image.png

看看項(xiàng)目結(jié)構(gòu),多了些東西
image.png

好了懦尝,到這里可以放心大膽的創(chuàng)建項(xiàng)目了知纷,有沒(méi)有坑?我們?cè)囋嚳础?br> 等等陵霉,還有些騷操作琅轧,你的創(chuàng)建項(xiàng)目方式怎么跟網(wǎng)上的不一樣,別人用的是這個(gè)命令
vue init webpack hello-world
那就試試看唄
image.png

靠踊挠,報(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)了

image.png

然后一問(wèn)一答剩檀,就不多說(shuō)啦
image.png

看看項(xiàng)目結(jié)構(gòu)憋沿,咦!是這樣子啟動(dòng)的npm run dev
image.png

image.png

好了沒(méi)什么大驚小怪的沪猴,再來(lái)一遍加上router康康


image.png

一樣的操作辐啄,但是有兩個(gè)yes采章,康康項(xiàng)目結(jié)構(gòu)


image.png

沒(méi)啥特別的,多了router而已壶辜,多了eslint
image.png

那么我想用回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吧

圖片.png

算了我老老實(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中看效果

image.png

但是前提是你先安裝了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,查看效果


image.png

點(diǎn)擊選項(xiàng)一捻脖,發(fā)生了跳轉(zhuǎn)


image.png

這是因?yàn)檫@里設(shè)置了
image.png

那么锐峭,為什么發(fā)生跳轉(zhuǎn),頁(yè)面怎么沒(méi)跳可婶?第一沿癞,首先得確認(rèn)有沒(méi)有這個(gè)路由路徑,你點(diǎn)擊了它會(huì)去全局的路由里面去找矛渴,那么全局路由是哪一個(gè)噻椎扬?沒(méi)猜錯(cuò)的話是這一個(gè)


image.png

那么我在app.vue里玩兒怎么能找到你router呢?所以早就幫你在創(chuàng)建項(xiàng)目時(shí)就引入main.js里了具温,main.js當(dāng)然就是全局的啦蚕涤,同理你的router也是在App.vue里隨便調(diào)用了
image.png

但是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)單
image.png

我們來(lái)試試看,改一下菜單路由index="/home"萄焦,home可以看做路徑控轿,可以隨便命名,但是斜杠不能少拂封,哪怕少了路徑名稱也不能少斜杠
image.png

修改一下全局路由文件index.js,同理哪怕少了路徑名稱也不能少斜杠茬射,路徑名稱要一致
image.png

好的,啟動(dòng)看效果冒签,我們來(lái)跳轉(zhuǎn)一下在抛,我們通過(guò)路由找到了這個(gè)組件頁(yè)面,就是當(dāng)初的helloworld.vue組件


image.png

就這樣萧恕,以后我們基本上就在這個(gè)視口 <router-view/>里書寫人生刚梭,施展奇技淫巧。
同樣的操作我們?cè)賮?lái)一遍

這時(shí)我們創(chuàng)建一個(gè)不帶路由的vue-cli2.x票唆,引入elementui的menu

image.png

啟動(dòng)npm run dev一氣呵成朴读,點(diǎn)擊,跳轉(zhuǎn)走趋,沒(méi)反應(yīng)衅金!我嚓!
image.png

爆紅吆视!表示找不到典挑?不存在?沒(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è)面顯示白板造垛,什么都顯示不出


image.png

注釋掉<router-view/>可以正常顯示


image.png

點(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)


image.png

結(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)上資源理解太片面容易踩坑荣回。

不管vue-cli3.x還是vue-cli2.x關(guān)于路由引入,一種是創(chuàng)建項(xiàng)目是勾選自動(dòng)安裝一切幫你搭建好了戈咳,另一種手動(dòng)引入心软,首先執(zhí)行安裝命令,然后手動(dòng)創(chuàng)建配置路由的index.js文件著蛙,在index.js文件里引入vue-router删铃,然后把這個(gè)index.js文件引入main.js,那么就大功告成了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末踏堡,一起剝皮案震驚了整個(gè)濱河市猎唁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌顷蟆,老刑警劉巖诫隅,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件缎患,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡阎肝,警方通過(guò)查閱死者的電腦和手機(jī)挤渔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)风题,“玉大人判导,你說(shuō)我怎么就攤上這事∨婀瑁” “怎么了眼刃?”我有些...
    開(kāi)封第一講書人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)摇肌。 經(jīng)常有香客問(wèn)我擂红,道長(zhǎng),這世上最難降的妖魔是什么围小? 我笑而不...
    開(kāi)封第一講書人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任昵骤,我火速辦了婚禮,結(jié)果婚禮上肯适,老公的妹妹穿的比我還像新娘变秦。我一直安慰自己,他們只是感情好框舔,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布蹦玫。 她就那樣靜靜地躺著,像睡著了一般刘绣。 火紅的嫁衣襯著肌膚如雪樱溉。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 50,096評(píng)論 1 291
  • 那天纬凤,我揣著相機(jī)與錄音福贞,去河邊找鬼。 笑死移斩,一個(gè)胖子當(dāng)著我的面吹牛肚医,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播向瓷,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼肠套,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了猖任?” 一聲冷哼從身側(cè)響起你稚,我...
    開(kāi)封第一講書人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后刁赖,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體搁痛,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年宇弛,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸡典。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡枪芒,死狀恐怖彻况,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情舅踪,我是刑警寧澤纽甘,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布,位于F島的核電站抽碌,受9級(jí)特大地震影響悍赢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜货徙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一左权、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧破婆,春花似錦涮总、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)烹笔。三九已至裳扯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間谤职,已是汗流浹背饰豺。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留允蜈,地道東北人冤吨。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像饶套,于是被迫代替她去往敵國(guó)和親漩蟆。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容