Vue.js基礎

1 vue.js研究

1.1 vue.js介紹

1、vue.js是什么?
Vue (讀音 /vju?/,類似于 view) 是一套用于構建用戶界面的漸進式框架。與其它大型框架不同的是,Vue 被設計
為可以自底向上逐層應用。Vue 的核心庫只關注視圖層,不僅易于上手,還便于與第三方庫或既有項目整合。另一方面,當與現代化的工具鏈以及各種支持類庫結合使用時,Vue 也完全能夠為復雜的單頁應用提供驅動。
漸進式框架:Progressive,說明vue.js的輕量,是指一個前端項目可以使用vue.js一兩個特性也可以整個項目都用vue.js。
自底向上逐層應用:作為漸進式框架要實現的目標就是方便項目增量開發。
參考:https://cn.vuejs.org/v2/guide/
2、Vue.js的使用
1)在html頁面使用script引入vue.js的庫即可使用。

2)使用Npm管理依賴,使用webpack打包工具對vue.js應用打包。
大型應用推薦此方案。

3)Vue-CLI腳手架
使用vue.js官方提供的CLI腳本架很方便去創建vue.js工程雛形。

4、vue.js有哪些功能?
1)聲明式渲染
Vue.js 的核心是一個允許采用簡潔的模板語法來聲明式地將數據渲染進 DOM 的系統。
比如:使用vue.js的插值表達式放在Dom的任意地方, 差值表達式的值將被渲染在Dom中。

2)條件與循環
dom中可以使用vue.js提供的v-ifv-for等標簽,方便對數據進行判斷、循環。

3)雙向數據綁定
Vue 提供v-model 指令,它可以輕松實現Dom元素和數據對象之間雙向綁定,即修改Dom元素中的值自動修改綁定的數據對象,修改數據對象的值自動修改Dom元素中的值。

4)處理用戶輸入
為了讓用戶和你的應用進行交互,我們可以用v-on 指令添加一個事件監聽器,通過它調用在 Vue 實例中定義的方法

5)組件化應用構建
vue.js可以定義一個一個的組件,在vue頁面中引用組件,這個功能非常適合構建大型應用。

1.2 vue.js基礎

1.2.1 MVVM模式
vue.js是一個MVVM的框架,理解MVVM有利于學習vue.js。

  • MVVM拆分解釋為:

    • Model:負責數據存儲
    • View:負責頁面展示
    • View Model:負責業務邏輯處理(比如Ajax請求等),對數據進行加工后交給視圖展示
  • MVVM要解決的問題是將業務邏輯代碼與視圖代碼進行完全分離,使各自的職責更加清晰,后期代碼維護更
    加簡單

  • 用圖解的形式分析Ajax請求回來數據后直接操作Dom來達到視圖的更新的缺點,以及使用MVVM模式是如何
    來解決這個缺點的

Vue中的 MVVM


image.png

從上圖看出,VM(ViewModel)可以把view視圖和Model模型解耦合,VM的要做的工作就是vue.js所承擔的。

1.2.2 入門程序

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF‐8">
    <title>vue</title>
    <script src="vue.min.js"></script>
</head>
<body>

    <!‐‐ 在Vue接管區域中使用Vue的系統指令呈現數據
    這些指令就相當于是MVVM中的View這個角色 ‐‐>
    <div id="app">
        {{name}}
    </div>


</body>

    <script>
        //vm :叫做MVVM中的 View Model
        var vm = new Vue({
           el:"#app",//表示當前vue對象接管app的div區域
            data:{
               name:"大師兄,師傅被妖怪抓走了"http:// 相當于是MVVM中的Model這個角色
            }
        });
    </script>

</html>

代碼編寫步驟:
1、定義html,引入vue.js
2、定義app div,此區域作為vue的接管區域
3、定義vue實例,接管app區域。
4、定義model(數據對象)
5、VM完成在app中展示數據

1.2.3 1+1=2

<!DOCTYPE html>
<html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="UTF‐8">
    <title></title>
    <script src="vue.min.js"></script>
</head>
<body>

<div id="app">

    <!--{{name}}-->
    <!--v-text可以解決網速慢出現表達式的問題-->
    <a v-bind:href="url">
    <span v-text="name"></span>
    </a>
    <input type="text" v-model="num1">+
    <input type="text" v-model="num2">=
    <span v-text="result"></span>
    <!--<span v-text="Number.parseInt(num1)+Number.parseInt(num2)"></span>-->
    <!--{{Number.parseInt(num1)+Number.parseInt(num2)}}-->
    <button v-on:click="change">計算</button>

</div>
</body>
    <script>
        var vm = new Vue({
            el:"#app",
            data:{
                name:"田師傅",
                num1:0,
                num2:0,
                result:0,
                url:"http://www.baidu.com"
            },
            methods:{
                change:function () {
                    this.result= Number.parseInt(this.num1)+Number.parseInt(this.num2)
                    alert(this.result)
                }
            }
        });
    </script>

</html>

1、v-model:
1、在表單控件或者組件上創建雙向綁定
2、v-model僅能在如下元素中使用:

input
select
textarea
components(Vue中的組件)

2、解決插值表達式閃爍問題,使用v-text
v-text可以將一個變量的值渲染到指定的元素中,它可以解決插值表達式閃爍的問題

3、v-on綁定一個按鈕的單擊事件

4、v-bind

1、作用:
v‐bind可以將數據對象綁定在dom的任意屬性中。

v‐bind可以給dom對象綁定一個或多個特性,例如動態綁定style和class
2、舉例:
<img v‐bind:src="imageSrc">
<div v‐bind:style="{ fontSize: size + 'px' }"></div>
3、縮寫形式
<img :src="imageSrc">
<div :style="{ fontSize: size + 'px' }"></div>

1.2.4 v-if和v-for

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF‐8">
    <title> </title>
    <script src="vue.min.js"></script>
</head>
<body>

    <!‐‐ 在Vue接管區域中使用Vue的系統指令呈現數據
    這些指令就相當于是MVVM中的View這個角色 ‐‐>
    <div id="app">
        <!--相當于MVVM的view視圖-->
        <ul>
            <li v-for="(item,index) in list" :key="index" v-if="index % 2 ==0">{{index}}--{{item}}</li>
            <li v-for="(value,key) in user">{{key}}--{{value}}</li>
            <li v-for="(item,index) in userlist" :key="item.user.uname">
                <div v-if="item.user.uname == 'smile1'" style="background: #00f50c">
                    {{index}}--{{item.user.uname}}--{{item.user.age}}
                </div>
                <div v-else="">
                    {{index}}--{{item.user.uname}}--{{item.user.age}}
                </div>

            </li>
        </ul>
    </div>
</body>

    <script>
        //vm :叫做MVVM中的 View Model
        var vm = new Vue({
            el:'#app',
            data:{
                list:[1,2,3,4,4],
                user:{uname:'smile',age:10},
                userlist:[
                    { user:{uname:'smile1',age:10}},
                    { user:{uname:'smile2',age:11}}
                ]
            }

        });
    </script>

</html>
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,786評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,656評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,697評論 0 379
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,098評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,855評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,254評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,322評論 3 442
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,473評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,014評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,833評論 3 355
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,016評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,568評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,273評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,680評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,946評論 1 288
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,730評論 3 393
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,006評論 2 374

推薦閱讀更多精彩內容

  • Vue.js是什么 Vue.js(讀音 /vju?/, 類似于 view) 是一套構建用戶界面的 漸進式框架。與其...
    魚魚吃貓貓閱讀 3,274評論 1 12
  • 1. Vue 實例 1.1 創建一個Vue實例 一個 Vue 應用由一個通過 new Vue 創建的根 Vue 實...
    王童孟閱讀 1,028評論 0 2
  • vue 一個mvvm框架(庫),類似于angular,擁有比較容易上手的AIP。它是一套構建用戶界面的 漸進式框架...
    你期待的花開閱讀 555評論 0 9
  • Vue.js是什么? Vue.js(讀音 /vju?/,類似于 view) 是一套構建用戶界面的漸進式框架。與其他...
    ConRon閱讀 495評論 0 0
  • 什么是Vue.js? Vue.js是目前最火的前端主流框架之一,和Angular、React一起,并成為前端三大框...
    瑞破破閱讀 530評論 0 1