亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

最細致的vue.js基礎語法 值得收藏!

2019-11-20 08:36:11
字體:
來源:轉載
供稿:網友

介紹

前段時間接觸到一個庫叫做Vue.js, 個人感覺很棒,所以整理了一篇博文做個介紹。

Vue讀音/vju:/,和view類似。是一個數據驅動的web界面庫。Vue.js只聚焦于視圖層,可以很容易的和其他庫整合。代碼壓縮后只有24kb。

可以去 這里下載 。自己整理了一個Vue.js的demo, https://github.com/chenhao-ch/demo-vue

快速入門
以下代碼是Vue.js最簡單的例子, 當input中的內容變化時,p節點的內容會跟著變化。

<!-- html --><div id="demo"> <p>{{message}}</p> <input v-model="message"></div>new Vue({ el: '#demo', data: {  message: 'Hello Vue.js!' }})

語法介紹

數據綁定
數據綁定就是指將js中的變量自動更新到html中。如下代碼, message的默認值是“Hello Vue.js!”, 那么當頁面啟動時,html中的默認值會被設置成“Hello Vue.js”

<!-- html --><div id="demo"> <p>{{message}}</p> <input v-model="message"></div>new Vue({ el: '#demo', data: {  message: 'Hello Vue.js!' }})

如果要輸出原生的html,可以使用三個大括號來實現

<p>{{{messageHtml}}}</p>

也可以做表達式的綁定

<div>{{length - 1}}</div>
<div>{{isShow ? 'block' : 'none'}}</div>

過濾器
表達式后面可以添加過濾器,對輸出的數據進行過濾。

<div>{{ message | capitalize }}</div>

自定義過濾器
Vue.js運行自己定義過濾器。比如:

Vue.filter('wrap', function (value, begin, end) { return begin + value + end;})<!-- 'vue' => 'before vue after' --><span>{{ message | wrap 'before' 'after' }}</span>

指令

指令是特殊的帶有前綴v-的特性。當表達式的值發生變化時,響應應用特定的行為到DOM。

<!-- 當greeting為true時,才顯示p節點 --><p v-if="greeting">hello</p><!-- 綁定href屬性為js中url的值 --><a v-bind:href="url"></a><!-- 綁定事件,btnClick是js方法 --><button v-on:click="btnClick"></button>

bind,on指令可以進行縮寫

<a v-bind:href="url"></a><a :href="url"></a><button v-on:click="btnClick"></button><button @click="btnClick"></button>

自定義指令

Vue.directive('demo', { bind: function () {  // 準備工作  // 例如,添加事件處理器或只需要運行一次的高耗任務 }, update: function (newValue, oldValue) {  // 值更新時的工作  // 也會以初始值為參數調用一次 }, unbind: function () {  // 清理工作  // 例如,刪除 bind() 添加的事件監聽器 }})

html模板

Vue.js支持對js對象進行判斷(if), 循環(for)輸出。類似于前端模板。

<!-- 判斷,如果ok為true,則顯示yes, 如果為false, 顯示no --><h1 v-if="ok">Yes</h1><h1 v-else>No</h1><!-- 類似于v-if, v-if是是否加節點, v-show是display是否為none --><h1 v-show="ok">Hello!</h1><!-- 循環, 對items屬性進行循環。 track-by指item的是否重復,對重復的進行服用 --><!-- 循環中, $index表示數組第n個元素; $key表示對象的key --><ul id="example-1"> <li v-for="item in items" track-by="_uid">  {{ $index }} : {{ item.message }} </li></ul>var example1 = new Vue({ el: '#example-1', data: {  items: [   {_uid: '1', message: 'Foo' },   {_uid: '2', message: 'Bar' }  ] }})

樣式綁定

樣式也可以根據js中的變量來動態確定。

<!-- isA 為true時, class多一個class-a --><div class="static" v-bind:class="{ 'class-a': isA, 'class-b': isB }"></div><!-- classA, classB 兩個變量的值設置成class --><div v-bind:class="[classA, classB]"><!-- 綁定style, 自動添加前綴,styleObject里面是style鍵值對 --><div v-bind:style="styleObject"></div>

事件綁定

可以使用v-on指令來監聽DOM事件。

<div id="example-2"> <button v-on:click="say('hi', $event)">Say Hi</button> <button v-on:click="say('what', $event)">Say What</button></div>new Vue({ el: '#example-2', methods: {  say: function (msg, event) {   alert(msg);   event.preventDefault();  } }})

常見的阻止冒泡,禁止默認行為等event方法可以通過修飾符來快速處理。

<!-- 禁止冒泡 --><a v-on:click.stop='do'></a><!-- 禁止冒泡和默認行為 --><a @click.stop.prevent="do"></a>

對特殊按鍵生效也可以使用修飾符

<!-- keyCode是13的時候出發。 --><input v-on:keyup.13="submit" /><input v-on:keyup.enter="submit" /><!-- 支持的鍵名有: enter,tab,delete,esc,space,up,down,left,right -->

組件
組件系統是 Vue.js 另一個重要概念,因為它提供了一種抽象,讓我們可以用獨立可復用的小組件來構建大型應用。

注冊
通過Vue.extend()來定義一個組件,Vue.component()來注冊組件。

<div id="box"> <tree></tree></div>// 定義var Tree = Vue.extend({ template: '<div>This is a tree!</div>'});// 注冊Vue.component('tree', Tree);// 開始渲染new Vue({ el: '#box'});// 定義,注冊可以合并成一步。下面的代碼和上面一樣Vue.component('tree', { template: '<div>This is a tree!</div>'});new Vue({ el: '#box'});

渲染結果為:

<div id="box"> <div>This is a tree!</div></div>

還可以進行局部注冊

var Child = Vue.extend({ /* ... */ })var Parent = Vue.extend({ template: '...', components: {  'my-component': Child }})

props
props用于父組件向子組件傳遞數據。

Vue.component('child', { props: ['childMsg'], // prop 可以用在模板內 // 可以用 `this.msg` 設置 template: '<span>{{ childMsg }}</span>'});<child child-msg="hello"></child>

動態props, 當父組件的數據變化時,需要通知子組件跟著變化。

<input v-model="parentMsg" /><child v-bind:child-msg="parentMsg"></child>

父子組件通信

當父組件數據變化時,可以通過props來通知子組件,子組件狀態變化時,可以利用事件的冒泡來通知父組件。

子組件可以用this.$parent訪問它的父組件。父組件有一個數組this.$children,包含它所有的子元素。

例子:

<!-- 子組件模板 --><template id="child-template"> <input v-model="msg"> <button v-on:click="notify">Dispatch Event</button></template><!-- 父組件模板 --><div id="events-example"> <p>Messages: {{ messages | json }}</p> <child></child></div>// 注冊子組件// 將當前消息派發出去Vue.component('child', { template: '#child-template', data: function () {  return { msg: 'hello' } }, methods: {  notify: function () {   if (this.msg.trim()) {    this.$dispatch('child-msg', this.msg) // 觸發child-msg事件    this.msg = ''   }  } }})// 啟動父組件// 將收到消息時將事件推入一個數組var parent = new Vue({ el: '#events-example', data: {  messages: [] }, // 在創建實例時 `events` 選項簡單地調用 `$on` events: {  'child-msg': function (msg) { // 監聽到 child-msg事件   // 事件回調內的 `this` 自動綁定到注冊它的實例上   this.messages.push(msg) // messages改變自動修改html內容  } }})

上面這種寫法child-msg事件觸發后,的執行方法不直觀。 所以可以采用v-on綁定事件。

<!-- 當child-msg觸發時, 執行父組件的handleIt方法。 --><child v-on:child-msg="handleIt"></child>

構建大型應用

在典型的 Vue.js 項目中,我們會把界面拆分為多個小組件,每個組件在同一地方封裝它的 CSS 樣式,模板和 JavaScript 定義,這么做比較好。如上所述,使用 Webpack 或 Browserify 以及合適的源碼轉換器,我們可以這樣寫組件:

當然也可以使用預處理器:

本文已被整理到了《Vue.js前端組件學習教程》,歡迎大家學習閱讀。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
91精品国产高清久久久久久久久| 亚洲电影在线观看| 九九热精品视频| 日韩精品在线免费观看| 国模精品一区二区三区色天香| 国产欧美精品在线播放| 欧美亚洲另类制服自拍| 成人a在线观看| 亚洲国产精品人久久电影| 91精品国产自产在线| 国色天香2019中文字幕在线观看| 中文字幕成人精品久久不卡| 欧美日韩国产va另类| 国产精品久久久久久亚洲调教| 国产日韩专区在线| 国产91色在线|| 日韩毛片在线观看| 亚洲综合视频1区| 美乳少妇欧美精品| 亚洲欧洲黄色网| 亚洲xxxxx电影| 国产精品亚洲аv天堂网| 日韩在线国产精品| 欧美孕妇孕交黑巨大网站| 日韩视频免费中文字幕| 青青草国产精品一区二区| 国产一区二区三区视频| 欧美日韩亚洲国产一区| 美日韩丰满少妇在线观看| 在线免费观看羞羞视频一区二区| 欧美孕妇与黑人孕交| 亚洲一区美女视频在线观看免费| 日韩网站免费观看| 91老司机在线| 久久97精品久久久久久久不卡| 欧美日韩一二三四五区| 成人黄色短视频在线观看| 精品久久香蕉国产线看观看亚洲| www.日韩系列| 国产香蕉一区二区三区在线视频| 久久久久www| 久久免费视频在线观看| 国产又爽又黄的激情精品视频| 亚洲精品久久久久| 欧美最猛性xxxxx免费| 色综合视频网站| 亚洲成人精品在线| 亚洲欧美国产制服动漫| 亚洲va国产va天堂va久久| 欧美老女人在线视频| 一个人看的www欧美| 国产一区二区三区视频| 91亚洲精品久久久久久久久久久久| 久久激情五月丁香伊人| 亚洲二区在线播放视频| 日韩视频免费观看| 性欧美亚洲xxxx乳在线观看| 日本高清不卡在线| 欧美成人精品一区二区| 亚洲欧美日韩精品| 91精品国产色综合久久不卡98口| 成人黄色在线观看| 91手机视频在线观看| 久久全球大尺度高清视频| 午夜精品福利视频| 亚洲国产精品电影在线观看| 欧美性理论片在线观看片免费| 中文字幕在线日韩| 亚洲精品国产免费| 97色在线观看免费视频| 久久亚洲精品一区二区| 欧美在线免费观看| 欧美激情在线观看视频| 成人激情视频免费在线| 欧美日韩一区二区三区| 91午夜在线播放| 亚洲毛片一区二区| 成人两性免费视频| 日产精品99久久久久久| 国产精品一区二区3区| 26uuu亚洲伊人春色| 欧美做受高潮1| 亚洲欧美中文字幕在线一区| 美女撒尿一区二区三区| 午夜精品福利电影| 国模精品一区二区三区色天香| 欧美限制级电影在线观看| 自拍亚洲一区欧美另类| 国产成人精品电影久久久| 国产丝袜一区二区三区免费视频| 日韩中文字幕不卡视频| 91sa在线看| 亚洲变态欧美另类捆绑| 久久激情视频免费观看| 中日韩午夜理伦电影免费| 国产视频999| 国产精品老女人视频| 97在线观看免费高清| 国产亚洲日本欧美韩国| 亚洲国产精品小视频| 91影视免费在线观看| 国产精品女视频| 久久久久久久久久久亚洲| 日韩经典中文字幕在线观看| 国产精品777| 中文在线资源观看视频网站免费不卡| 亚洲a级在线播放观看| 亚洲免费电影一区| 欧美黄色成人网| 成人网中文字幕| www.日韩不卡电影av| 成人福利视频网| 午夜精品久久久久久99热| 亚洲国产天堂久久综合| 国产欧美日韩免费看aⅴ视频| 久久国产精品首页| 欧美精品久久久久久久| 最新国产精品亚洲| 91精品国产91久久久久| 久久精品视频播放| 中文字幕在线亚洲| 亚洲网址你懂得| 中文字幕在线观看日韩| 欧美中文字幕视频在线观看| 亚洲一区制服诱惑| 欧洲亚洲女同hd| 久久在线精品视频| 欧美视频不卡中文| 亚洲mm色国产网站| 亚洲第一中文字幕在线观看| 情事1991在线| 国模精品系列视频| 亚洲天堂av在线免费观看| 91九色单男在线观看| 国产精品99蜜臀久久不卡二区| 免费99精品国产自在在线| 久久91亚洲精品中文字幕奶水| 亚洲国产精品字幕| 欧美巨大黑人极品精男| 92福利视频午夜1000合集在线观看| 亚洲精品国产精品自产a区红杏吧| 自拍偷拍亚洲精品| 精品国产一区二区三区四区在线观看| 主播福利视频一区| 精品久久久久久久大神国产| 亚洲国产精品久久久久久| 国产国产精品人在线视| 色综合伊人色综合网| 国产成人免费av| 中文字幕久久久| 91精品国产高清| 国产精自产拍久久久久久| 日韩中文字幕网| 88国产精品欧美一区二区三区| 国产成人小视频在线观看| 黄色一区二区三区| 国产成人亚洲精品| 久久久久亚洲精品成人网小说| 成人天堂噜噜噜| 久久久天堂国产精品女人| 亚洲一区二区三区在线视频| 精品久久久久久久久国产字幕| 4444欧美成人kkkk| 狠狠躁夜夜躁人人爽天天天天97|