一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

Vue基礎(chǔ)知識總結(jié)(絕對經(jīng)典)

 明滅的煙頭 2020-10-24

昨天晚上23:00,Vue,正式打響第一槍!轉(zhuǎn)行三年半,向全棧邁進(jìn),爭取三年內(nèi)可以成為架構(gòu)師,成為世界500強(qiáng)公司的中流砥柱,fighting從未停止,加油!

一、簡介

Vue(讀音 /vju?/,類似于 view) 是一套用于構(gòu)建用戶界面的漸進(jìn)式JavaScript框架。與其它框架不同的是,Vue被設(shè)計(jì)為可以自底向上逐層應(yīng)用。Vue的核心庫只關(guān)注視圖層,方便與第三方庫或既有項(xiàng)目整合。另一方面,Vue 完全有能力驅(qū)動(dòng)采用單文件組件和Vue生態(tài)系統(tǒng)支持的庫開發(fā)的復(fù)雜單頁應(yīng)用。

Vue.js 的目標(biāo)是通過盡可能簡單的 API 實(shí)現(xiàn)響應(yīng)的數(shù)據(jù)綁定和組合的視圖組件。

二、Vue.js實(shí)現(xiàn)hello world

  1. <!DOCTYPE html>
  2. <html lang='en'>
  3. <head>
  4. <meta charset='UTF-8'>
  5. <meta name='viewport' content='width=device-width, initial-scale=1.0'>
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <div id='app'>
  10. <!--插值表達(dá)式,綁定vue中的data數(shù)據(jù)-->
  11. {{message}}
  12. </div>
  13. <script src='vue.min.js'></script>
  14. <script>
  15. //1、創(chuàng)建一個(gè)vue對象
  16. new Vue({
  17. el: '#app',//2、綁定vue作用的范圍
  18. data: {//3、定義頁面中顯示的模型數(shù)據(jù)
  19. message: 'hello vue!'
  20. }
  21. })
  22. </script>
  23. </body>
  24. </html>

三、創(chuàng)建代碼片段

文件 =>  首選項(xiàng) => 用戶代碼片段 => 新建全局代碼片段/或文件夾代碼片段:vue-html.code-snippets

  1. {
  2. 'vue htm': {
  3. 'scope': 'html',
  4. 'prefix': 'vuehtml',
  5. 'body': [
  6. '<!DOCTYPE html>',
  7. '<html lang=\'en\'>',
  8. '',
  9. '<head>',
  10. ' <meta charset=\'UTF-8\'>',
  11. ' <meta name=\'viewport\' content=\'width=device-width, initial-scale=1.0\'>',
  12. ' <meta http-equiv=\'X-UA-Compatible\' content=\'ie=edge\'>',
  13. ' <title>Document</title>',
  14. '</head>',
  15. '',
  16. '<body>',
  17. ' <div id=\'app\'>',
  18. '',
  19. ' </div>',
  20. ' <script src=\'vue.min.js\'></script>',
  21. ' <script>',
  22. ' new Vue({',
  23. ' el: '#app',',
  24. ' data: {',
  25. ' $1',
  26. ' }',
  27. ' })',
  28. ' </script>',
  29. '</body>',
  30. '',
  31. '</html>',
  32. ],
  33. 'description': 'my vue template in html'
  34. }
  35. }

四、基礎(chǔ)語法

1、單向綁定數(shù)據(jù)v-bind

你看到的 v-bind 特性被稱為指令。指令帶有前綴 v- 

除了使用插值表達(dá)式{{}}進(jìn)行數(shù)據(jù)渲染,也可以使用 v-bind指令,它的簡寫的形式就是一個(gè)冒號(:)

2、雙向綁定數(shù)據(jù)v-model

  1. data: {
  2. searchMap:{
  3. keyWord: '素小暖'
  4. }
  5. }
  1. <!-- v-bind:value只能進(jìn)行單向的數(shù)據(jù)渲染 -->
  2. <input type='text' v-bind:value='searchMap.keyWord'>
  3. <!-- v-model 可以進(jìn)行雙向的數(shù)據(jù)綁定 -->
  4. <input type='text' v-model='searchMap.keyWord'>
  5. <p>您要查詢的是:{{searchMap.keyWord}}</p>

3、方法methods

4、修飾符

修飾符 (Modifiers) 是以半角句號(.)指明的特殊后綴,用于指出一個(gè)指令應(yīng)該以特殊方式綁定。

例如,.prevent 修飾符告訴 v-on 指令對于觸發(fā)的事件調(diào)用 event.preventDefault():

即阻止事件原本的默認(rèn)行為

5、條件渲染

v-if:條件指令

  1. <input type='checkbox' v-model='ok'>同意許可協(xié)議
  2. <!-- v:if條件指令:還有v-else、v-else-if 切換開銷大 -->
  3. <h1 v-if='ok'>if:Lorem ipsum dolor sit amet.</h1>
  4. <h1 v-else>no</h1>

v-show:條件指令

使用v-show完成和上面相同的功能

  1. <!-- v:show 條件指令 初始渲染開銷大 -->
  2. <h1 v-show='ok'>show:Lorem ipsum dolor sit amet.</h1>
  3. <h1 v-show='!ok'>no</h1>
  • v-if 是“真正”的條件渲染,因?yàn)樗鼤_保在切換過程中條件塊內(nèi)的事件監(jiān)聽器和子組件適當(dāng)?shù)乇讳N毀和重建。
  • v-if 也是惰性的:如果在初始渲染時(shí)條件為假,則什么也不做——直到條件第一次變?yōu)檎鏁r(shí),才會開始渲染條件塊。
  • 相比之下,v-show 就簡單得多——不管初始條件是什么,元素總是會被渲染,并且只是簡單地基于 CSS 進(jìn)行切換。
  • 一般來說,v-if 有更高的切換開銷,而 v-show 有更高的初始渲染開銷。因此,如果需要非常頻繁地切換,則使用 v-show 較好;如果在運(yùn)行時(shí)條件很少改變,則使用 v-if 較好。

6、列表渲染

v-for:列表循環(huán)指令

例1:簡單的列表渲染

  1. <!-- 1、簡單的列表渲染 -->
  2. <ul>
  3. <li v-for='n in 10'>{{ n }} </li>
  4. </ul>
  5. <ul>
  6. <!-- 如果想獲取索引,則使用index關(guān)鍵字,注意,圓括號中的index必須放在后面 -->
  7. <li v-for='(n, index) in 5'>{{ n }} - {{ index }} </li>
  8. </ul>

例2:遍歷數(shù)據(jù)列表

  1. data: {
  2.     userList: [
  3.         { id: 1, username: 'helen', age: 18 },
  4.         { id: 2, username: 'peter', age: 28 },
  5.         { id: 3, username: 'andy', age: 38 }
  6.     ]
  7. }
  1. <!-- 2、遍歷數(shù)據(jù)列表 -->
  2. <table border='1'>
  3. <!-- <tr v-for='item in userList'></tr> -->
  4. <tr v-for='(item, index) in userList'>
  5. <td>{{index}}</td>
  6. <td>{{item.id}}</td>
  7. <td>{{item.username}}</td>
  8. <td>{{item.age}}</td>
  9. </tr>
  10. </table>

 五、組件

組件(Component)是 Vue.js 最強(qiáng)大的功能之一。

組件可以擴(kuò)展 HTML 元素,封裝可重用的代碼。

組件系統(tǒng)讓我們可以用獨(dú)立可復(fù)用的小組件來構(gòu)建大型應(yīng)用,幾乎任意類型的應(yīng)用的界面都可以抽象為一個(gè)組件樹:

1、局部組件

  1. var app = new Vue({
  2. el: '#app',
  3. // 定義局部組件,這里可以定義多個(gè)局部組件
  4. components: {
  5. //組件的名字
  6. 'Navbar': {
  7. //組件的內(nèi)容
  8. template: '<ul><li>首頁</li><li>學(xué)員管理</li></ul>'
  9. }
  10. }
  11. })

使用組件

  1. <div id='app'>
  2. <Navbar></Navbar>
  3. </div>

2、全局組件

 定義全局組件:components/Navbar.js

  1. // 定義全局組件
  2. Vue.component('Navbar', {
  3. template: '<ul><li>首頁</li><li>學(xué)員管理</li><li>講師管理</li></ul>'
  4. })
  1. <div id='app'>
  2. <Navbar></Navbar>
  3. </div>
  4. <script src='vue.min.js'></script>
  5. <script src='components/Navbar.js'></script>
  6. <script>
  7. var app = new Vue({
  8. el: '#app'
  9. })
  10. </script>

 六、生命周期

分析生命周期相關(guān)方法的執(zhí)行時(shí)機(jī)

  1. //===創(chuàng)建時(shí)的四個(gè)事件
  2. beforeCreate() { // 第一個(gè)被執(zhí)行的鉤子方法:實(shí)例被創(chuàng)建出來之前執(zhí)行
  3. console.log(this.message) //undefined
  4. this.show() //TypeError: this.show is not a function
  5. // beforeCreate執(zhí)行時(shí),data 和 methods 中的 數(shù)據(jù)都還沒有沒初始化
  6. },
  7. created() { // 第二個(gè)被執(zhí)行的鉤子方法
  8. console.log(this.message) //床前明月光
  9. this.show() //執(zhí)行show方法
  10. // created執(zhí)行時(shí),data 和 methods 都已經(jīng)被初始化好了!
  11. // 如果要調(diào)用 methods 中的方法,或者操作 data 中的數(shù)據(jù),最早,只能在 created 中操作
  12. },
  13. beforeMount() { // 第三個(gè)被執(zhí)行的鉤子方法
  14. console.log(document.getElementById('h3').innerText) //{{ message }}
  15. // beforeMount執(zhí)行時(shí),模板已經(jīng)在內(nèi)存中編輯完成了,尚未被渲染到頁面中
  16. },
  17. mounted() { // 第四個(gè)被執(zhí)行的鉤子方法
  18. console.log(document.getElementById('h3').innerText) //床前明月光
  19. // 內(nèi)存中的模板已經(jīng)渲染到頁面,用戶已經(jīng)可以看見內(nèi)容
  20. },
  21. //===運(yùn)行中的兩個(gè)事件
  22. beforeUpdate() { // 數(shù)據(jù)更新的前一刻
  23. console.log('界面顯示的內(nèi)容:' + document.getElementById('h3').innerText)
  24. console.log('data 中的 message 數(shù)據(jù)是:' + this.message)
  25. // beforeUpdate執(zhí)行時(shí),內(nèi)存中的數(shù)據(jù)已更新,但是頁面尚未被渲染
  26. },
  27. updated() {
  28. console.log('界面顯示的內(nèi)容:' + document.getElementById('h3').innerText)
  29. console.log('data 中的 message 數(shù)據(jù)是:' + this.message)
  30. // updated執(zhí)行時(shí),內(nèi)存中的數(shù)據(jù)已更新,并且頁面已經(jīng)被渲染
  31. }

 七、路由

Vue.js 路由允許我們通過不同的 URL 訪問不同的內(nèi)容。

通過 Vue.js 可以實(shí)現(xiàn)多視圖的單頁Web應(yīng)用(single page web application,SPA)。

Vue.js 路由需要載入 vue-router 庫

1、引入js

  1. <script src='vue.min.js'></script>
  2. <script src='vue-router.min.js'></script>

2、編寫html

  1. <div id='app'>
  2. <h1>Hello App!</h1>
  3. <p>
  4. <!-- 使用 router-link 組件來導(dǎo)航. -->
  5. <!-- 通過傳入 `to` 屬性指定鏈接. -->
  6. <!-- <router-link> 默認(rèn)會被渲染成一個(gè) `<a>` 標(biāo)簽 -->
  7. <router-link to='/'>首頁</router-link>
  8. <router-link to='/student'>會員管理</router-link>
  9. <router-link to='/teacher'>講師管理</router-link>
  10. </p>
  11. <!-- 路由出口 -->
  12. <!-- 路由匹配到的組件將渲染在這里 -->
  13. <router-view></router-view>
  14. </div>

3、編寫js

  1. <script>
  2. // 1. 定義(路由)組件。
  3. // 可以從其他文件 import 進(jìn)來
  4. const Welcome = { template: '<div>歡迎</div>' }
  5. const Student = { template: '<div>student list</div>' }
  6. const Teacher = { template: '<div>teacher list</div>' }
  7. // 2. 定義路由
  8. // 每個(gè)路由應(yīng)該映射一個(gè)組件。
  9. const routes = [
  10. { path: '/', redirect: '/welcome' }, //設(shè)置默認(rèn)指向的路徑
  11. { path: '/welcome', component: Welcome },
  12. { path: '/student', component: Student },
  13. { path: '/teacher', component: Teacher }
  14. ]
  15. // 3. 創(chuàng)建 router 實(shí)例,然后傳 `routes` 配置
  16. const router = new VueRouter({
  17. routes // (縮寫)相當(dāng)于 routes: routes
  18. })
  19. // 4. 創(chuàng)建和掛載根實(shí)例。
  20. // 從而讓整個(gè)應(yīng)用都有路由功能
  21. const app = new Vue({
  22. el: '#app',
  23. router
  24. })
  25. // 現(xiàn)在,應(yīng)用已經(jīng)啟動(dòng)了!
  26. </script>

上一篇:Spring Boot + Vue 全棧開發(fā),都需要哪些前端知識?

下一篇:瞧不起CRUD?Vue 神帶你領(lǐng)略王者級CRUD程序媛的風(fēng)采

    本站是提供個(gè)人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    亚洲一区二区三区国产| 大香蕉久久精品一区二区字幕| 日韩国产中文在线视频| 少妇人妻一级片一区二区三区| 欧美成人免费视频午夜色| 我想看亚洲一级黄色录像| 国产日韩综合一区在线观看| 99久久成人精品国产免费| 特黄大片性高水多欧美一级| 亚洲精品福利视频你懂的| 高中女厕偷拍一区二区三区| 日本一本不卡免费视频| 少妇福利视频一区二区| 亚洲国产91精品视频| 欧美老太太性生活大片| 高清免费在线不卡视频| 国产精品内射婷婷一级二级| 日韩欧美一区二区不卡看片| 国产亚洲欧美一区二区| 丝袜视频日本成人午夜视频| 亚洲一二三四区免费视频| 国产精品免费精品一区二区| 手机在线不卡国产视频| 国产精品国产亚洲看不卡| 人体偷拍一区二区三区| 中文字幕精品人妻一区| 国产传媒一区二区三区| 日本高清视频在线播放| 久久大香蕉一区二区三区| 日韩国产亚洲一区二区三区| 国产白丝粉嫩av在线免费观看| 欧美日韩一区二区午夜| a久久天堂国产毛片精品| 国产又粗又爽又猛又黄的| 婷婷一区二区三区四区| 人人爽夜夜爽夜夜爽精品视频| 国产免费一区二区不卡| 久热99中文字幕视频在线| 风韵人妻丰满熟妇老熟女av| 亚洲最新中文字幕一区| 亚洲精品熟女国产多毛|