總結Vue第一天:簡單介紹、基本常用知識、輔助函式
總結Vue第一天:簡單介紹、基本常用知識、輔助函式
遇到不熟悉的可以先看一下官網,然後再看一下一些別人寫的優質博文
一、簡單介紹:
(1)vue.js :本質就是一個js 核心類庫【跟咱使用的其他元件外掛而安裝他們】:
■ 安裝方式:
CDN引入【也是通過js標籤的src】
下載引入 【也是通過js標籤的src】
NPM安裝管理
■ 方式一:直接CDN引入
□ 你可以選擇引入開發環境版本還是生產環境版本
<!-- 開發環境版本,包含了有幫助的命令列警告 --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> <!-- 生產環境版本,優化了尺寸和速度 --> <script src="https://cdn.jsdelivr.net/npm/vue"></script>
■方式二:下載和引入
開發環境https://vuejs.org/js/vue.js
生產環境https://vuejs.org/js/vue.min.js
■ 方式三:NPM安裝
後續通過webpack和CLI的使用,我們使用該方式。
❀ 學習過程一開始就是通過下載引入:
<script type="text/javascript" src="../js/vue.min.js"></script>
(2)小demo瞭解一下vue.js:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <style> .active{ color: goldenrod; } .line{ font-style:italic; } </style> </head> <body> <div id="app" >{{message}} <!-- <button @click="{{message + ''">+文字</button>--> <a :class="{'active':isActive,'line':isLine }">沒毛病</a> <!-- 封裝成一個getClass函式 --> <!-- <div class="tt" :class="getClass()">謝謝</div>--> <!-- <button @click="btnActive">變變變</button>--> <div class="tt" :class="getClass()">哈哈哈</div> </div> </body> <script type="text/javascript" src="../js/vue.min.js"></script> <script> let app= new Vue({ el: '#app', data: { message:'漂亮', isActive: true, isLine: true, active: 'active', line: 'line' }, methods: { btnActive: function () { this.isActive = !this.isActive; }, //物件 // getClass: function () { // return{active: this.isActive, line: this.line} // } //陣列 getClass: function () { return [this.active, this.line]; } } }); </script> </body> </html>
□ 閱讀script標籤中的程式碼,會發現建立了一個Vue物件。
建立Vue物件的時候,傳入了一些options:{}
□{}中包含了el屬性:該屬性決定了這個Vue物件掛載到哪一個元素上,很明顯,我們這裡是掛載到了id為app的元素上
{}中包含了data屬性:該屬性中通常會儲存一些資料
這些資料可以是我們直接自定義出來的,也可能是來自網路,從伺服器載入的。
(3)響應式:
■ “響應式”,是指當資料改變後,Vue 會通知到使用該資料的程式碼(例如這裡的介面的dom元素)。
■ 效果:就是在介面上可以直觀的看見-----資料改變,介面變成使用改變過的資料。
■ 原理:可以看一下官網+優質博文分析
(4)簡單瞭解一下vue的生命週期
二、基本常用的知識:
■ 插值操作 {{ }} 將值插入到我們模板的內容當中
■ 繫結屬性 v-bind (簡寫:)
■ 事件監聽 v-on (簡寫 @)
■ v-if、v-else-if、v-else 【v-show】、v-for
■ v-model 表單的雙向繫結
■ 條件判斷
■ 迴圈遍歷
■ 計算屬性 computed
原因:計算屬性會進行快取,如果多次使用時,計算屬性只會呼叫一次。
■ 監聽屬性 watch
■ 過濾屬性 filters
html 頁面的使用:引數 | 過濾函式名
1、繫結屬性 v-bind (簡寫:)☆ 通過繫結屬性(資料可以從vue例項中獲取)
(1)舉例:我們的圖片路徑、標籤的樣式、類選擇器等等不希望寫死,希望實現動態繫結,從vue例項中獲取資料:
(2)v-bind繫結class
■ 繫結class有兩種方式:
□ 物件語法
□ 陣列語法
● 繫結方式:物件語法
<h2 class="title" :class="{'active': isActive, 'line': isLine}">Hello World</h2>
(和普通的類同時存在,並不衝突)
□我們可以利用v-bind:style來繫結一些CSS內聯樣式【跟繫結class差不多,只是要記得那種屬性有連字元- 要給它加單引號‘’】
2,事件監聽 v-on (簡寫 @):常用的就是監聽點選事件【也可以監聽自定義事件】
□ 我們可以將事件指向表示式,也可以是一個在methods中定義的函式
● v-on:click可以寫成@click
□ 事件指向method 帶引數問題:
□ v-on修飾符:① .stop ② .prevent ③ .native ④ .once 等
3,v-if、v-else-if、v-else 【v-show】
(1) v-if、v-else-if、v-else
----快取問題:Vue在進行DOM渲染時,出於效能考慮,會盡可能的複用已經存在的元素,而不是重新建立新的元素。
-----如果我們在有輸入內容的情況下,切換了型別,我們會發現文字依然顯示之前的輸入的內容。
------解決:加上唯一的key屬性:
(2) v-show:
□ 當需要在顯示與隱藏之間切片很頻繁時,使用v-show (本質上就是使用了cloak)
□ 當只有一次切換時,通過使用v-if
(3)v-for 遍歷陣列、遍歷物件:
語法格式:v-for=(item, index) in items
4,v-model 雙向繫結的本質
(① 繫結input回顯value屬性=message ② 監聽輸入事件,同時事件指向表示式【dom中輸入的值賦值給message】)
<input type="text" v-model="message"> <input type="text" v-bind:value="message" v-on:input="message = $event.target.value">
① v-model:radio
② v-model:checkbox (單個勾選框:v-model即為布林值。當是多個複選框時,因為可以選中多個,所以對應的data中屬性是一個數組)
③v-model:select
■ v-model的修飾符:① lazy ② number ③ trim
5,計算屬性 computed
原因:計算屬性會進行快取,如果多次使用時,計算屬性只會呼叫一次。【快取作用】
--------- 使用計算屬性,可以讓我們的程式碼變得更加簡潔(將一大串的方法呼叫,封裝到計算屬性中去【計算屬性本質就是一個物件(省略了setter方法)】)
三、❀ 輔助函式
(1-1)響應式函式 (陣列更新檢測)
□ push()
□ pop()
□ shift()
□ unshift()
□ splice()
□ sort()
□ reverse()
(1-2)(物件更新檢測)
□ 使用Vue.set(object, propertyName, value) 或者 例項.$set(object, propertyName, value);
例如:Vue.set(this.stu,’love’,’sing’);
□ 使用Object.assign( )
例如:this.stu = Object.assign({ }, this.stu, { name: ‘玉’, love:‘money’ })
(1-3)js 中的高階函式 map、filter、reduce:
□ filter:
filter的引數是一個回撥函式,回撥函式的引數(當前陣列的元素),要求回撥函式必須返回一個布林值,為true時,當前回撥函式的引數(即當前的元素)新增到內部陣列中,為false則過濾掉。
□ map:
map的引數是一個回撥函式,回撥函式的引數(當前陣列的元素),回撥函式的返回值作為內部陣列的元素。
□ reduce :
reduce實現彙總,引數是一個回撥函式(上一次return的值preValue, 當前元素)和一個初始值,回撥函式的返回值作為preValue。