最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

前端主流框架vue學(xué)習(xí)筆記第一篇

 更新時(shí)間:2017年07月26日 16:12:40   作者:JerremyZhang  
一步一步學(xué)Vue,這篇文章為大家分享了第一篇前端主流框架vue學(xué)習(xí)筆記,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

vue應(yīng)該是前端主流框架中的集大成者,它吸取了knockout,angular,react設(shè)置avalon的經(jīng)驗(yàn),支持各種模式寫法,入門很簡單,從本章開始,會(huì)記錄學(xué)習(xí)vue中的點(diǎn)點(diǎn)滴滴,以筆記的形式形成博文。

1、Hello World

和任何框架一樣,使用前必先引入,我們這里直接使用cdn資源,創(chuàng)建index.html,編寫如下代碼:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>demo1</title>
  <script src="https://cdn.bootcss.com/vue/2.4.1/vue.js"></script>
</head>
<body>
  <div id="app">
    {{message}}
  </div>
  <script>
    new Vue({
      el:'#app',
      data:{
        message:'hello world'
      }
    })
  </script>
</body>
</html>

雙擊文件運(yùn)行:

咱們分析一下上述代碼,一句簡單的{{message}},就把數(shù)據(jù)綁定到到了dom中,我不會(huì)說好神奇,因?yàn)槲沂煜ngular,我知道angular也是簡單一個(gè)指令就可以做到,這里和angular在使用上做一個(gè)類比,可以看到,在當(dāng)前的代碼中創(chuàng)建Vue對(duì)象的時(shí)候,傳遞的參數(shù){el:'#id',data:{message:'hellow'}},其中el是vue掛載的元素,也就是作用的范圍和anglar中ng-app的概念類似,都是創(chuàng)建一個(gè)根作用域,data對(duì)象可以類比angular中的$scope,$scope對(duì)象在angular中是連接controller和view的橋梁,那么data對(duì)象就是代理vue對(duì)象中數(shù)據(jù)和template的橋梁。

2、TODO LIST

由于有angular的經(jīng)驗(yàn),不會(huì)按部就班的過vue的文檔,那樣也沒什么意思,這里以todolist作為Hello world的延伸,由于和angular類似的數(shù)據(jù)驅(qū)動(dòng)的特點(diǎn),我們不需要關(guān)注如何操作dom,我們只要設(shè)計(jì)viewmode即可,todolist,首先我們要有todo item ,所以

var todoItem=function(title,desc){
      this.title=title;
      this.desc=desc;
    }

另外todolist 是包含CURD的,所以我們需要一個(gè)表單,用來新增todoItem,基于此修改index.html,添加表單部分:

<div id="app">
    <form>
      <input type="text" v-model="title"> <br>
      <input type="text" v-model="desc"> <br/>
      <input type="button" value="add todo item" v-on:click="addItem()" />
    </form>
  </div>

對(duì)上述代碼做一下簡單說明:v-model類似angular中ng-model,實(shí)現(xiàn)雙向數(shù)據(jù)綁定,當(dāng)然這里都是語法糖,vue內(nèi)部做了很多工作,和angular2+中的[(ngModel)]類似,通過屬性和事件實(shí)現(xiàn)了雙向綁定效果,v-on:click="addItem()" ,其中v-on:是事件綁定指令,后面click是參數(shù),可以縮寫為@click="addItem()" ,可以類比angular中ng-click。

接下來,繼續(xù)完善我們的viewmodel,todoitem已經(jīng)設(shè)計(jì)完成,現(xiàn)在我們?cè)黾觮odolist結(jié)構(gòu),todolist中包含多個(gè)todoitem,是todoitem集合,在javascript中,體現(xiàn)為Array,基于此修改我們的代碼,如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>demo1</title>
  <script src="https://cdn.bootcss.com/vue/2.4.1/vue.js"></script>
</head>

<body>
  <div id="app">
    <form>
      title:<input type="text" v-model="title"> <br>
      desc:<input type="text" v-model="desc"> <br/>
      <input type="button" value="add todo item" v-on:click="addItem()" />
    </form>
  </div>
  <script>
    var TodoItem = function (title, desc) {
      this.title = title;
      this.desc = desc;
    }
    new Vue({
      el: '#app',
      data: {
        todolist:[],
        title:'',
        desc:''
      },
      methods:{
        addItem:function(){
          this.todolist.push(new TodoItem(this.title,this.desc))

          this.title=this.desc='';

          console.log(JSON.stringify(this.todolist));
        }
      }
    })
  </script>
</body>

</html>

上述代碼中出現(xiàn)了新的屬性methods,和angular中不同,angular中事件也是綁定在$scope對(duì)象中的,只不過值是function而已,在vue中,對(duì)事件綁定和屬性綁定進(jìn)行了區(qū)分,分別使用data和methods代理,這樣也在邏輯上更清晰,指責(zé)上更單一,所以事件綁定的回調(diào)函數(shù)都代理在methods中。

刷新頁面,輸入表單項(xiàng),打開控制臺(tái)可以看到輸出項(xiàng),運(yùn)行結(jié)果入下圖所示:

結(jié)果和我們預(yù)期的一樣,接著我們把結(jié)果以列表的形式渲染出來,在angular中,我們一般通過ng-repeat指令,實(shí)現(xiàn)列表渲染,那么在vue中,有沒有類似的指令呢,查文檔發(fā)現(xiàn)的確有一指令叫做v-for,用法和作用都和ng-repeat類似,基于ng-repeat經(jīng)驗(yàn),我們使用v-for對(duì)todolist進(jìn)行渲染,修改代碼如下:

<table style="width:300px;border-collapse:collapse" border="1">
      <tr>
        <th>title</th>
        <th>desc</th>
      </tr>
      <tr v-for="todoItem in todolist">
        <td>{{todoItem.title}}</td>
        <td>{{todoItem.desc}}</td>
      </tr>
    </table>

刷新運(yùn)行,在表單中輸入后,點(diǎn)擊add todo item,向數(shù)組添加元素,及動(dòng)態(tài)刷新了列表:

有添加就有刪除,接下來,我們列表中,增加刪除操作,和所有mvvm框架一樣,我們考慮的出發(fā)點(diǎn)一定要規(guī)避dom,一定要從數(shù)據(jù)驅(qū)動(dòng)UI的方式來思考,如果刪掉UI項(xiàng),那么根據(jù)數(shù)據(jù)驅(qū)動(dòng)UI的理念那么就是刪掉數(shù)組項(xiàng),框架會(huì)自動(dòng)幫我們處理dom,基于此修改代碼如下:

<table style="width:300px;border-collapse:collapse" border="1">
      <tr>
        <th>title</th>
        <th>desc</th>
        <th></th>
      </tr>
      <tr v-for="(todoItem,index) in todolist">
        <td>{{todoItem.title}}</td>
        <td>{{todoItem.desc}}</td>
        <td><input type="button" value="remove" @click="remove(index)" /></td>
      </tr>
    </table>

如果按照我們以前angular的使用經(jīng)驗(yàn),這里增加的方式有些區(qū)別,angular在ng-repeat中有內(nèi)置變量$index,所以在事件處理上,我們就會(huì)通過$index作為數(shù)組項(xiàng)索引,事件綁定也會(huì)類似ng-click="remove($index)",在vue中就有些區(qū)別了,但是卻符合數(shù)組遍歷的方式,大家應(yīng)該知道數(shù)組方法,比如map等,參數(shù)是一個(gè)function,其中包含兩個(gè)參數(shù),第一個(gè)參數(shù)是value,第二個(gè)參數(shù)是index是一個(gè)道理,從這一點(diǎn)上說,這樣寫很符合道理,因?yàn)檫@本身就是一個(gè)循環(huán)遍歷,同樣vue對(duì)象methods中添加remove方法。

new Vue({
      el: '#app',
      data: {
        todolist:[],
        title:'',
        desc:''
      },
      methods:{
        addItem:function(){
          this.todolist.push(new TodoItem(this.title,this.desc))

          this.title=this.desc='';

        },
        remove:function(index){
          this.todolist.splice(index,1);
        }

      }
    })

刷新運(yùn)行頁面:

完整代碼如下:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>demo1</title>
  <script src="https://cdn.bootcss.com/vue/2.4.1/vue.js"></script>
  <style>
    table{
      margin-top: 5px;
      width:300px;
      border-collapse: collapse;
      border: 1px solid #ccc; 
    }
    table > tr>th,table>tr>td{
      height: 25px;
      line-height: 25px;
    }

  </style>
</head>

<body>
  <div id="app">
    <form>
      title:<input type="text" v-model="title"> <br>
      desc:<input type="text" v-model="desc"> <br/>
      <input type="button" value="add todo item" v-on:click="addItem()" />
    </form>
    <table style="width:300px;border-collapse:collapse" border="1">
      <tr>
        <th>title</th>
        <th>desc</th>
        <th></th>
      </tr>
      <tr v-for="(todoItem,index) in todolist">
        <td>{{todoItem.title}}</td>
        <td>{{todoItem.desc}}</td>
        <td><input type="button" value="remove" @click="remove(index)" /></td>
      </tr>
    </table>
  </div>
  <script>
    var TodoItem = function (title, desc) {
      this.title = title;
      this.desc = desc;
    }
    new Vue({
      el: '#app',
      data: {
        todolist:[],
        title:'',
        desc:''
      },
      methods:{
        addItem:function(){
          this.todolist.push(new TodoItem(this.title,this.desc))

          this.title=this.desc='';

        },
        remove:function(index){
          this.todolist.splice(index,1);
        }

      }
    })
  </script>
</body>

</html>

今天就先到這里,增刪改查,查詢和修改還沒有,放在(二)中進(jìn)行添加吧,敬請(qǐng)期待。

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 一文詳解Vue3響應(yīng)式原理

    一文詳解Vue3響應(yīng)式原理

    這篇文章主要介紹了一文詳解Vue3響應(yīng)式原理,文章通過與vue2.x?的響應(yīng)式做對(duì)比詳解展現(xiàn)出了Vue3響應(yīng)式原理詳情,感興趣的小伙伴可以參考一下
    2022-06-06
  • electron-builder打包vue2項(xiàng)目問題總結(jié)

    electron-builder打包vue2項(xiàng)目問題總結(jié)

    這篇文章主要介紹了electron-builder打包vue2項(xiàng)目問題總結(jié),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧
    2024-08-08
  • Vue?Token過期問題的2種解決方案小結(jié)

    Vue?Token過期問題的2種解決方案小結(jié)

    在使用token進(jìn)行登錄的過程中,如果token過期了,需要重新輸入用戶名和密碼登錄,這種體驗(yàn)肯定是不好的,下面這篇文章主要給大家介紹了關(guān)于Vue?Token過期問題的2種解決方案,需要的朋友可以參考下
    2023-02-02
  • vue通過點(diǎn)擊事件讀取音頻文件的方法

    vue通過點(diǎn)擊事件讀取音頻文件的方法

    最近做項(xiàng)目遇到這樣的一個(gè)需求,通過select元素來選擇音頻文件的名稱,點(diǎn)擊按鈕可以進(jìn)行試聽。接下來通過本文給大家介紹vue項(xiàng)目中通過點(diǎn)擊事件讀取音頻文件的方法,需要的朋友可以參考下
    2018-05-05
  • Vue編寫多地區(qū)選擇組件

    Vue編寫多地區(qū)選擇組件

    這篇文章主要為大家詳細(xì)介紹了Vue編寫一個(gè)挺靠譜的多地區(qū)選擇組件的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • vue實(shí)現(xiàn)列表無縫滾動(dòng)效果

    vue實(shí)現(xiàn)列表無縫滾動(dòng)效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)列表無縫滾動(dòng)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Vue實(shí)現(xiàn)監(jiān)聽dom節(jié)點(diǎn)寬高變化方式

    Vue實(shí)現(xiàn)監(jiān)聽dom節(jié)點(diǎn)寬高變化方式

    這篇文章主要介紹了Vue實(shí)現(xiàn)監(jiān)聽dom節(jié)點(diǎn)寬高變化方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • vue中keep-alive組件的入門使用教程

    vue中keep-alive組件的入門使用教程

    這篇文章主要給大家介紹了關(guān)于vue中keep-alive組件的入門使用教程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • Vue Router根據(jù)后臺(tái)數(shù)據(jù)加載不同的組件實(shí)現(xiàn)

    Vue Router根據(jù)后臺(tái)數(shù)據(jù)加載不同的組件實(shí)現(xiàn)

    本文主要介紹了根據(jù)用戶所購買服務(wù)的不同,有不同的頁面展現(xiàn)。文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • vue中table實(shí)現(xiàn)真正的跨越全選

    vue中table實(shí)現(xiàn)真正的跨越全選

    本文主要介紹了vue中table實(shí)現(xiàn)真正的跨越全選,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05

最新評(píng)論

神农架林区| 甘孜县| 土默特左旗| 平昌县| 双桥区| 唐山市| 福海县| 麻栗坡县| 安达市| 德清县| 丰顺县| 杭锦后旗| 罗源县| 彰化县| 合阳县| 庆城县| 共和县| 泽库县| 郧西县| 大石桥市| 徐州市| 甘孜县| 二连浩特市| 筠连县| 绩溪县| 浦县| 苍梧县| 永新县| 美姑县| 化州市| 巴彦县| 慈利县| 南江县| 卢湾区| 东山县| 自贡市| 呼图壁县| 双桥区| 义乌市| 剑阁县| 舞阳县|