想把springboot和vue結合起來,可是簡單的學完了vue仍是不知道怎麼使用,vue要不要單獨開一個服務去支撐纔可使用?一直沒想明白這個問題 ,先記錄下他的簡單使用方法和標籤javascript
@初始化: var vm = new Vue({ // 選項 }) @數據綁定最多見的形式就是使用 {{...}}(雙大括號)的文本插值: <div id="vue_det"> <h1>site : {{site}}</h1> <h1>url : {{url}}</h1> <h1>Alexa : {{alexa}}</h1> </div> <script type="text/javascript"> // 咱們的數據對象 var data = { site: "菜鳥教程", url: "www.runoob.com", alexa: 10000} var vm = new Vue({ el: '#vue_det', data: data }) @它們都有前綴 $,以便與用戶定義的屬性區分開來 document.write(vm.$data === data) // true document.write("<br>") document.write(vm.$el === document.getElementById('vue_det')) // true @使用 v-html 指令用於輸出 html 代碼: <div id="app"> <div v-html="message"></div> </div> <script> new Vue({ el: '#app', data: { message: '<h1>菜鳥教程</h1>' } }) </script> @HTML 屬性中的值應使用 v-bind 指令。 <div id="app"> <label for="r1">修改顏色</label><input type="checkbox" v-model="use" id="r1"> <br><br> <div v-bind:class="{'class1': use}"> v-bind:class 指令 </div> </div> <script> new Vue({ el: '#app', data:{ use: false } }); </script> @Vue.js 都提供了徹底的 JavaScript 表達式支持。 @指令是帶有 v- 前綴的特殊屬性。 <div id="app"> <p v-if="seen">如今你看到我了</p> </div> v-if 指令將根據表達式 seen 的值(true 或 false )來決定是否插入 p 元素。 @參數在指令後以冒號指明。例如, v-bind 指令被用來響應地更新 HTML 屬性: <pre><a v-bind:href="url">菜鳥教程</a></pre> @ v-on 指令,它用於監聽 DOM 事件: <a v-on:click="doSomething"> @修飾符是以半角句號 . 指明的特殊後綴,用於指出一個指令應該以特殊方式綁定。 例如,.prevent 修飾符告訴 v-on 指令對於觸發的事件調用 event.preventDefault(): <form v-on:submit.prevent="onSubmit"></form> @v-model 在 input 輸入框中咱們可使用 v-model 指令來實現雙向數據綁定: <div id="app"> <p>{{ message }}</p> <input v-model="message"> </div> <script> new Vue({ el: '#app', data: { message: 'Runoob!' } }) </script> v-model 指令用來在 input、select、textarea、checkbox、radio 等表單控件元素上建立雙向數據綁定,根據表單上的值,自動更新綁定的元素的值。 按鈕的事件咱們可使用 v-on 監聽事件,並對用戶的輸入進行響應。 如下實例在用戶點擊按鈕後對字符串進行反轉操做: <div id="app"> <p>{{ message }}</p> <button v-on:click="reverseMessage">反轉字符串</button> </div> <script> new Vue({ el: '#app', data: { message: 'Runoob!' }, methods: { reverseMessage: function () { this.message = this.message.split('').reverse().join('') } } }) </script> @Vue.js 容許你自定義過濾器,被用做一些常見的文本格式化。由"管道符"指示, 格式以下: <!-- 在兩個大括號中 --> {{ message | capitalize }} <!-- 在 v-bind 指令中 --> <div v-bind:id="rawId | formatId"></div> @縮寫 v-bind 縮寫 Vue.js 爲兩個最爲經常使用的指令提供了特別的縮寫: <!-- 完整語法 --> <a v-bind:href="url"></a> <!-- 縮寫 --> <a :href="url"></a> v-on 縮寫 <!-- 完整語法 --> <a v-on:click="doSomething"></a> <!-- 縮寫 --> <a @click="doSomething"></a> @v-if 指令 在元素 和 template 中使用 v-if 指令: @v-else 能夠用 v-else 指令給 v-if 添加一個 "else" 塊: @v-else-if v-else-if 在 2.1.0 新增,顧名思義,用做 v-if 的 else-if 塊。能夠鏈式的屢次使用: @v-show 咱們也可使用 v-show 指令來根據條件展現元素: @v-for 指令。 v-for 指令須要以 site in sites 形式的特殊語法, sites 是源數據數組而且 site 是數組元素迭代的別名。 <div id="app"> <ul> <li v-for="value in object"> {{ value }} </li> </ul> </div> <script> new Vue({ el: '#app', data: { object: { name: '菜鳥教程', url: 'http://www.runoob.com', slogan: '學的不只是技術,更是夢想!' } } }) </script> 第三個參數爲索引: <li v-for="(value, key, index) in object"> {{ index }}. {{ key }} : {{ value }} </li> 第二個的參數爲鍵名: <li v-for="(value, key) in object"> {{ key }} : {{ value }} </li> v-for 也能夠循環整數 <li v-for="n in 10"> {{ n }} </li> @計算屬性關鍵詞: computed。 computed vs methods 能夠說使用 computed 性能會更好,可是若是你不但願緩存,你可使用 methods 屬性。 @ 監聽屬性 watch,咱們能夠經過 watch 來響應數據的變化。 如下實例經過使用 watch 實現計數器: <div id = "app"> <p style = "font-size:25px;">計數器: {{ counter }}</p> <button @click = "counter++" style = "font-size:25px;">點我</button> </div> <script type = "text/javascript"> var vm = new Vue({ el: '#app', data: { counter: 1 } }); vm.$watch('counter', function(nval, oval) { alert('計數器值的變化 :' + oval + ' 變爲 ' + nval + '!'); }); </script> 如下實例進行公里與米之間的換算: 實例 <div id = "computed_props"> 公里 : <input type = "text" v-model = "kilometers"> 米 : <input type = "text" v-model = "meters"> </div> <p id="info"></p> <script type = "text/javascript"> var vm = new Vue({ el: '#computed_props', data: { kilometers : 0, meters:0 }, methods: { }, computed :{ }, watch : { kilometers:function(val) { this.kilometers = val; this.meters = this.kilometers * 1000 }, meters : function (val) { this.kilometers = val/ 1000; this.meters = val; } } }); // $watch 是一個實例方法 vm.$watch('kilometers', function (newValue, oldValue) { // 這個回調將在 vm.kilometers 改變後調用 document.getElementById ("info").innerHTML = "修改前值爲: " + oldValue + ",修改後值爲: " + newValue; }) </script> @class 屬性綁定 咱們能夠爲 v-bind:class 設置一個對象,從而動態的切換 class: 實例中將 isActive 設置爲 true 顯示了一個綠色的 div 塊,若是設置爲 false 則不顯示: <div v-bind:class="{ active: isActive }"></div> @ v-on 在監聽 <!-- 阻止單擊事件冒泡 --> <a v-on:click.stop="doThis"></a> <!-- 提交事件再也不重載頁面 --> <form v-on:submit.prevent="onSubmit"></form> <!-- 修飾符能夠串聯 --> <a v-on:click.stop.prevent="doThat"></a> <!-- 只有修飾符 --> <form v-on:submit.prevent></form> <!-- 添加事件偵聽器時使用事件捕獲模式 --> <div v-on:click.capture="doThis">...</div> <!-- 只當事件在該元素自己(而不是子元素)觸發時觸發回調 --> <div v-on:click.self="doThat">...</div> <!-- click 事件只能點擊一次,2.1.4版本新增 --> <a v-on:click.once="doThis"></a> <!-- 只有在 keyCode 是 13 時調用 vm.submit() --> <input v-on:keyup.13="submit"> @別名: <!-- 同上 --> <input v-on:keyup.enter="submit"> <!-- 縮寫語法 --> <input @keyup.enter="submit"> 所有的按鍵別名: .enter .tab .delete (捕獲 "刪除" 和 "退格" 鍵) .esc .space .up .down .left .right .ctrl .alt .shift .meta @修飾符 .lazy 在默認狀況下, v-model 在 input 事件中同步輸入框的值與數據,但你能夠添加一個修飾符 lazy ,從而轉變爲在 change 事件中同步: <!-- 在 "change" 而不是 "input" 事件中更新 --> <input v-model.lazy="msg" > .number 若是想自動將用戶的輸入值轉爲 Number 類型(若是原值的轉換結果爲 NaN 則返回原值),能夠添加一個修飾符 number 給 v-model 來處理輸入值: <input v-model.number="age" type="number"> 這一般頗有用,由於在 type="number" 時 HTML 中輸入的值也老是會返回字符串類型。 .trim 若是要自動過濾用戶輸入的首尾空格,能夠添加 trim 修飾符到 v-model 上過濾輸入: <input v-model.trim="msg"> @組件<tagName></tagName> 全局組件實例 註冊一個簡單的全局組件 runoob,並使用它: <div id="app"> <runoob></runoob> </div> <script> // 註冊 Vue.component('runoob', { template: '<h1>自定義組件!</h1>' }) // 建立根實例 new Vue({ el: '#app' }) </script> 局部組件實例 <div id="app"> <runoob></runoob> </div> <script> var Child = { template: '<h1>自定義組件!</h1>' } // 建立根實例 new Vue({ el: '#app', components: { // <runoob> 將只在父模板可用 'runoob': Child } }) </script> @Prop prop 是子組件用來接受父組件傳遞過來的數據的一個自定義屬性。 父組件的數據須要經過 props 把數據傳給子組件,子組件須要顯式地用 props 選項聲明 "prop": 用 v-bind 指令將 todo 傳到每個重複的組件中: <div id="app"> <ol> <todo-item v-for="item in sites" v-bind:todo="item"></todo-item> </ol> </div> <script> Vue.component('todo-item', { props: ['todo'], template: '<li>{{ todo.text }}</li>' }) new Vue({ el: '#app', data: { sites: [ { text: 'Runoob' }, { text: 'Google' }, { text: 'Taobao' } ] } }) </script> @Prop 驗證 type 能夠是下面原生構造器: String Number Boolean Array Object Date Function Symbol type 也能夠是一個自定義構造器,使用 instanceof 檢測。 @若是你想在某個組件的根元素上監聽一個原生事件。可使用 .native 修飾 v-on 。例如: <my-component v-on:click.native="doTheThing"></my-component> @Vue.js 自定義指令 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Vue 測試實例 - 菜鳥教程(runoob.com)</title> <script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script> </head> <body> <div id="app"> <p>頁面載入時,input 元素自動獲取焦點:</p> <input v-focus> </div> <script> // 註冊一個全局自定義指令 v-focus Vue.directive('focus', { // 當綁定元素插入到 DOM 中。 inserted: function (el) { // 聚焦元素 el.focus() } }) // 建立根實例 new Vue({ el: '#app' }) </script> </body> </html> @鉤子函數 指令定義函數提供了幾個鉤子函數(可選): bind: 只調用一次,指令第一次綁定到元素時調用,用這個鉤子函數能夠定義一個在綁定時執行一次的初始化動做。 inserted: 被綁定元素插入父節點時調用(父節點存在便可調用,沒必要存在於 document 中)。 update: 被綁定元素所在的模板更新時調用,而不論綁定值是否變化。經過比較更新先後的綁定值,能夠忽略沒必要要的模板更新(詳細的鉤子函數參數見下)。 componentUpdated: 被綁定元素所在模板完成一次更新週期時調用。 unbind: 只調用一次, 指令與元素解綁時調用。 鉤子函數參數 鉤子函數的參數有: el: 指令所綁定的元素,能夠用來直接操做 DOM 。 binding: 一個對象,包含如下屬性: name: 指令名,不包括 v- 前綴。 value: 指令的綁定值, 例如: v-my-directive="1 + 1", value 的值是 2。 oldValue: 指令綁定的前一個值,僅在 update 和 componentUpdated 鉤子中可用。不管值是否改變均可用。 expression: 綁定值的表達式或變量名。 例如 v-my-directive="1 + 1" , expression 的值是 "1 + 1"。 arg: 傳給指令的參數。例如 v-my-directive:foo, arg 的值是 "foo"。 modifiers: 一個包含修飾符的對象。 例如: v-my-directive.foo.bar, 修飾符對象 modifiers 的值是 { foo: true, bar: true }。 vnode: Vue 編譯生成的虛擬節點。 oldVnode: 上一個虛擬節點,僅在 update 和 componentUpdated 鉤子中可用。 @Vue.js 路由 Vue.js 路由須要載入 vue-router 庫 中文文檔地址:vue-router文檔。 <router-link> 是一個組件,該組件用於設置一個導航連接,切換不一樣 HTML 內容。 to 屬性爲目標地址, 即要顯示的內容