Vue學習,可是沒學會

想把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 屬性爲目標地址, 即要顯示的內容
相關文章
相關標籤/搜索