2023-05-30

day01

1. Vue簡介

一套用于構(gòu)建用戶界面的 漸進式框架

漸進式j(luò)avascript框架.png

2. 初識Vue

2.1 搭建Vue開發(fā)環(huán)境

  • 第一步:去Vue2官網(wǎng)场绿,下載依賴包。

  • 第二步:在html文件中引入vue.js嫉入。

<!-- 引入Vue -->
<script type="text/javascript" src="../../js/vue.js"></script>

輸出一下Vue構(gòu)造函數(shù):console.log(Vue)裳凸,看是否配置成功贱鄙。

  • 第三步:編寫腳本關(guān)閉生產(chǎn)提示劝贸。
//阻止 vue 在啟動時生成生產(chǎn)提示
Vue.config.productionTip = false

注意:如果上述方法無法關(guān)閉姨谷,可直接操作vue.js修改productionTip的值為false

  • 第四步:安裝開發(fā)者工具映九,打開瀏覽器的【插件管理】梦湘,直接拖動.crx文件到瀏覽器即可。

  • 第五步:配置頁簽圖標(biāo)件甥,直接復(fù)制favicon.ico到根目錄即可捌议。


2.2 一個Hello效果

  • 實現(xiàn)效果:
demo.png
  • 核心代碼:
<!-- 準(zhǔn)備好一個容器 -->
<div id="demo">
<h1>Hello,{{school}}</h1>
</div>

<script type="text/javascript" >
// 創(chuàng)建Vue實例引有,并傳入配置對象
new Vue({
     el:'#demo', //用于指定當(dāng)前Vue實例服務(wù)于哪個容器瓣颅,值為CSS選擇器字符串
     data:{ // data用于配置數(shù)據(jù),數(shù)據(jù)可以直接在模板中使用譬正,值暫時寫成一個對象
     school:'尚硅谷'
     }
})
</script>
  • 總結(jié):

    1. 想讓Vue工作宫补,就要創(chuàng)建一個Vue實例,且要傳入一個配置對象曾我。

    2. demo容器中的代碼被稱為模板粉怕,它依然符合HTML規(guī)范,只是混入了一些特殊的Vue語法抒巢。

    3. el 配置:用于指定當(dāng)前Vue實例服務(wù)于哪個容器贫贝,值為:css選擇器字符串。

    4. data 配置:用于配置數(shù)據(jù)蛉谜,數(shù)據(jù)可以直接在模板中使用稚晚,值暫時寫成一個對象(以后還會寫成函數(shù))。


2.3 分析Hello效果

  1. Vue實例和容器是<font color="red">一一對應(yīng)</font>的型诚,真實開發(fā)中只有一個Vue實例客燕,而且還會配合組件一起使用。

  2. data中的數(shù)據(jù)只要發(fā)生改變俺驶,模板中用到該數(shù)據(jù)的地方就會自動更新幸逆。

  3. {{xxx}}中的 xxx 要寫js 表達(dá)式,且xxx 可以自動讀取到data中的屬性暮现。

  4. 復(fù)習(xí)一個點:【js表達(dá)式】與【 js語句】

    1. 表達(dá)式:會產(chǎn)生一個值还绘,可以放在任何一個需要值的地方,例如:

    (1). 1
    (2). a
    (3). x > = 18 ? '成年' : '未成年'
    (4). 200 - 2
    (5). arr.map()

    等等....

    1. 語句(代碼): 不會產(chǎn)生值栖袋,只是控制代碼走向拍顷,例如:

    (1).if ( ) {}
    (2). for ( ) {}
    (3). try {} catch (err) {}
    等等....

3. 了解開發(fā)者工具

  1. 視角一
視角一.png
  1. 視角二
視角二.png

4. Vue的模板語法

4.1 插值與指令

  1. 插值語法(簡單):

    功能:用于操作標(biāo)簽體,可以在標(biāo)簽體的指定位置插入數(shù)據(jù)塘幅。
    寫法:{{xxx}}昔案,xxxjs 表達(dá)式尿贫,且可以自動讀取到data中配置的所有屬性。

  2. 指令語法(復(fù)雜):

    功能:用于操作標(biāo)簽(標(biāo)簽屬性踏揣、標(biāo)簽體庆亡、綁定事件......)
    舉例:v-bind:href = "xxx",xxx 是js 表達(dá)式捞稿,且可以自動讀取到data中配置的所有屬性又谋。

  3. 備注:Vue中有很多的指令,形式都是 v-???娱局,此處我們只是拿v-bind舉個例子彰亥。

  4. 務(wù)必搞懂如下代碼:

    <a 
       v-bind:href="url"
       a="url"
       v-bind:b="url"
       c="1+1"
       v-bind:d="1+1"
       e="url.toUpperCase()"
       v-bind:f="url.toUpperCase()"
    >
      點我去{{school.name}}學(xué)習(xí)
    </a>
    
    <script type="text/javascript">
      new Vue({
        el: '#demo',
        data: {
          school: '尚硅谷',
          url: 'http://www.atguigu.com'
        }
      })
    </script>
    

4.2 v-bind 的簡寫

  • 指令才能簡寫為 : 別的指令不行。
  • 其他的指令有其他的簡寫形式衰齐、但并不是所有的指令都有簡寫形式任斋。

5. 數(shù)據(jù)綁定

  • Vue中有兩種綁定數(shù)據(jù)的方式:

    1. 單向數(shù)據(jù)綁定(v-bind):數(shù)據(jù)只能從data流向頁面。
    2. 雙向數(shù)據(jù)綁定(v-model):數(shù)據(jù)不僅能從data流向頁面耻涛,也能從頁面流向data废酷。
  • 注意點:

    1. v-model目前只能用在輸入類(表單類)元素上(以后還能用寫在組件標(biāo)簽上)。
    2. v-model默認(rèn)收集的是value值犬第,所以v-model:value="xxx" 可以簡寫為 v-model="xxx"锦积。
  • 核心代碼:

    <!-- 準(zhǔn)備好一個容器-->
    <div id="demo">
      <!-- 標(biāo)準(zhǔn)寫法 -->
      單項數(shù)據(jù)綁定:<input type="text" v-bind:value="school"> <br><br>
      雙項數(shù)據(jù)綁定:<input type="text" v-model:value="school">
    
      <!-- 簡寫形式 -->
      單項數(shù)據(jù)綁定:<input type="text" :value="school"> <br>
      雙向數(shù)據(jù)綁定:<input type="text" v-model="school">
    
      <!-- 下面的代碼是不對的,v-model只能用在輸入類元素上 -->
      <!-- <h1 v-model="school">你好</h1> -->
    </div>
    
    <script type="text/javascript">
      new Vue({
        el:'#demo',
        data:{
          school:'尚硅谷'
        }
      })
    </script>
    

6. el 與 data 的寫法

6.1 el 的三種寫法

  • 第一種寫法:值為css選擇器字符串

    new Vue({
      el:'#demo'
      //******
    })
    
  • 第二種寫法:值為一個真實DOM元素 —— 幾乎不用歉嗓,了解即可丰介。

    new Vue({
      el:document.getElementById('demo'),
      //******
    })
    
  • 第三種寫法:使用$mount方法去替代el配置。

    new Vue(/******/).$mount('#demo')
    

6.2 data 的兩種寫法

  • 第一種(對象式)

    data:{
      school:'尚硅谷'
    }
    
  • 第二種(函數(shù)式)—— 最近不用鉴分,以后會用哮幢。

    data(){
      return {
        school:'尚硅谷'
      }
    }
    

7. 理解MVVM

  1. M:模型(Model) :data中的數(shù)據(jù)。
  2. V:視圖(View) :模板志珍。
  3. VM:視圖模型(ViewModel) : Vue實例對象橙垢。

8. 認(rèn)識一下vm

  1. vm身上有很多$開頭的屬性或方法,這是給我們程序員用的(但也不是都用)伦糯。

  2. data中所配置的屬性柜某,也不知道怎么了(后面會詳細(xì)說),最終都出現(xiàn)在了vm身上敛纲。

  3. vm身上所有的屬性喂击,以及順著vm能找到的東西,都能在模板中直接使用淤翔,但往往我們使用的只是那些:配置項中所寫的東西翰绊。

  4. 務(wù)必搞懂如下代碼:

    <!-- 準(zhǔn)備好一個容器-->
    <div id="demo">
      <h1>{{school}}歡迎你!</h1>
      <h2>測試1:{{a}}</h2>
      <h2>測試2:{}</h2>
      <h2>測試3:{{_c}}</h2>
      <h2>測試4:{{$attrs}}</h2>
      <h2>測試5:{{toString}}</h2>
      <h2>測試6:{hivnacu}</h2>
    </div>
    
    <script type="text/javascript">
      Object.prototype.d = 9
      let vm = new Vue({
        el: '#demo',
        data: {
          school: '尚硅谷',
          a: 1,
          b: 2
        }
      })
      // 輸出Vue實例對象 —— vm
      console.log(vm)
    </script>
    

9. 復(fù)習(xí)Object.defineProperty

  1. Object.defineProperty监嗜,能給對象追加屬性谐檀,并且可以對屬性進行“高級定制”。

    //定義一個對象
    let person = {name:'張三',sex:'女'}
    
    //通過Object.defineProperty裁奇,也可以給person對象追加一個age屬性桐猬,且可以對age進行“高級定制”。
    Object.defineProperty(person,'age',{
      value:90,//值
      enumerable:true, //控制屬性是否可以枚舉(是否參與遍歷)框喳,默認(rèn)值是false
      configurable:true, //控制屬性是否可以刪除课幕,默認(rèn)值是false
      writable:true,//控制屬性是否可以被修改,默認(rèn)值是false
    })
    
  2. Object.definePropertygetset配置:

    //定義一個number變量
    let number = 18
    
    // 定義一個person對象
    let person = {name:'張三',sex:'女'}
    
    //借助Object.defineProperty去追加age屬性
    Object.defineProperty(person,'age',{
      enumerable:true,
      //get函數(shù)(getter)何時執(zhí)行五垮?—— 有人讀取person對象的age屬性時執(zhí)行
      //get函數(shù)(getter)中的this是誰? —— 當(dāng)前對象(person)
      get:function peiqi(){
        console.log('getter執(zhí)行了',this)
        return number
      },
      //set函數(shù)(setter)何時會被調(diào)用杜秸? —— 有人修改person對象的age屬性時執(zhí)行
      //get函數(shù)(setter)中的this是誰放仗? —— 當(dāng)前對象(person)
      set:function qiaozhi(value){
        console.log('有人修改了person的age屬性,值為:',value,this)
        number = value
      }
    })
    

10. 數(shù)據(jù)代理

10.1 何為數(shù)據(jù)代理

通過一個對象代理對另一個對象中屬性的操作(讀/寫)撬碟。


10.2 Vue中的數(shù)據(jù)代理

  • 前情提要:我們new Vue(options)時傳入的那個data诞挨,Vue收到后放在了vm上,名為_data呢蛤。

  • Vue中的數(shù)據(jù)代理:通過vm來對_data中屬性的操作(讀/寫)惶傻。

  • Vue中數(shù)據(jù)代理的好處:模板中可以更加方便的操作_data中的數(shù)據(jù),例如:

    若無數(shù)據(jù)代理其障,這么寫:{{_data.name}} —— 很麻煩银室。

    若有數(shù)據(jù)代理,這么寫:{{name}} —— 香励翼!

    注意:此時我們先不關(guān)注_data中為什么也有getter蜈敢、setter,過幾天就會說汽抚。


10.3 數(shù)據(jù)代理的原理

  1. 遍歷_data對象中所有的屬性抓狭,通過Object.defineProperty()一個一個都添加到vm上。

  2. 隨后vm上就擁有了_data中所有的屬性造烁,且都有自己的getter否过、setter

  3. getter惭蟋、setter內(nèi)部操作(讀/寫)的是_data中對應(yīng)的屬性苗桂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市敞葛,隨后出現(xiàn)的幾起案子誉察,更是在濱河造成了極大的恐慌,老刑警劉巖惹谐,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件持偏,死亡現(xiàn)場離奇詭異驼卖,居然都是意外死亡,警方通過查閱死者的電腦和手機鸿秆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門酌畜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卿叽,你說我怎么就攤上這事桥胞。” “怎么了考婴?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵贩虾,是天一觀的道長。 經(jīng)常有香客問我沥阱,道長缎罢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任考杉,我火速辦了婚禮策精,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘崇棠。我一直安慰自己咽袜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布枕稀。 她就那樣靜靜地躺著询刹,像睡著了一般。 火紅的嫁衣襯著肌膚如雪抽莱。 梳的紋絲不亂的頭發(fā)上范抓,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天,我揣著相機與錄音食铐,去河邊找鬼匕垫。 笑死,一個胖子當(dāng)著我的面吹牛虐呻,可吹牛的內(nèi)容都是我干的象泵。 我是一名探鬼主播,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼斟叼,長吁一口氣:“原來是場噩夢啊……” “哼偶惠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起朗涩,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤忽孽,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體兄一,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡厘线,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了出革。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片造壮。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖骂束,靈堂內(nèi)的尸體忽然破棺而出耳璧,到底是詐尸還是另有隱情,我是刑警寧澤展箱,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布旨枯,位于F島的核電站,受9級特大地震影響析藕,放射性物質(zhì)發(fā)生泄漏召廷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一账胧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧先紫,春花似錦治泥、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至本冲,卻和暖如春准脂,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背檬洞。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工狸膏, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人添怔。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓湾戳,卻偏偏與公主長得像,于是被迫代替她去往敵國和親广料。 傳聞我的和親對象是個殘疾皇子砾脑,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,037評論 2 355

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