這篇文章主要介紹Vue.js有什么用,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)建站是由多位在大型網(wǎng)絡(luò)公司、廣告設(shè)計(jì)公司的優(yōu)秀設(shè)計(jì)人員和策劃人員組成的一個(gè)具有豐富經(jīng)驗(yàn)的團(tuán)隊(duì),其中包括網(wǎng)站策劃、網(wǎng)頁(yè)美工、網(wǎng)站程序員、網(wǎng)頁(yè)設(shè)計(jì)師、平面廣告設(shè)計(jì)師、網(wǎng)絡(luò)營(yíng)銷(xiāo)人員及形象策劃。承接:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、網(wǎng)站改版、網(wǎng)頁(yè)設(shè)計(jì)制作、網(wǎng)站建設(shè)與維護(hù)、網(wǎng)絡(luò)推廣、數(shù)據(jù)庫(kù)開(kāi)發(fā),以高性?xún)r(jià)比制作企業(yè)網(wǎng)站、行業(yè)門(mén)戶平臺(tái)等全方位的服務(wù)。首先,咋們要學(xué)習(xí)一個(gè)js框架,那么肯定要引入該框架的基礎(chǔ)庫(kù),這里我創(chuàng)建一個(gè)頁(yè)面并且引用官網(wǎng)的庫(kù)是:
下面我們來(lái)看一段Vue的基礎(chǔ)使用代碼:
var app = new Vue({ el: "#appVue", data: { msg: "第一個(gè)vue", } });
分析下代碼,這個(gè)Vue需要的參數(shù)傳遞是一個(gè){}對(duì)象;里面的el和data是參數(shù)名稱(chēng);el對(duì)應(yīng)的是咋們的頁(yè)面上某個(gè)塊元素的id(比如div,table的id屬性);data對(duì)應(yīng)的是數(shù)據(jù)源;msg是咋們自定義的數(shù)據(jù)源名稱(chēng);好了咋們?cè)賮?lái)看一下對(duì)應(yīng)的html代碼和效果圖:
Vue - 學(xué)習(xí)大雜燴
效果圖:
很明顯我們初始化的數(shù)據(jù)msg(“第一個(gè)vue”)在input中體現(xiàn)出來(lái)了,細(xì)看一下這個(gè)input標(biāo)簽的屬性多了一個(gè)v-model屬性,并且她對(duì)應(yīng)的值是咋們初始化定義的msg,由此可見(jiàn)v-model起到了數(shù)據(jù)綁定作用;好咋們?cè)賮?lái)吧數(shù)據(jù)值弄復(fù)雜點(diǎn),在data中再增加一個(gè)json格式的數(shù)組如:
blogs: [ { title: "webapi" }, { title: "wcf" }, { title: "mvc" } ]
然后咋們?cè)黾尤缦碌膆tml:
直接刷新頁(yè)面,看下效果圖:
從結(jié)果能夠看出咋們定義的數(shù)據(jù),直接被遍歷展示在了頁(yè)面,再來(lái)分析下具體的代碼,相比較普通的li元素,此時(shí)多了一個(gè)v-for屬性,并且對(duì)一個(gè)的值有一個(gè)這樣的語(yǔ)法規(guī)則 (obj,index) in arr ,就類(lèi)似于for循環(huán)的寫(xiě)法并且還有一個(gè)遍歷編號(hào)index,有了循環(huán)那肯定需要把值展示出來(lái),這個(gè)時(shí)候可以看到li元素子級(jí)里面的寫(xiě)法是 {{index}} - {{blog.title}} ,來(lái)分析下寫(xiě)法規(guī)則:
1. {{}}是輸出文本的格式,其中包含了要輸出的對(duì)象
2. 參數(shù)index對(duì)應(yīng)就是v-for里面的index,對(duì)應(yīng)的值是遍歷的序號(hào),從0開(kāi)始
3. blog.title對(duì)應(yīng)的是v-for里面的blog,和她對(duì)應(yīng)的自定義屬性title
由上面{{}}數(shù)據(jù)綁定寫(xiě)法,不得不引出我們對(duì)她的好奇心,這種寫(xiě)法其實(shí)在很多js數(shù)據(jù)綁定框架中都相同(比如:angularjs),下面我們來(lái)做一個(gè)相加的小例子來(lái)更深刻記住這種寫(xiě)法,首先在剛才的data屬性中增加兩個(gè)屬性x和y:
data: { msg: "第一個(gè)vue", blogs: [ { title: "webapi" }, { title: "wcf" }, { title: "mvc" } ], x: 444, y: 2 },
然后增加如下html代碼:
* = {{x * y}}
屬性頁(yè)面執(zhí)行下效果:
由此能夠看出 {{x * y}} 允許表達(dá)式,并且當(dāng)我文本框中的x或y值修改后,此{(lán){x*y}}會(huì)自動(dòng)重新計(jì)算,有點(diǎn)類(lèi)似于我們自己寫(xiě)的js計(jì)算后重新賦值到顯示框中的概念;下面我們來(lái)看vue中怎么定義一個(gè)方法,這里用到她的一個(gè)屬性methods,我們定義如下的代碼:
var app = new Vue({ el: "#appVue", data: { msg: "第一個(gè)vue", blogs: [ { title: "webapi" }, { title: "wcf" }, { title: "mvc" } ], x: 444, y: 2 }, methods: { showMsg: function () {17 this.msg = "我是" + this.msg; } } }
再來(lái)增加如下的html元素,
好了再來(lái)看下運(yùn)行的效果圖并且多次點(diǎn)擊按鈕:
得到的效果是,一直在咋們 v-model="msg" 文本框中增加“我是”,這里得到的結(jié)論是按鈕出發(fā)了我們定義在vue中methods中的方法showMsg,再來(lái)看下按鈕上的這個(gè)屬性 v-on:click 就是用來(lái)表示綁定點(diǎn)擊事件的,這里的v-on:click可以縮寫(xiě)成@click,由于我在vs中的mvc試圖模板不支持這種寫(xiě)法,所以本篇還是使用v-on這種寫(xiě)法來(lái)綁定事件;我們?cè)賮?lái)用一用她的過(guò)濾器,這里咋們還是在vue中增加如下filters的代碼,定義一個(gè)大小寫(xiě)的過(guò)濾器:
filters: { toUpper: function (val, isUpper) { if (!val) { return ""; } return isUpper ? val.toUpperCase() : val.toLowerCase(); } }
為了方便看效果,我們修改上面的v-model="msg"的文本框代碼如下:
{{msg|toUpper(true)}}
{{msg|toUpper(false)}}
我們?cè)谖谋究蛑性黾恿艘粋€(gè) {{msg|toUpper(true)}} 寫(xiě)法,細(xì)心朋友能發(fā)下后面的toUpper就是我們剛才定義的過(guò)濾器的方法,傳遞了一個(gè)參數(shù)true,然后看下效果圖:
通過(guò)使用不同參數(shù)的filter的對(duì)比,能看出我們過(guò)濾器在此實(shí)例中的效果,這里注意的是在msg后面直接使用‘|'隔開(kāi)就可以增加我們定義的過(guò)濾器了,如果多個(gè)以此類(lèi)推使用‘|'追加隔開(kāi)就行了,還有就是我們定義的 toUpper: function (val, isUpper) 方法中有兩個(gè)參數(shù),第一個(gè)參數(shù)就是綁定的msg本身,第二個(gè)參數(shù)才是我們需要手動(dòng)傳遞的,這個(gè)一定要分開(kāi);時(shí)間不多了,這里就不再講解其他的常用的特性和屬性了,直接來(lái)看下面vue使用webapi的數(shù)據(jù)體現(xiàn)的一個(gè)例子;
» WebApi + Vue.js 示例
首先,這里用到了Vue提供的組件概念component,她和js變量一樣有全局和局部(私有)兩種,代碼方面差距不是很大效果也一樣,這里我們用到的是局部方式來(lái)定義一個(gè)組件,下面先來(lái)看整體代碼:
var blogApp = new Vue({ el: "#divBlogs", data: { blogs: [] }, methods: { getBlogs: function () { var that = this; $.getJSON("http://www.lovexins.com:1001/api/values?task=2", function (result) { if (!result) { return; } that.blogs = result; }); } }, components: { "div-blog": { props: ["item"], template: '' + '', filters: { toUpperOrLower: function (val, isUpper) { if (!val) { return ""; } return isUpper ? val.toUpperCase() : val.toLowerCase(); } } } } });' + ' {{item.Title | toUpperOrLower(false)}}' + '
' + '' + ' {{item.Des}}' + '
' + '
' + '' + ' 作者:{{item.NickName}} 發(fā)布時(shí)間:
' + '{{item.CreateTime}}
推薦:{{item.ZanNum}}
閱讀:{{item.ReadNum}}
評(píng)論:{{item.CommiteNum}}
' + '
這里定義的格式和上面第一小節(jié)使用到的差不多,只是多了一個(gè)components的定義,這個(gè)就是組件的關(guān)鍵字,咋們來(lái)逐一分析下代碼步驟;
1. blogs: []是我們定義的一個(gè)博客信息數(shù)組
2. methods屬性中g(shù)etBlogs方法用到了一段 var that = this; 這樣的代碼,這里的this是上面創(chuàng)建的 var blogApp = new Vue() 對(duì)象,她可以直接使用data中定義的博客數(shù)據(jù)數(shù)組blogs,因此有了下面通過(guò)jquery的getJSON獲取webapi數(shù)據(jù)后,直接賦值給博客數(shù)組bolgs
3. components組件中自定義了一個(gè)名為“div-blog”的組件,參數(shù)名稱(chēng)是props定義的item;template是對(duì)應(yīng)的模板,里面可以直接使用item來(lái)獲取對(duì)應(yīng)的參數(shù)值;
4. 這里也定義了一個(gè)filters,同樣是轉(zhuǎn)大小寫(xiě)的,寫(xiě)法可以忽略了,主要注意的地方這里局部的定義的主鍵里面使用filters的時(shí)候也同樣是 {{item.Title | toUpperOrLower(false)}} 格式
好了通過(guò)上面總結(jié)注意點(diǎn),咋們?cè)賮?lái)看下怎么在html中使用這個(gè)自定義的組件呢,如下整體html代碼:
引用自定義組件的代碼就一句:
這里的div-blog就是對(duì)應(yīng)上面總結(jié)的第3點(diǎn)說(shuō)的,自定義主鍵名稱(chēng),需要注意的是如果自定義組件名稱(chēng)格式如divBlog(駝峰格式),那么我們?cè)趆tml中使用格式就必須是div-Blog,通過(guò)‘-'分割開(kāi)來(lái),這個(gè)細(xì)節(jié)特別要注意不然頁(yè)面不會(huì)有效果,好了說(shuō)了這么多來(lái)看下運(yùn)行的效果圖:
以上是“Vue.js有什么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司行業(yè)資訊頻道!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。