Vue.js基礎(chǔ)

1 vue.js研究

1.1 vue.js介紹

1濒析、vue.js是什么庶香?
Vue (讀音 /vju?/夫嗓,類(lèi)似于 view) 是一套用于構(gòu)建用戶(hù)界面的漸進(jìn)式框架。與其它大型框架不同的是篙挽,Vue 被設(shè)計(jì)
為可以自底向上逐層應(yīng)用荆萤。Vue 的核心庫(kù)只關(guān)注視圖層,不僅易于上手铣卡,還便于與第三方庫(kù)或既有項(xiàng)目整合链韭。另一方面,當(dāng)與現(xiàn)代化的工具鏈以及各種支持類(lèi)庫(kù)結(jié)合使用時(shí)煮落,Vue 也完全能夠?yàn)閺?fù)雜的單頁(yè)應(yīng)用提供驅(qū)動(dòng)敞峭。
漸進(jìn)式框架:Progressive,說(shuō)明vue.js的輕量蝉仇,是指一個(gè)前端項(xiàng)目可以使用vue.js一兩個(gè)特性也可以整個(gè)項(xiàng)目都用vue.js旋讹。
自底向上逐層應(yīng)用:作為漸進(jìn)式框架要實(shí)現(xiàn)的目標(biāo)就是方便項(xiàng)目增量開(kāi)發(fā)。
參考:https://cn.vuejs.org/v2/guide/
2轿衔、Vue.js的使用
1)在html頁(yè)面使用script引入vue.js的庫(kù)即可使用沉迹。

2)使用Npm管理依賴(lài),使用webpack打包工具對(duì)vue.js應(yīng)用打包呀枢。
大型應(yīng)用推薦此方案胚股。

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

4裙秋、vue.js有哪些功能?
1)聲明式渲染
Vue.js 的核心是一個(gè)允許采用簡(jiǎn)潔的模板語(yǔ)法來(lái)聲明式地將數(shù)據(jù)渲染進(jìn) DOM 的系統(tǒng)缨伊。
比如:使用vue.js的插值表達(dá)式放在Dom的任意地方摘刑, 差值表達(dá)式的值將被渲染在Dom中。

2)條件與循環(huán)
dom中可以使用vue.js提供的v-if刻坊、v-for等標(biāo)簽枷恕,方便對(duì)數(shù)據(jù)進(jìn)行判斷、循環(huán)谭胚。

3)雙向數(shù)據(jù)綁定
Vue 提供v-model 指令徐块,它可以輕松實(shí)現(xiàn)Dom元素和數(shù)據(jù)對(duì)象之間雙向綁定未玻,即修改Dom元素中的值自動(dòng)修改綁定的數(shù)據(jù)對(duì)象,修改數(shù)據(jù)對(duì)象的值自動(dòng)修改Dom元素中的值胡控。

4)處理用戶(hù)輸入
為了讓用戶(hù)和你的應(yīng)用進(jìn)行交互扳剿,我們可以用v-on 指令添加一個(gè)事件監(jiān)聽(tīng)器,通過(guò)它調(diào)用在 Vue 實(shí)例中定義的方法

5)組件化應(yīng)用構(gòu)建
vue.js可以定義一個(gè)一個(gè)的組件昼激,在vue頁(yè)面中引用組件庇绽,這個(gè)功能非常適合構(gòu)建大型應(yīng)用。

1.2 vue.js基礎(chǔ)

1.2.1 MVVM模式
vue.js是一個(gè)MVVM的框架橙困,理解MVVM有利于學(xué)習(xí)vue.js瞧掺。

  • MVVM拆分解釋為:

    • Model:負(fù)責(zé)數(shù)據(jù)存儲(chǔ)
    • View:負(fù)責(zé)頁(yè)面展示
    • View Model:負(fù)責(zé)業(yè)務(wù)邏輯處理(比如Ajax請(qǐng)求等),對(duì)數(shù)據(jù)進(jìn)行加工后交給視圖展示
  • MVVM要解決的問(wèn)題是將業(yè)務(wù)邏輯代碼與視圖代碼進(jìn)行完全分離凡傅,使各自的職責(zé)更加清晰辟狈,后期代碼維護(hù)更
    加簡(jiǎn)單

  • 用圖解的形式分析Ajax請(qǐng)求回來(lái)數(shù)據(jù)后直接操作Dom來(lái)達(dá)到視圖的更新的缺點(diǎn),以及使用MVVM模式是如何
    來(lái)解決這個(gè)缺點(diǎn)的

Vue中的 MVVM


image.png

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

1.2.2 入門(mén)程序

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

    <!‐‐ 在Vue接管區(qū)域中使用Vue的系統(tǒng)指令呈現(xiàn)數(shù)據(jù)
    這些指令就相當(dāng)于是MVVM中的View這個(gè)角色 ‐‐>
    <div id="app">
        {{name}}
    </div>


</body>

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

</html>

代碼編寫(xiě)步驟:
1释簿、定義html,引入vue.js
2硼莽、定義app div庶溶,此區(qū)域作為vue的接管區(qū)域
3、定義vue實(shí)例懂鸵,接管app區(qū)域偏螺。
4、定義model(數(shù)據(jù)對(duì)象)
5匆光、VM完成在app中展示數(shù)據(jù)

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可以解決網(wǎng)速慢出現(xiàn)表達(dá)式的問(wèn)題-->
    <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">計(jì)算</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、在表單控件或者組件上創(chuàng)建雙向綁定
2终息、v-model僅能在如下元素中使用:

input
select
textarea
components(Vue中的組件)

2夺巩、解決插值表達(dá)式閃爍問(wèn)題,使用v-text
v-text可以將一個(gè)變量的值渲染到指定的元素中,它可以解決插值表達(dá)式閃爍的問(wèn)題

3周崭、v-on綁定一個(gè)按鈕的單擊事件

4柳譬、v-bind

1、作用:
v‐bind可以將數(shù)據(jù)對(duì)象綁定在dom的任意屬性中续镇。

v‐bind可以給dom對(duì)象綁定一個(gè)或多個(gè)特性美澳,例如動(dòng)態(tài)綁定style和class
2、舉例:
<img v‐bind:src="imageSrc">
<div v‐bind:style="{ fontSize: size + 'px' }"></div>
3、縮寫(xiě)形式
<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接管區(qū)域中使用Vue的系統(tǒng)指令呈現(xiàn)數(shù)據(jù)
    這些指令就相當(dāng)于是MVVM中的View這個(gè)角色 ‐‐>
    <div id="app">
        <!--相當(dāng)于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>
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末制跟,一起剝皮案震驚了整個(gè)濱河市舅桩,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌雨膨,老刑警劉巖擂涛,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異哥放,居然都是意外死亡歼指,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門(mén)甥雕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)踩身,“玉大人,你說(shuō)我怎么就攤上這事社露⌒瑁” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵峭弟,是天一觀的道長(zhǎng)附鸽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)瞒瘸,這世上最難降的妖魔是什么坷备? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮情臭,結(jié)果婚禮上省撑,老公的妹妹穿的比我還像新娘。我一直安慰自己俯在,他們只是感情好竟秫,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著跷乐,像睡著了一般肥败。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上愕提,一...
    開(kāi)封第一講書(shū)人閱讀 51,578評(píng)論 1 305
  • 那天馒稍,我揣著相機(jī)與錄音,去河邊找鬼浅侨。 笑死筷黔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的仗颈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼挨决!你這毒婦竟也來(lái)了请祖?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤脖祈,失蹤者是張志新(化名)和其女友劉穎肆捕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體盖高,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡慎陵,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了喻奥。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片席纽。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖撞蚕,靈堂內(nèi)的尸體忽然破棺而出润梯,到底是詐尸還是另有隱情,我是刑警寧澤甥厦,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布纺铭,位于F島的核電站,受9級(jí)特大地震影響刀疙,放射性物質(zhì)發(fā)生泄漏舶赔。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一谦秧、第九天 我趴在偏房一處隱蔽的房頂上張望竟纳。 院中可真熱鬧,春花似錦油够、人聲如沸蚁袭。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)揩悄。三九已至,卻和暖如春鬼悠,著一層夾襖步出監(jiān)牢的瞬間删性,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工焕窝, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蹬挺,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓它掂,卻偏偏與公主長(zhǎng)得像巴帮,于是被迫代替她去往敵國(guó)和親溯泣。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容