初學vue.js記錄

前言

本人剛開始學習vue.js幾天,作了一些練習以後,鑑於每隔一段時間就把學習過的內容總結一番,故此寫下此文章。
初學Vue.js應該學習哪些知識css

一、 vue2.0html

主要學習基礎知識。首先是引入vue.js,能夠在網頁中直接引入cdn的連接,或者在本地搭建環境,使用腳手架工具幫你快速搭建項目,具體環境搭建過程可參考官方文檔。而後是基礎語法,如何渲染數據,熟悉它的各類指令,條件渲染或者循環渲染數據等。可大體瞭解一下生命週期與鉤子函數,能夠暫時跳過。接下來要學習如何寫函數,計算屬性。最後要會建立組件與引用組件,到此,你算是入門了。給兩連接:
Vue.js2.0官方文檔:https://cn.vuejs.org/v2/guide/
幾個小練習:https://www.cnblogs.com/wuhao...vue

二、 vue-routerjquery

在項目開發中,常常會用到路由,因此學會如何構建路由是必須的。
vue-router官方文檔:https://router.vuejs.org/zh-c...ios

三、vuexcss3

這是一個vue中的狀態管理倉庫,咱們能夠藉助它來存儲一些數據。由於它能被全局訪問,因此能借助它來實現不一樣組件之間的通訊。git

四、axiosangularjs

若是你學習過jquery,它與jquery裏的ajax相似,是發送請求,交互數據的工具。
github學習地址:https://github.com/axios/axiosgithub

正文

基礎知識就不一一介紹了~~ajax

生命週期
vue.js爲vue實例劃分了從建立到結束各類不一樣的階段,把這些階段稱爲生命週期,同時在不一樣的過程當中也會運行一些叫作生命週期鉤子的函數,咱們能經過這些函數,在不一樣階段添加相應的代碼。
總共可分爲8個階段:

beforeCreate(建立前),
created(建立後),
beforeMount(載入前),
mounted(載入後),
beforeUpdate(更新前),
updated(更新後),
beforeDestroy(銷燬前),
destroyed(銷燬後)

使用舉例:
beforecreate : 舉個栗子:能夠在這加個loading事件
created :在這結束loading,還作一些初始化,實現函數自執行
mounted : 在這發起後端請求,拿回數據,配合路由鉤子作一些事情
beforeDestory: 你確認刪除XX嗎? destoryed :當前組件已被刪除,清空相關內容

計算屬性
在對某些值進行一系列邏輯算法時,雖然能直接在模板內書寫,可是模板中的邏輯代碼太多會讓模板太重而且難以維護,因此在此時應當使用計算屬性。
計算屬性默認只有getter,但咱們還能加上setter,經過getter獲取一些值來進行一系列的計算來返回值,而setter能夠設置值,做用到data裏面的數據。

條件渲染
在以前的編程中,要想隱藏一個元素有4種方式:display:none,visibility:hidden,opacity:0,position:absolute;left:50000px;top:50000px,而在vue.js裏面是使用條件渲染v-if,v-show。v-show就是控制元素的display樣式來顯示隱藏,元素老是會被渲染的,而v-if是控制渲染與否,這就是他們的區別。

列表渲染
以前看了一點點angularjs和小程序,發現它們都有相似的列表渲染方式。這種方式與js裏面的for in循環很像,爲列表的每一項取個名字用來表示每一項,而後經過這個名字來訪問每一項數據。若是會for in循環那麼很容易接受,只不過每一項寫在{{}}裏。

事件處理與修飾符
事件經過v-on指令來綁定,在js中事件爲on+事件名,因此v-on是很好記憶的。而vue還提供了很是簡便的方法來幫助事件處理,如阻止冒泡,只須要在v-on+事件名後使用.stop就行,而不用像原生js寫一大行。修飾符還能夠串聯使用。在vue中有不少修飾符可幫助咱們減小代碼量。

組件
組件其實就是提取一段代碼,讓它在單獨的文件中,當要使用的時候引入就行。當某段代碼大量重複的時候它可起了大做用。組件分爲局部組件與全局組件。局部組件是在某個頁面須要的時候在這個頁面引入,而全局組件是在main.js入口文件中註冊,其它頁面不用單獨引入,能夠直接使用。
局部組件引入方法:
一、簡單的組件能夠直接在對應實例裏面加入components項,使用鍵值對的形式寫代碼。

export default {
  name: 'App',
  components:{
      'child':{
          template:'<span>{{msg}},我叫{{name}},今年{{age}}歲了,{{sex}}</span>',
          props:['msg','name','age','sex'],
     }

}
二、複雜點的結構不方便直接用引號寫,這時可單獨寫一個頁面並導出,在使用的頁面引入,而且取別名,在用鍵值對寫到components裏。

<template>
    <div>
        我是單獨vue文件裏建立的組件
    </div>
</template>
<script>
    export default{
        name:'child',
    }
</script>

而後在要使用的頁面引入,並註冊:
import child from './components/child'
<script>
    export default{
        name:'dad',
        components:{
            'my-clild':child
        }
    }
</script>

全局組件:
與局部組件引入相似,還能夠給主實例取名Vue,而後經過Vue.components的方式添加。

Vue.component('my-child',child)
new Vue({
  el: '#app',
  router,
  components: { App },
})

使用props在組件之間傳值
子組件有時須要動態地顯示一些數據而不是直接寫靜態的。這時可經過props來獲取父組件傳遞的值並寫入模板,父組件可經過在子組件寫入屬性的方式傳遞數據。
不過上面的都是父組件向子組件傳值,可是子組件如何和父組件通訊?這時就須要用到自定義事件了,子組件可經過$emit來主動讓本身觸發一個事件,父組件監聽這些自定義事件的名稱就能夠實現通訊。

插槽
有時候子組件內容可能還須要父組件添加,這時候插槽slot就派上用場了。在子組件內定義插槽能夠接收父組件寫在元素之間的內容。當沒有插槽的時候這些內容徹底沒做用,可是有預留插槽時,內容會被嵌入子組件插槽的位置。插槽還能夠有多個,這時候須要給插槽一個name屬性,父組件的內容須要有slot屬性,這樣多個內容能插入到相應的位置。

過渡
在元素進行顯示隱藏等切換時,vue爲這些動做定義了6個狀態:
一、v-enter 二、v-enter-active 三、v-enter-to 四、v-leave 五、v-leave-active 六、v-leave-to
須要顯示過渡動畫的元素用transition元素包裹,而且取個name屬性。在樣式裏,使用name值替換上面的v,具體效果就是css3的過渡效果等。

過濾器
在把實例裏data的數據渲染進模板時還能夠對數據進行過濾,形式如{{msg | 過濾方法名}},在須要渲染的數據後面跟上管道符,並跟上要使用的過濾方法的名稱,一個簡單的過濾功能就ok了。過濾器還可使用多個,只須要重複管道符與方法名便可。

vuex的簡單使用
一、在目錄下引入vuex模塊:cnpm install vuex -S
二、在main.js中引入:import Vuex from 'vuex'

import store from './vuex/store'
        new Vue({
              el: '#app',
              store
        })

三、構建核心倉庫 store.js
Vuex 應用的狀態 state 都應當存放在 store.js 裏面,Vue 組件能夠從 store.js 裏面獲取狀態,能夠把 store 通俗的理解爲一個全局變量的倉庫。
可是和單純的全局變量又有一些區別,主要體如今當 store 中的狀態發生改變時,相應的 vue 組件也會獲得高效更新。
在 src 目錄下建立一個 vuex 目錄,將 store.js 放到 vuex 目錄下:

import Vue from 'vue'
    import Vuex from 'vuex'
    Vue.use(Vuex)
       const store = new Vuex.Store({
      // 定義狀態
          state: {
                  author: 'Wise Wrong'
         }
    })
    export default store

四、在組件中映射狀態

computed: {
  author () {
    return this.$store.state.author
  }
}

五、修改狀態
雖然直接賦值也能修改可是最好仍是使用官方推薦的mutations或者actions:
圖片描述

首先在 store.js 中定義一個方法 newAuthor,其中第一個參數 state 就是 $store.state,第二個參數 msg 須要另外傳入。
而後修改 header.vue 中的 setAuthor 方法
圖片描述

這裏使用 $store.commit 提交 newAuthor,並將 this.inputTxt 傳給 msg,從而修改 author。

這樣顯式地提交(commit) mutations,可讓咱們更好的跟蹤每個狀態的變化。
而actions相似,區別在於actions能夠異步執行。

心得體會
整個vue有不少的功能,我也正在摸索中,此篇就寫到這吧~對於新手而言,閱讀官方文檔是提高的好方法,在看過以後最好仍是多多練習示例,才能迅速貫通,再以後呢就多能夠去網上看看諸位大神的博客啊,論壇啥的,但願能對新入門的小夥伴有所幫助~!

友情提示:在我第一次看vue的時候啥也不懂,安裝環境的時候每次都要把網上的安裝教程重複一遍,到後來我才發現,由於前面幾個步驟的工具都裝在全局的,因此只須要裝一次就行,以後只須要初始化vue項目便可。。。但願後來的朋友少走彎路!

相關文章
相關標籤/搜索