Vue入門

一. 簡介Vue

官方文檔地址:https://cn.vuejs.org/index.html

Vue.js為漸進式JavaScript框架
Vue框架為MVVM框架, 即數據源與控件雙向綁定, 在實際項目中頻繁操作DOM節點, 僅僅只需要控制數據源數據即可,不用考慮頁面渲染.

二. Vue的基本知識

  1. Vue 2.x 框架的常用點(模板語法, 條件渲染, 列表渲染)
    簡介Vue的Hello Word應用
    模板語法, v-bind屬性綁定, 事件綁定
    條件渲染, 列表渲染, Class與Style的綁定

  2. Vue 2.x 核心技術(vue-router, vuex)
    Vue-cli工具, Vue代碼規范
    Vue組件的調試方法
    Vue-router, vuex

  3. 集成Vue2.x
    介紹workflow工作流
    單頁面Demo(動態表單,列表動態展示)
    使用Cli工具,開發常見的應用組件

三. Vue開發環境

IDE: WebStrom Or VS Code
Node.js: Node環境, NPM環境 (NVM, 多版本Node環境管理)
測試環境: Chrome, Vue.js
工程環境: Vue.js

終端輸入:
npm install vue-cli
完成之后 輸入
vue --version
進行查看是否安裝成功Vue環境

四. 創建第一個Vue項目

代碼如下

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <title>Page Title</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" type="text/css" media="screen" href="main.css" />
    <script src="main.js"></script>
    <style>
        .bg {
            color: cyan;
            font-size: 30px;
            font-weight: 200;
            background: magenta;
        }
    </style>
    <script src="https://cdn.bootcss.com/vue/2.6.3/vue.min.js"></script>
</head>

<body>
    <div id="aa" class="bg">
        <div class="a">{{msg}}</div>
        <div class="a">{{msg}}</div>
    </div>
    <script>
        new Vue({
            el: '#aa',
            data: {
                msg: "This is Vue"
            }
        })
    </script>

</body>

</html>

模板語法:
Vue的文件結構(template, script, style);
在標簽中可使用插值語法{{msg}}, 數據, 以及JS表達式,

模板語法包含插值, 指令(指令縮寫);
v-on:click 可以簡寫為@click
v-if
:href

計算屬性與監聽器
計算屬性: computed
數據聯動, 當計算屬性中的所有的數據均發生變化的時候,響應此方法.
能監聽多個變量,但是該變量必須是在Vue中的實例里.

computed: {
    msg1: function() {
        return 'computed' + this.msg;
    }
},

監聽器: watch
僅僅是監聽設備中的所有監聽Vue中的屬性值, 類似于iOS中的KVO.
異步場景
通常只監聽一個變量

// 監聽并觀察data的屬性數據變化,當方式變化的時候, 屬性變化新,舊值
watch: {
    msg: function(newVal, oldVal) {
        console.log(newVal);
        console.log(oldVal);
    }
},

條件渲染
v-if,
v-else,
v-else-if,
v-show,

// v-if, v-else, v-else-if, v-show之后的為JS表達式
<div v-if="count > 10">{{msg2}}</div>
<div v-else="count < 5">{{msg3}}</div>
<div v-show="count == 10">Count的值為{{count}}</div>

列表渲染
v-for

// list為數據源, item為遍歷的數據元素, :key則是標記了此條數據的Tag值
<div v-for="(item, index) in list" :key="index">
    <div>{{item}}</div>
</div>

v-for與v-if結合使用

<div v-for="(item, index) in list" :key="index" v-bind:style="styleTest">
    姓名為:{{item.name}} 年齡為:{{item.age}}
</div>

v-for的高階用法

Class與Style綁定

// 可以簡寫去掉v-bind
<div v-for="(item, index) in list" :key="index" :style="styleTest">
    姓名為:{{item.name}} 年齡為:{{item.age}}
</div>
// Class要綁定多個樣式使用[]進行加類的操作
<div class="['aa', 'bb']"></div>

Vue-cli工具
快速創建Vue工程

// 在終端中進入到指定的文件夾目錄
// 使用vue create demo 進行創建對應的Vue工程
// 完成之后進入demo文件夾下
// 使用 npm run serve進行運行此項目

// 或者使用vue ui進行創建新的Vue工程項目

工程化項目的目錄

// 使用vue ui來進行創建Vue工程;
// 使用vue ui工具可以對Vue項目來進行編譯運行在瀏覽器中

五. Vue組件化思想

組件化顧名思義, 為組件是獨立的,組件可復用的,整體化的組件.
組件化的目的: 實現功能模塊的復用,
高執行效率,
開發單頁面復雜應用,可以將復雜的業務邏輯進行拆分

如何拆分復雜的業務邏輯
組件的代碼不超過300行,
復用原則,
業務復雜性原則,

vue-router:
使用vue create命令進行創建Vue工程
vue組件創建

<template>
  <div>This is a component</div>
</template>

<script>

    export default {
    
    };
</script>

<style scoped>

</style>

在vue-router文件中進行相對應的組件配置:

    {
      path: '/new',
      name: 'new',
      component: newPage,
    },

最終在App.vue中進行配置點擊鏈接跳轉組件

<router-link to="/new">New</router-link>

組件間的狀態管理
Vuex
多組件的混合使用,多頁面,復雜業務(vue-router)
組件間的傳參,消息,事件管理(props, emit/on, bus)
vuex單向數據流概念,
view->actions->state->view

vuex使用場景:
多個試圖依賴于同一狀態(例:菜單導航);
來自不同試圖的行為需要變更同一狀態(例:評論彈幕);

Vuex是為Vue.js開發的狀態管理模式,特點是組件狀態集中管理;并且組件的狀態改變遵循統一的規則;

使用vue-cli工具創建的Vue工程中,勾選使用Vuex后會在工程目錄中生成一個store.js的文件;

import Vue from 'vue';
import Vuex from 'vuex';

Vue.use(Vuex);

export default new Vuex.Store({
  // 管理屬性值
  state: {
    count: 0,

  },
  // 修改屬性值方式
  mutations: {

    // 無參數修改Store屬性值方法,建議先持有當前Vuex中的state使用臨時變量進行修改
    increase(state) {
      const tmpState = state;
      tmpState.count += 1;
    },

    // 含參數修改Store屬性值方法
    sub(state, value) {
      const tmpState = state;
      tmpState.count -= value;
    },

  },
  actions: {

  },
});

Vuex的簡單實用

// 在組件中使用
import store from '@/store'; // 引入Store頭文件
// 使用以下代碼進行調用(increase則為store中mutations定義的方法名)
store.commit('increase');

Chrome中使用Vue插件進行Debug查看Vuex中的狀態:


查看Vuex狀態

六. Vue項目Debug

console.error('This is error log');   // 錯誤日志輸出
console.log('This is normal log');    // 普通日志輸出
debugger;                             // 加入斷點
alert('This is alert dialog');        // 彈框顯示
// 斷點后可以直接調用方法
call() {
  console.log('Call Method');
},
// 綁定Window全局變量之后進行Debug 
// 頁面開始掛載的時候的生命周期方法
mounted() {
    window.vue = this;
},

七.Vue項目參考

使用Chrome查看相對應的web頁面的源碼, 以及CSS樣式


調試工具進行查看

調試小技巧
Chrome中調試查看DOM結構;
Header, Body里面看js/css引用, 搜索相對應的js庫;
查看sources, network中的js, 使用反編譯或者Debug進行調試;

八.Vue項目的集成

使用Scss進行CSS樣式的編寫

<style lang="scss">
.head {
  font-size: 40px;
  color: steelblue;
}
.cellNormal {
    height: 40px;
    font-size: 40px;
    background-color: cyan;
    &.active {
        color: magenta;
    }
}
.cellHighLigth {
    background-color: blue;
}
</style>

九. Vue項目打包部署

// 進入到Vue項目中使用如下命令進行打包
npm run build

注: 在Vue項目中需要配置webpack打包工具的配置,可以事先創建一個vue.config文件進行相對應的打包配置;
參考文檔: https://cli.vuejs.org/zh/
文檔中的webpack打包有相關的配置信息

靜態網頁發布:

// 進入工程,使用以下命令
npm run build
// 執行完此命令之后, 會生成一個dist文件夾,將文件夾中的內容放到Server中根目錄下
// 即可完成部署
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,572評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,071評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,409評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,569評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,360評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,895評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,979評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,123評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,643評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,559評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,742評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,250評論 5 356
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 43,981評論 3 346
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,363評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,622評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,354評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,707評論 2 370

推薦閱讀更多精彩內容

  • 基礎知識: vue的生命周期: beforeCreate/created、 beforeMount/mounted...
    Jackson_yee_閱讀 370評論 0 0
  • 1. Vue概述 1.1 Vue介紹 Vue 是一套用于構建用戶界面的漸進式框架。 1.2 Vue核心思想 雙向數...
    nimw閱讀 584評論 0 4
  • 從上周三到這周五,我用了9天入門vue,做了一個todolist,這速度著實不算快,但是對于一個編程新手來說卻也是...
    madpluto閱讀 3,392評論 1 9
  • Vue 實例 屬性和方法 每個 Vue 實例都會代理其 data 對象里所有的屬性:var data = { a:...
    云之外閱讀 2,230評論 0 6
  • 這篇筆記主要包含 Vue 2 不同于 Vue 1 或者特有的內容,還有我對于 Vue 1.0 印象不深的內容。關于...
    云之外閱讀 5,064評論 0 29