vue2.0一起在懵逼的海洋里越陷越深(二)

承接上文vue2.0一起在懵逼的海洋里越陷越深(一)

說好了一起懵逼,那么我們繼續(xù)下沉

在上一篇里已經(jīng)將vue2.0需要的依賴都裝齊了
那么接下來


因?yàn)関ue最后生成的頁面看似靜態(tài)頁面(對于靜態(tài)頁面這里有些偷雞用法,不管你怎樣簇秒,反正我已經(jīng)露出了詭異的微笑??,再貼一個(gè)vue2.0 demo的項(xiàng)目地址耘擂,大爺有興趣可進(jìn)去看看演示蓖租,開心了就加個(gè)星),其實(shí)卻是個(gè)SPA(單頁面應(yīng)用)
沒錯(cuò)饭玲!就是一個(gè)SPA

作為一個(gè)SPA侥祭,當(dāng)然有不同的地方

SPA與傳統(tǒng)網(wǎng)頁區(qū)別的地方是SPA具有前端路由來模擬頁面跳轉(zhuǎn),當(dāng)然這是眾多不同之一茄厘,這篇只說前端路由矮冬。
上一篇中有安裝vue-router組件,這個(gè)就是vue的前端路由
vue + vue-router簡直是爽次哈,頁面跳轉(zhuǎn)的速度簡直是不要不要的
不光是用戶體驗(yàn)上的提升胎署,作為一名開發(fā)者,在使用了如vue窑滞,react等這類MVVM框架后琼牧,就不會(huì)再想回到j(luò)Query的時(shí)代了。

前面搞了半天葛假,現(xiàn)在要開始coding啦障陶!

好的,用自己的小編輯器打開vue項(xiàng)目(我用的是sublime)
可以看到項(xiàng)目目錄是這樣子的

files-tree

(插一句聊训,如果喜歡這個(gè)sublime主題可以查看這篇文章)
與自己的目錄對比發(fā)現(xiàn)少幾個(gè)文件抱究,那是沒有什么關(guān)系的,接下來要做的就是去創(chuàng)建這些文件带斑。

作為一個(gè)SPA鼓寺,首先要有路由

從目錄圖片里可以看到main.js這個(gè)文件勋拟,沒錯(cuò)這個(gè)就是程序的入口
這個(gè)文件的內(nèi)容是這樣的

import Vue from 'vue'
import router from './router'

import App from './App'

/* eslint-disable no-new */
new Vue({
  router,
  render: h => h(App)
}).$mount('#app')

main.js地址
這里用的是ES6的語法,使用import來導(dǎo)入包
這里導(dǎo)入了vue包妈候,還有兩個(gè)文件敢靡,分別是router.jsApp.vue
.js后綴是可以省略的(畢竟是親生的,你不說導(dǎo)入什么類型的文件苦银,肯定是自家人畢竟親呀)
其實(shí).vue后綴也是可以省略的啸胧,我建議還是寫一下,如果遇到兩個(gè)同名文件就尷尬了幔虏。

好的纺念,這個(gè)router.js就是路由的輸出口啦,
App.vue就是目錄里已經(jīng)存在的那個(gè)模板文件啦想括,你的界面就從這里開始啦陷谱。
引入了包就可以開始設(shè)置路由和掛載模板了

順帶一提,可以看到在new Vue()時(shí)傳入了一個(gè)對象瑟蜈,但是這個(gè)對象卻不是鍵值對烟逊,
是這樣,這是ES6的一種語法铺根,當(dāng)引用的變量名和鍵名相同時(shí)宪躯,就可以簡寫成這樣
如果還原來是這樣的

new Vue({
  router: router,
  render: h => h(App)
}).$mount('app')
// 被簡寫成了
new Vue({
  router, // 這是ES6對象的簡寫,擴(kuò)展開就是router: router
  // 箭頭函數(shù)(=>)是ES6的新語法
  render: h => h(App) // 這里擴(kuò)展開就是render: (h) => { return h(App) }
}).$mount('app')

PS:ES6的新語法現(xiàn)在網(wǎng)上文章已經(jīng)有很多了夷都,我之后也會(huì)發(fā)一版常用的語法

那么現(xiàn)在在src目錄下創(chuàng)建router.js文件

內(nèi)容是這樣的:

import Vue from 'vue'
import VueRouter from 'vue-router'
import routes from './routes'

// 告訴vue要使用router
Vue.use(VueRouter)

/* eslint-disable no-new */
// 實(shí)例化router對象
const router = new VueRouter({
  mode: 'hash', // 設(shè)置路由模式 可選值: "hash" | "history" | "abstract"眷唉,默認(rèn)"hash"
  linkActiveClass: 'u-link--Active', // 這是鏈接激活時(shí)的class
  // base: '/app/', // 這個(gè)是設(shè)置根目錄路徑,一般用不到囤官,默認(rèn)'/'
  routes // 掛載路由集合 后面會(huì)說
})
// 導(dǎo)出router對象
export default router

這是router.js地址
這里引入了兩個(gè)包vue,vue-router和一個(gè)包含路由集合的routes.js文件
整個(gè)文件的邏輯就是冬阳,使用Vue.use()方法告訴vue我們使用了路由
然后就大大方方的導(dǎo)出路由對象

main.js router

這個(gè)時(shí)候main.js里就可以接受到這里導(dǎo)出的路由對象,并掛載到vue對象上

在src目錄下創(chuàng)建routes.js文件

routes.js是用來放置路由集合的文件
其實(shí)路由集合是可以寫在router.js里的党饮,這里為什么不寫在一起呢肝陪?
因?yàn)楫?dāng)路由集合變得龐大時(shí),如果還是寫在router.js里刑顺,就會(huì)顯得擁擠氯窍,不便于閱讀
所以這里推薦單獨(dú)寫出來。
同時(shí)呢也可以創(chuàng)建路由所對應(yīng)的模板文件(.vue文件蹲堂,我把它稱為模板文件)狼讨,Article.vueHome.vue
模板文件叫什么名由自己決定,于是就能看到這張圖里所有文件都齊了

files-tree

那么在編寫routes.js文件之前柒竞,需要先寫好兩個(gè)模板的內(nèi)容(不然一會(huì)有沒有成功都不清楚了政供,23333)

好的,貼一下home.vue的內(nèi)容

<template lang="pug">
.home
  h1.l-ta--c Material Desgin
</template>

<script>
  export default {
    data () {
      return {
      }
    }
  }
</script>

<style lang="stylus">
</style>

vue模板是html結(jié)構(gòu)的,這也是對界面編寫最友好的方式
里面的<template> </template>標(biāo)簽就是視圖
<script></script>就是js布隔,這個(gè)沒有爭議
<style></style>是寫css的离陶,這個(gè)也沒有問題
但是當(dāng)仔細(xì)看我的代碼,發(fā)現(xiàn)里面html使用了pug衅檀,css使用了stylus
其實(shí)不用他們也是可行的招刨,只是用pug和stylus寫結(jié)構(gòu)比較清晰
不用也可以的
如果要使用,請打開你的終端哀军,給項(xiàng)目添加幾個(gè)包

npm i pug stylus stylus-loader -D

里面的css的class(.l-ta--c)看著有點(diǎn)懵逼的沉眶,可以看看使用BEM+emmet的css書寫與命名技巧
好的,模板不需要太復(fù)雜排苍,只要有字能顯示就好了沦寂,至于Article.vue也是一樣的学密,這里就不貼了

Tips:模板里推薦有一個(gè)根元素淘衙,就像這里的.home就是根元素,這樣不容易混亂腻暮,結(jié)構(gòu)會(huì)清晰

寫好了模板就可以開始編寫routes.js

先貼代碼!

// 導(dǎo)入之前寫好的兩個(gè)模板
import Home from './components/Home.vue'
import Article from './components/Article.vue'

// 編寫路由集合
const routes = [
  {
    name: 'Home', // 路由名彤守,這個(gè)字段是可選的
    path: '/', // 路由路徑,這里是根路徑所以是'/'
    component: Home // 模板
  }, // 這些是常用的
  {
    name: 'Article',
    path: '/article',
    component: Article
  }
]
// 導(dǎo)出路由集合
export default routes

然后是文件地址
最后導(dǎo)出了路由集合(routes)后就可以在router.js里使用了
于是哭靖,前面的router.js里的routes就有了具垫。

現(xiàn)在進(jìn)行最后一步,到App.vue里添加路由

代碼如下:

<template lang="pug">
  .app
    header
      //- 制作一個(gè)跳轉(zhuǎn)鏈接
      //- 這里不要直接用a鏈接跳轉(zhuǎn)试幽,那樣會(huì)導(dǎo)致頁面重載筝蚕,
      //- 相比之下用router-link是高效的方案
      //- to屬性就是鏈接的地址啦
      router-link(to="/") home
      router-link(to="/article") article
    bodyer
      //- 路由地址所對應(yīng)的模板將會(huì)被掛載到router-view標(biāo)簽上
      router-view
</template>

<script>
  export default {
    data () {
      return {
      }
    }
  }
</script>

<style lang="stylus">
</style>

地址
好了,到此為止就完成了路由搭建與使用了铺坞。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末起宽,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子济榨,更是在濱河造成了極大的恐慌坯沪,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件擒滑,死亡現(xiàn)場離奇詭異腐晾,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)丐一,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門藻糖,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人库车,你說我怎么就攤上這事巨柒。” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵潘拱,是天一觀的道長疹鳄。 經(jīng)常有香客問我,道長芦岂,這世上最難降的妖魔是什么瘪弓? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮禽最,結(jié)果婚禮上腺怯,老公的妹妹穿的比我還像新娘。我一直安慰自己川无,他們只是感情好呛占,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著懦趋,像睡著了一般晾虑。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仅叫,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天帜篇,我揣著相機(jī)與錄音,去河邊找鬼诫咱。 笑死笙隙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坎缭。 我是一名探鬼主播竟痰,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掏呼!你這毒婦竟也來了坏快?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對情侶失蹤哄尔,失蹤者是張志新(化名)和其女友劉穎假消,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體岭接,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡富拗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了鸣戴。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片啃沪。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖窄锅,靈堂內(nèi)的尸體忽然破棺而出创千,到底是詐尸還是另有隱情缰雇,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布追驴,位于F島的核電站械哟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏殿雪。R本人自食惡果不足惜暇咆,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望丙曙。 院中可真熱鬧爸业,春花似錦、人聲如沸亏镰。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽索抓。三九已至钧忽,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間纸兔,已是汗流浹背惰瓜。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留汉矿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓备禀,卻偏偏與公主長得像洲拇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子曲尸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

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