日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 前端技术 > vue >内容正文

vue

013-Vue:前端知识结构概述、基本语法、声明周期

發(fā)布時(shí)間:2024/3/13 vue 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 013-Vue:前端知识结构概述、基本语法、声明周期 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前端知識(shí)結(jié)構(gòu)概覽

1、常見(jiàn)的js框架

說(shuō)明:js框架底層封裝的都是js。

2、常見(jiàn)的ui框架

概述

  • ui是用戶界面的英文簡(jiǎn)稱,那么ui框架又是什么呢?框架又可以理解為模板,ui框架也就是ui模板。這和編程里的封裝有些類似,就是說(shuō)一些ui設(shè)計(jì)的常用效果已經(jīng)被別人封裝成了ui框架,你想實(shí)現(xiàn)哪個(gè)效果只要直接調(diào)用就行,不需要太糾結(jié)于底層實(shí)現(xiàn)。

第一節(jié) Vue.js簡(jiǎn)介

1、框架

任何編程語(yǔ)言在最初的時(shí)候都是沒(méi)有框架的,后來(lái)隨著在實(shí)際開(kāi)發(fā)過(guò)程中不斷總結(jié)『經(jīng)驗(yàn)』,積累『最佳實(shí)踐』,慢慢的人們發(fā)現(xiàn)很多『特定場(chǎng)景』下的『特定問(wèn)題』總是可以『套用固定解決方案』。

于是有人把成熟的『固定解決方案』收集起來(lái),整合在一起,就成了『框架』。

在使用框架的過(guò)程中,我們往往只需要告訴框架『做什么(聲明)』,而不需要關(guān)心框架『怎么做(編程)』。

對(duì)于Java程序來(lái)說(shuō),我們使用框架就是導(dǎo)入那些封裝了『固定解決方案』的jar包,然后通過(guò)『配置文件』告訴框架做什么,就能夠大大簡(jiǎn)化編碼,提高開(kāi)發(fā)效率。我們使用過(guò)的junit其實(shí)就是一款單元測(cè)試框架。

而對(duì)于JavaScript程序來(lái)說(shuō),我們使用框架就是導(dǎo)入那些封裝了『固定解決方案』的『js文件』,然后在框架的基礎(chǔ)上編碼。

用洗衣服來(lái)類比框架:
典型應(yīng)用場(chǎng)景:洗衣服
輸入數(shù)據(jù):衣服、洗衣液、水
不使用框架:手洗
使用框架:使用洗衣機(jī),對(duì)人來(lái)說(shuō),只需要按鍵,具體操作是洗衣機(jī)完成的。人只是告訴洗衣機(jī)做什么,具體的操作是洗衣機(jī)完成的。

實(shí)際開(kāi)發(fā)中使用框架時(shí),我們也主要是告訴框架要做什么,具體操作是框架完成的。

2、Vue.js

2.1、Vue.js的作者

在為AngularJS工作之后,Vue的作者尤雨溪開(kāi)發(fā)了Vue.js。他聲稱自己的思路是提取Angular中自己喜歡的部分,構(gòu)建出一款相當(dāng)輕量的框架。

Vue最早發(fā)布于2014年2月。作者在Hacker News、Echo JS與 Reddit的JavaScript版塊發(fā)布了最早的版本。一天之內(nèi),Vue 就登上了這三個(gè)網(wǎng)站的首頁(yè)。

Vue是Github上最受歡迎的開(kāi)源項(xiàng)目之一。同時(shí),在JavaScript框架/函數(shù)庫(kù)中, Vue所獲得的星標(biāo)數(shù)已超過(guò)React,并高于Backbone.js、Angular 2、jQuery等項(xiàng)目。

2.2、Vue.js的官網(wǎng)介紹

Vue.js官網(wǎng)網(wǎng)址:https://cn.vuejs.org/

Vue (讀音 /vju?/,類似于view) 是一套用于構(gòu)建用戶界面的漸進(jìn)式框架。與其它大型框架不同的是,Vue 被設(shè)計(jì)為可以自底向上逐層應(yīng)用。Vue 的核心庫(kù)只關(guān)注視圖層,不僅易于上手,還便于與第三方庫(kù)或既有項(xiàng)目整合。另一方面,當(dāng)與現(xiàn)代化的工具鏈 以及各種支持類庫(kù)結(jié)合使用時(shí),Vue 也完全能夠?yàn)閺?fù)雜的單頁(yè)應(yīng)用提供驅(qū)動(dòng)。

總結(jié)

  • Vue是一套前端框架,免除原生JavaScript(js)中的DOM操作,簡(jiǎn)化書(shū)寫(xiě)。
  • 基于MVVM(Model-View-ViewModel)思想,實(shí)現(xiàn)數(shù)據(jù)的雙向綁定,將編程的關(guān)注點(diǎn)放在數(shù)據(jù)上。
  • 單向展示:只能把模型中的數(shù)據(jù)取出來(lái)放到視圖中單向展示
    • 缺點(diǎn)1:只能單方向的把數(shù)據(jù)從模型中取出放到視圖層展示
    • 缺點(diǎn)2:只能實(shí)現(xiàn)展示而不是綁定(之前使用js或jquery需要先獲取Dom對(duì)象,在通過(guò)對(duì)象獲取屬性值來(lái)展示數(shù)據(jù),一旦模型數(shù)據(jù)發(fā)生改變那么js代碼也會(huì)發(fā)生變化。現(xiàn)在使用Vue可以實(shí)現(xiàn)綁定,將來(lái)模型數(shù)據(jù)發(fā)生變化視圖中的數(shù)據(jù)也會(huì)跟著變化,不需要修改任何代碼)
  • 雙向綁定:通過(guò)View提供的一個(gè)對(duì)象(ViewModel)將View(html元素)和Model(數(shù)據(jù))實(shí)現(xiàn)雙向綁定
    • 即:模型變了視圖跟著變,視圖變了模型跟著變。而且這些變化都是自動(dòng)完成的。

第二節(jié) 準(zhǔn)備Vue.js環(huán)境

1、開(kāi)發(fā)中的最佳實(shí)踐

『最佳實(shí)踐』是實(shí)際開(kāi)發(fā)中,針對(duì)特定問(wèn)題提煉出來(lái)的最好的解決方案。把『最佳實(shí)踐』抽取出來(lái),封裝到各自編程語(yǔ)言的程序包中,就是框架的基礎(chǔ)。

  • Java語(yǔ)言的程序包:jar包
  • JavaScript語(yǔ)言的程序包:外部js文件

對(duì)于Java程序來(lái)說(shuō),框架=jar包+配置文件。對(duì)于Vue來(lái)說(shuō),導(dǎo)入Vue的外部js文件就能夠使用Vue框架了。

2、Vue框架的js文件獲取

  • 官網(wǎng)提供的下載地:1:https://cdn.jsdelivr.net/npm/vue/dist/vue.js
    說(shuō)明:這種方式直接打開(kāi)的是vue.js里面的內(nèi)容,可以先創(chuàng)建一個(gè)vue.js文件,之后把內(nèi)容復(fù)制到這個(gè)創(chuàng)建的文件中。
  • 官網(wǎng)提供的下載地址2:https://v2.cn.vuejs.org/v2/guide/installation.html

    分別點(diǎn)擊下載:

3、本地創(chuàng)建vue.js文件

說(shuō)明1:使用HBuilderX編寫(xiě)vue.js

  • 第一步:在HBuilderX中創(chuàng)建工程

  • 第二步:在工程目錄下創(chuàng)建script目錄用來(lái)存放vue.js文件

  • 第三步:創(chuàng)建空vue.js文件

  • 第四步:將官網(wǎng)提供的vue.js文件的內(nèi)容復(fù)制粘貼到本地vue.js文件中

說(shuō)明2:使用idea編寫(xiě)vue.js

  • 第一步:在idea中創(chuàng)建java-web工程
  • 第二步:在web目錄下創(chuàng)建script目錄用來(lái)存放vue.js文件
  • 第三步:將官網(wǎng)提供的vue.js文件復(fù)制粘貼到本地的script目錄中

4、創(chuàng)建HTML文檔并引入vue.js

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <script language="JavaScript" src="script/vue.js"></script> <script type="text/javascript"></script> </body> </html>

第三節(jié) 基本語(yǔ)法:聲明式渲染

1、概念

1.1、聲明式

『聲明式』是相對(duì)于『編程式』而言的。

  • 聲明式:告訴框架做什么,具體操作由框架完成
  • 編程式:自己編寫(xiě)代碼完成具體操作

1.2、渲染


上圖含義解釋:

  • 藍(lán)色方框:HTML標(biāo)簽
  • 紅色圓形:動(dòng)態(tài)、尚未確定的數(shù)據(jù)
  • 藍(lán)色圓形:經(jīng)過(guò)程序運(yùn)算以后,計(jì)算得到的具體的,可以直接在頁(yè)面上顯示的數(shù)據(jù)、
  • 渲染:程序計(jì)算動(dòng)態(tài)數(shù)據(jù)得到具體數(shù)據(jù)的過(guò)程

2、demo

2.1、定義js對(duì)象的2種方式

說(shuō)明:可以看到j(luò)s有2種創(chuàng)建對(duì)象方式,寫(xiě)的是js代碼不用引入vue.js文件,這是為了對(duì)比下面創(chuàng)建Vue對(duì)象的方式。

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title> </head> <body> <script type="text/javascript">function hello(){person.sayHello();}//定義js對(duì)象方式一:/*var person = new Object();person.pid = "p001";person.pname="jim";person.sayHello = function(){alert("HELLO world");}*///定義js對(duì)象方式二:var person = {"pid":"p001","pname":"jim","sayHello":function(){alert("HELLO world");}}; </script> <div id="div0"><span>HELLO</span><input type="button" value="打招呼" onclick="hello()"/> </div> </body> </html>

2.2、vue聲明式渲染

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)/* new Vue({xxx}):創(chuàng)建Vue對(duì)象,里面的key加不加引號(hào)都可以。每個(gè)鍵值對(duì)使用逗號(hào)隔開(kāi),最后一個(gè)不用加逗號(hào),里面的參數(shù)為{xxx}可以理解為一個(gè)對(duì)象el: 用于指定Vue對(duì)象要關(guān)聯(lián)的HTML元素。el就是element的縮寫(xiě)通過(guò)id屬性值指定HTML元素時(shí),語(yǔ)法格式是:#id (選擇器)data: 設(shè)置了Vue對(duì)象中保存的數(shù)據(jù)*/var vue = new Vue({el:"#div0","data":{msg:"hello!!!"}});}</script> </head> <body> <div id="div0"><!-- 使用{{}}格式,指定要被渲染的數(shù)據(jù) --><span>{{msg}}</span> </div> </body> </html>

說(shuō)明:

  • 通過(guò)el屬性指定選擇器"#app",來(lái)綁定屬性值id="app"的div標(biāo)簽。
  • 通過(guò)data設(shè)置屬性message和標(biāo)簽中的{{message}}進(jìn)行綁定。

3、查看聲明式渲染的響應(yīng)式效果

運(yùn)行測(cè)試:


修改msg屬性的值:

通過(guò)驗(yàn)證Vue對(duì)象的『響應(yīng)式』效果,我們看到Vue對(duì)象和頁(yè)面上的HTML標(biāo)簽確實(shí)是始終保持著關(guān)聯(lián)的關(guān)系,同時(shí)看到Vue在背后確實(shí)是做了大量的工作。

第四節(jié) 基本語(yǔ)法:綁定元素屬性

1、基本語(yǔ)法

v-bind:HTML標(biāo)簽的原始屬性名

2、demo

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)/* new Vue({xxx}):創(chuàng)建Vue對(duì)象,里面的key加不加引號(hào)都可以。里面的參數(shù)為{xxx}可以理解為一個(gè)對(duì)象el: 用于指定Vue對(duì)象要關(guān)聯(lián)的HTML元素。el就是element的縮寫(xiě)通過(guò)id屬性值指定HTML元素時(shí),語(yǔ)法格式是:#id (選擇器)data: 設(shè)置了Vue對(duì)象中保存的數(shù)據(jù)*/var vue = new Vue({el:"#div0","data":{msg:"hello!!!aaaaaaaa",uname:"鳩摩智"}});}</script> </head> <body> <div id="div0"><!-- 使用{{}}格式,指定要被渲染的數(shù)據(jù) --><span>{{msg}}</span><!-- <input type="text" v-bind:value="uname"/>v-bind:value表示綁定value屬性 , v-bind可以省略,也就是 :value注意:在標(biāo)簽體內(nèi)通過(guò){{}}告訴Vue這里需要渲染在HTML標(biāo)簽的屬性中,通過(guò)v-bind:屬性名="表達(dá)式"的方式告訴Vue這里要渲染--><input type="text" :value="uname"/> </div> </body> </html>

3、小結(jié)

本質(zhì)上,v-bind:屬性名="表達(dá)式"和{{}}它們都是用Vue對(duì)象來(lái)渲染頁(yè)面。只不過(guò):

  • 文本標(biāo)簽體:使用{{}}形式
  • 屬性:使用v-bind:屬性名="表達(dá)式"形式

第五節(jié) 基本語(yǔ)法:雙向數(shù)據(jù)綁定

1、提出問(wèn)題

而使用了雙向綁定后,就可以實(shí)現(xiàn):頁(yè)面上數(shù)據(jù)被修改后,Vue對(duì)象中的數(shù)據(jù)屬性也跟著被修改。

2、demo

2.1、頁(yè)面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0","data":{msg:"hello!!!aaaaaaaa"}});}</script> </head> <body> <div id="div0"><span>{{msg}}</span><br/><!--v-model指的是雙向綁定,也就是說(shuō)之前的v-bind是通過(guò)msg這個(gè)變量的值來(lái)控制input輸入框現(xiàn)在 v-model 不僅msg來(lái)控制input輸入框,反過(guò)來(lái),input輸入框的內(nèi)容也會(huì)改變msg的值<input type="text" v-model:value="msg"/>,:value可以省略--><input type="text" v-model="msg"/> </div> </body> </html>

2.2、頁(yè)面效果

p標(biāo)簽內(nèi)的數(shù)據(jù)能夠和文本框中的數(shù)據(jù)實(shí)現(xiàn)同步修改

  • input 標(biāo)簽內(nèi)的msg綁定了Vue對(duì)象中的msg屬性,msg屬性又綁定了span標(biāo)簽內(nèi)的{{msg}}值,所以在頁(yè)面修改標(biāo)簽中的值span標(biāo)簽中的{{msg}}值也跟著變化。

3、去除前后空格

3.1、trim修飾符

實(shí)際開(kāi)發(fā)中,要考慮到用戶在輸入數(shù)據(jù)時(shí),有可能會(huì)包含前后空格。而這些前后的空格對(duì)我們程序運(yùn)行來(lái)說(shuō)都是干擾因素,要去掉。在v-model后面加上.trim修飾符即可實(shí)現(xiàn)。

<!--trim可以去除首尾空格--><input type="text" v-model.trim="msg"/>

Vue會(huì)幫助我們?cè)谖谋究蚴ソ裹c(diǎn)時(shí)自動(dòng)去除前后空格。
沒(méi)加之前:

加了之后:

第六節(jié) 基本語(yǔ)法:條件渲染

根據(jù)Vue對(duì)象中,數(shù)據(jù)屬性的值來(lái)判斷是否對(duì)HTML頁(yè)面內(nèi)容進(jìn)行渲染。

1、v-if

1.1、頁(yè)面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0","data":{num:2}});}</script> </head> <body> <div id="div0"><input type="text" v-model="num"/><!-- v-if表示里面的條件成立才能夠綁定,即:如果num除以2的余數(shù)為0才成立--><div v-if="num%2==0" style="width:200px;height:200px;background-color: chartreuse;">&nbsp;</div> </div> </body> </html>

1.2、運(yùn)行測(cè)試

說(shuō)明:由于num同時(shí)綁定了input標(biāo)簽的v-model="num"屬性和div標(biāo)簽的v-if="num%2==0"屬性,所以在文本框輸入奇數(shù)、偶數(shù),顯示效果也跟著變化。


2、v-if和v-else

2.1、頁(yè)面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0","data":{num:2}});}</script> </head> <body> <div id="div0"><input type="text" v-model="num"/><!-- 表示如果條件成立綁定v-if中的,如果條件不成立綁定v-else中的--><!-- v-if和v-else之間不可以插入其他節(jié)點(diǎn)/標(biāo)簽 --><div v-if="num%2==0" style="width:200px;height:200px;background-color: chartreuse;">&nbsp;</div><div v-else="num%2==0" style="width:200px;height:200px;background-color: coral">&nbsp;</div> </div> </body> </html>

2.2、運(yùn)行測(cè)試

3、v-show

3.1、頁(yè)面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0","data":{num:2}});}</script> </head> <body> <div id="div0"><input type="text" v-model="num"/><!-- 表示如果條件成立綁定v-if中的,如果條件不成立綁定v-else中的--><!-- v-if和v-else之間不可以插入其他節(jié)點(diǎn)/標(biāo)簽 --><div v-if="num%2==0" style="width:200px;height:200px;background-color: chartreuse;">&nbsp;</div><div v-else="num%2==0" style="width:200px;height:200px;background-color: coral">&nbsp;</div><!-- v-show --><!-- v-show是通過(guò)display屬性來(lái)控制這個(gè)div是否顯示,標(biāo)簽還在只不過(guò)不滿足時(shí)設(shè)置了屬性為display:none ,上面使用v-if屬性,如果不滿足連這個(gè)div標(biāo)簽都沒(méi)有了--><div v-show="num%2==0" style="width:200px;height:200px;background-color:blueviolet;">&nbsp;</div></div> </body> </html>

3.2、運(yùn)行測(cè)試

第七節(jié) 基本語(yǔ)法:列表渲染

1、迭代一個(gè)簡(jiǎn)單的數(shù)組

1.1、頁(yè)面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0","data":{"fruitList": ["apple","banana","orange","grape","dragonfruit"]}});}</script> </head> <body> <div id="div0"><ul><!-- 使用v-for語(yǔ)法遍歷數(shù)組 --><!-- v-for的值是語(yǔ)法格式是:引用數(shù)組元素的變量名 in Vue對(duì)象中的數(shù)組屬性名 --><!-- 在文本標(biāo)簽體中使用{{引用數(shù)組元素的變量名}}渲染每一個(gè)數(shù)組元素 --><li v-for="fruit in fruitList">{{fruit}}</li></ul> </div> </body> </html>

1.2、運(yùn)行測(cè)試

2、迭代一個(gè)對(duì)象數(shù)組

2.1、頁(yè)面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0","data":{fruitList:[ //這是一個(gè)數(shù)組,里面存的是一個(gè)個(gè)的對(duì)象{fname:"蘋(píng)果",price:5,fcount:100,remark:"蘋(píng)果很好吃"},{fname:"菠蘿",price:3,fcount:120,remark:"菠蘿很好吃"},{fname:"香蕉",price:4,fcount:50,remark:"香蕉很好吃"},{fname:"西瓜",price:6,fcount:100,remark:"西瓜很好吃"}]}});}</script> </head> <body> <div id="div0"><table border="1" width="400" cellpadding="4" cellspacing="0"><tr><th>名稱</th><th>單價(jià)</th><th>庫(kù)存</th><th>備注</th></tr><!-- v-for表示迭代:循環(huán)迭代fruitList數(shù)組,把每個(gè)值賦值給fruit--><tr align="center" v-for="fruit in fruitList"><td>{{fruit.fname}}</td><td>{{fruit.price}}</td><td>{{fruit.fcount}}</td><td>{{fruit.remark}}</td></tr></table> </div> </body> </html>

2.2、運(yùn)行測(cè)試

第八節(jié) 基本語(yǔ)法:事件驅(qū)動(dòng)

1、demo:字符串順序反轉(zhuǎn)

1.1、頁(yè)面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0",data:{msg:"hello world!"},//在methods屬性中用來(lái)聲明事件的方法methods:{ myReverse:function(){/* this.msg:獲取到msg* .split(","):表示按逗號(hào)分隔* .split(" "):表示按空格分隔* .split(""):里面是一個(gè)字符串連空格都沒(méi)有,表示把每個(gè)數(shù)據(jù)都分隔開(kāi)* .reverse():反轉(zhuǎn),取到之后每個(gè)都反轉(zhuǎn)* .join(""):連接,反轉(zhuǎn)之后在連在一起* 最后賦值給 this.msg* */this.msg = this.msg.split("").reverse().join("");}}});}</script> </head> <body> <div id="div0"><span>{{msg}}</span><br/><!-- v-on:click 表示綁定點(diǎn)擊事件,v-on:事件類型="事件響應(yīng)函數(shù)的函數(shù)名"注意這個(gè) myReverse不要寫(xiě)括號(hào)(),當(dāng)點(diǎn)擊這個(gè)按鈕時(shí)會(huì)調(diào)用myReverse對(duì)應(yīng)的方法--><!-- v-on可以省略,變成 @click --><!--<input type="button" value="反轉(zhuǎn)" v-on:click="myReverse"/>--><input type="button" value="反轉(zhuǎn)" @click="myReverse"/> </div> </body> </html>

1.2、運(yùn)行測(cè)試


2、demo:獲取鼠標(biāo)移動(dòng)時(shí)的坐標(biāo)信息

2.1、頁(yè)面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0",data:{"position":"暫時(shí)沒(méi)有獲取到鼠標(biāo)的位置信息"},"methods":{"recordPosition":function(event){this.position = event.clientX + " " + event.clientY;}}});}</script> </head> <body> <div id="div0"><input type="button" value="鼠標(biāo)坐標(biāo)" v-on:mousemove="recordPosition"/><p id="showPosition">{{position}}</p></div> </body> </html>

2.2、運(yùn)行測(cè)試

第九節(jié) 基本語(yǔ)法:偵聽(tīng)屬性

1、頁(yè)面代碼

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0",data:{num1:1,num2:2,num3:0},//在watch屬性中聲明對(duì)num1和num2屬性進(jìn)行『偵聽(tīng)』的函數(shù)watch:{//偵聽(tīng)屬性num1和num2//當(dāng)num1的值有改動(dòng)時(shí),那么需要調(diào)用后面定義的方法 , newValue指的是num1的新值(頁(yè)面文本框輸入的值)//parseInt()解析為int類型,不用的話是字符串類型結(jié)果顯示字符串拼接num1:function(newValue){this.num3 = parseInt(newValue) + parseInt(this.num2);},num2:function(newValue){this.num3 = parseInt(this.num1) + parseInt(newValue) ;}}});}</script> </head> <body> <div id="div0"><input type="text" v-model="num1" size="2"/>+<input type="text" v-model="num2" size="2"/>=<span>{{num3}}</span> </div> </body> </html>

2、運(yùn)行測(cè)試

第十節(jié) 練習(xí)

1、功能效果演示

2、任務(wù)拆解

  • 第一步:顯示表格
  • 第二步:顯示四個(gè)文本框
  • 第三步:創(chuàng)建一個(gè)p標(biāo)簽用來(lái)顯示用戶在文本框中實(shí)時(shí)輸入的內(nèi)容
  • 第四步:點(diǎn)擊添加記錄按鈕實(shí)現(xiàn)記錄的添加

3、第一步:顯示表格

3.1、HTML標(biāo)簽

<table id="appTable"><tr><th>編號(hào)</th><th>姓名</th><th>年齡</th><th>專業(yè)</th></tr><tr v-for="employee in employeeList"><td>{{employee.empId}}</td><td>{{employee.empName}}</td><td>{{employee.empAge}}</td><td>{{employee.empSubject}}</td></tr> </table>

3.2、Vue代碼

var appTable = new Vue({"el": "#appTable","data": {"employeeList": [{"empId": 1,"empName": "tom","empAge": 11,"empSubject": "java"},{"empId": 2,"empName": "jerry","empAge": 22,"empSubject": "php"},{"empId": 3,"empName": "peter","empAge": 33,"empSubject": "python"}]} });

4、第二步:顯示四個(gè)文本框

4.1、HTML標(biāo)簽

<!-- 四個(gè)文本框、顯示收集到的文本框數(shù)據(jù)的p標(biāo)簽、按鈕這三個(gè)部分需要共享數(shù)據(jù),所以要放在同一個(gè)app中 --> <div id="appDiv"><!-- 第一部分:四個(gè)文本框 -->編號(hào):<input type="text" v-model="empId" /><br/>姓名:<input type="text" v-model="empName" /><br/>年齡:<input type="text" v-model="empAge" /><br/>專業(yè):<input type="text" v-model="empSubject" /><br/><!-- 第二部分:顯示收集到的文本框數(shù)據(jù)的p標(biāo)簽 --><!-- 第三部分:按鈕 --></div>

4.2、Vue代碼

var appDiv = new Vue({"el":"#appDiv","data":{// 初始值設(shè)置空字符串即可"empId":"","empName":"","empAge":"","empSubject":""} });

測(cè)試是否正確的方式是:在控制臺(tái)嘗試修改Vue對(duì)象的數(shù)據(jù)屬性值:

5、第三步:創(chuàng)建一個(gè)p標(biāo)簽

HTML標(biāo)簽:

<!-- 四個(gè)文本框、顯示收集到的文本框數(shù)據(jù)的p標(biāo)簽、按鈕這三個(gè)部分需要共享數(shù)據(jù),所以要放在同一個(gè)app中 --> <div id="appDiv"><!-- 第一部分:四個(gè)文本框 -->編號(hào):<input type="text" v-model="empId" placeholder="請(qǐng)輸入編號(hào)" /><br/>姓名:<input type="text" v-model="empName" placeholder="請(qǐng)輸入姓名" /><br/>年齡:<input type="text" v-model="empAge" placeholder="請(qǐng)輸入年齡" /><br/>專業(yè):<input type="text" v-model="empSubject" placeholder="請(qǐng)輸入專業(yè)" /><br/><!-- 第二部分:顯示收集到的文本框數(shù)據(jù)的p標(biāo)簽 --><p>{{empId}} {{empName}} {{empAge}} {{empSubject}}</p><!-- 第三部分:按鈕 --></div>

6、第四步:點(diǎn)擊添加記錄按鈕

6.1、第一小步:給按鈕設(shè)置事件驅(qū)動(dòng)

[1]HTML標(biāo)簽

<!-- 四個(gè)文本框、顯示收集到的文本框數(shù)據(jù)的p標(biāo)簽、按鈕這三個(gè)部分需要共享數(shù)據(jù),所以要放在同一個(gè)app中 --> <div id="appDiv"><!-- 第一部分:四個(gè)文本框 -->編號(hào):<input type="text" v-model="empId" placeholder="請(qǐng)輸入編號(hào)" /><br/>姓名:<input type="text" v-model="empName" placeholder="請(qǐng)輸入姓名" /><br/>年齡:<input type="text" v-model="empAge" placeholder="請(qǐng)輸入年齡" /><br/>專業(yè):<input type="text" v-model="empSubject" placeholder="請(qǐng)輸入專業(yè)" /><br/><!-- 第二部分:顯示收集到的文本框數(shù)據(jù)的p標(biāo)簽 --><p>{{empId}} {{empName}} {{empAge}} {{empSubject}}</p><!-- 第三部分:按鈕 --><button type="button" v-on:click="addRecord">添加記錄</button></div>

[2]Vue代碼

var appDiv = new Vue({"el":"#appDiv","data":{// 初始值設(shè)置空字符串即可"empId":"","empName":"","empAge":"","empSubject":""},"methods":{"addRecord":function(){console.log("我點(diǎn)擊了那個(gè)按鈕……");}} });

6.2、第二小步:打印一下文本框輸入的數(shù)據(jù)

var appDiv = new Vue({"el":"#appDiv","data":{// 初始值設(shè)置空字符串即可"empId":"","empName":"","empAge":"","empSubject":""},"methods":{"addRecord":function(){console.log("我點(diǎn)擊了那個(gè)按鈕……");console.log(this.empId);console.log(this.empName);console.log(this.empAge);console.log(this.empSubject);}} });

6.3、第三小步:將收集到的數(shù)據(jù)添加到表格中

"addRecord":function(){// 確認(rèn)單擊事件是否綁定成功console.log("我點(diǎn)擊了那個(gè)按鈕……");// 確認(rèn)是否能夠正確收集到文本框數(shù)據(jù)console.log(this.empId);console.log(this.empName);console.log(this.empAge);console.log(this.empSubject);// 將收集到的文本框數(shù)據(jù)封裝為一個(gè)對(duì)象var employee = {"empId":this.empId,"empName":this.empName,"empAge":this.empAge,"empSubject":this.empSubject};// 將上面的對(duì)象壓入表格數(shù)據(jù)的employeeList數(shù)組appTable.employeeList.push(employee); }

第十一節(jié) Vue對(duì)象生命周期

1、概念

在我們各種語(yǔ)言的編程領(lǐng)域中,『生命周期』都是一個(gè)非常常見(jiàn)的概念。一個(gè)對(duì)象從創(chuàng)建、初始化、工作再到釋放、清理和銷毀,會(huì)經(jīng)歷很多環(huán)節(jié)的演變。比如我們?cè)贘avaSE階段學(xué)習(xí)過(guò)線程的生命周期,今天學(xué)習(xí)Vue對(duì)象的生命周期,將來(lái)還要學(xué)習(xí)Servlet、Filter等Web組件的生命周期。

2、Vue對(duì)象的生命周期

3、生命周期鉤子函數(shù)

Vue允許我們?cè)谔囟ǖ纳芷诃h(huán)節(jié)中通過(guò)鉤子函數(shù)來(lái)加入我們的代碼。

鉤子函數(shù):鉤子函數(shù)是在一個(gè)事件觸發(fā)的時(shí)候,在系統(tǒng)級(jí)捕獲到了他,然后做一些操作。一段用以處理系統(tǒng)消息的程序。“鉤子”就是在某個(gè)階段給你一個(gè)做某些處理的機(jī)會(huì)。

特點(diǎn)

  • 是個(gè)函數(shù),在系統(tǒng)消息觸發(fā)時(shí)被系統(tǒng)調(diào)用
  • 不是用戶自己觸發(fā)的
  • 使用時(shí)直接編寫(xiě)函數(shù)體
  • 鉤子函數(shù)的名稱是確定的,當(dāng)系統(tǒng)消息觸發(fā),自動(dòng)會(huì)調(diào)用。

<!DOCTYPE html> <html lang="en"> <head><meta charset="UTF-8"><title>Title</title><!--引入vue.js文件--><script language="JavaScript" src="script/vue.js"></script><script language="JavaScript">window.onload=function(){//文檔就緒事件函數(shù)var vue = new Vue({el:"#div0",data:{msg:1},methods:{changeMsg:function(){this.msg = this.msg + 1 ;}},/*vue對(duì)象創(chuàng)建之前*/beforeCreate:function(){console.log("beforeCreate:vue對(duì)象創(chuàng)建之前---------------");console.log("msg:"+this.msg);},/*vue對(duì)象創(chuàng)建之后*/created:function(){console.log("created:vue對(duì)象創(chuàng)建之后---------------");console.log("msg:"+this.msg);},/*數(shù)據(jù)裝載之前*/beforeMount:function(){console.log("beforeMount:數(shù)據(jù)裝載之前---------------");console.log("span:"+document.getElementById("span").innerText);},/*數(shù)據(jù)裝載之后*/mounted:function(){console.log("mounted:數(shù)據(jù)裝載之后---------------");console.log("span:"+document.getElementById("span").innerText);},beforeUpdate:function(){console.log("beforeUpdate:數(shù)據(jù)更新之前---------------");console.log("msg:"+this.msg);console.log("span:"+document.getElementById("span").innerText);},updated:function(){console.log("Updated:數(shù)據(jù)更新之后---------------");console.log("msg:"+this.msg);console.log("span:"+document.getElementById("span").innerText);}});}</script> </head> <body> <div id="div0"><span id="span">{{msg}}</span><br/><input type="button" value="改變msg的值" @click="changeMsg"/> </div> </body> </html>

訪問(wèn)測(cè)試:

第一節(jié) Ajax概述

第二節(jié) Axios基本用法

總結(jié)

以上是生活随笔為你收集整理的013-Vue:前端知识结构概述、基本语法、声明周期的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲久久天堂 | 国产精品一二三四五区 | 五月天婷婷影院 | 污视频网站在线看 | 欧美色炮| 日本亚洲一区 | 最新永久地址 | 欧美精品hd| fc2ppv色の美マンに中出し | 欧美日韩在线观看一区二区三区 | 国产大片一区二区三区 | 秋霞午夜影院 | 激情文学8888 | 婷婷激情社区 | 午夜在线播放 | 成年人黄视频 | 国产精品16p | 欧美91成人网 | 日韩精品国产一区二区 | 成人在线视频免费看 | 天堂网资源| av动态 | 国产一区二区精品在线观看 | 黄色一级网址 | 欧美激情综合网 | 国产成人免费片在线观看 | 亚洲最大福利网 | 国产精品久久久不卡 | 成年人在线观看网站 | 国产美女在线精品 | 国产高清毛片 | 中文字幕欲求不满 | 青青草原一区二区 | 日本一区二区免费在线观看 | 欧美操大逼 | 亚洲黄色网址大全 | 欧美老女人性生活 | 欧美日韩免费观看一区=区三区 | 草在线 | 欧美精品一二区 | 日本三级视频网站 | 上海女子图鉴 | 天天色天天爱 | av免费在线电影 | jiz亚洲 | 亚洲激情av | 极品美女av | 国产视频手机在线播放 | 9色av| 有码一区二区三区 | 国产精品久久久久久久久夜色 | 亚洲精品影院 | 性色av一区 | 看黄色网址 | 五十路av在线 | 国产中文欧美日韩在线 | 久久久久久久999 | 日本深夜福利 | 中日韩男男gay无套 人人草人人干 | 毛片看 | 亚洲天堂成人av | 国产a级片免费看 | 长河落日 | 女的高潮流时喷水图片大全 | 久久综合伊人 | 精品少妇无码av无码专区 | 奇米影视在线观看 | 天天干天天做 | 精品国产aⅴ | 男女午夜爽爽 | 欧美特黄一区二区三区 | 国产乱淫av麻豆国产免费 | 日韩亚洲视频在线观看 | 国产精品视频全国免费观看 | av青青 | 少妇精品一区二区 | 国产中文字幕免费 | 国产精品乱码久久久久 | 日韩在线观看一区 | 免费看又黄又无码的网站 | 影音先锋黄色资源 | 日韩精品中文字幕一区二区三区 | 黄色一及毛片 | 亚洲一区二区三区婷婷 | 日本一级大毛片a一 | www.久久久.com| 波多野吉衣一区二区 | 天天躁日日躁狠狠躁 | 夫妻性生活黄色片 | 欧美性生交xxxxx | 国产视频精品久久 | 影音先锋在线观看视频 | 日韩欧美国产一区二区三区在线观看 | 欧美激情在线播放 | 久久国内偷拍 | 精品久久久久久久久久 | 欧美淫 | 欧美性大战久久久久久久蜜桃 | 女婴高潮h啪啪 |