

Vue.js是当下很火的一个JavaScript MVVM(Model-View-ViewModel)库,它是以数据驱动和组件化的思想构建的。相比于Angular.js,Vue.js提供了更加简洁、更易于理解的API,使得我们能够快速地上手并使用Vue.js。
如果你之前已经习惯了用jQuery操作DOM,学习Vue.js时请先抛开手动操作DOM的思维,因为Vue.js是数据驱动的,你无需手动操作DOM。它通过一些特殊的HTML语法,将DOM和数据绑定起来。一旦你创建了绑定,DOM将和数据保持同步,每当变更了数据,DOM也会相应地更新。
当然了,在使用Vue.js时,你也可以结合其他库一起使用,比如jQuery。
1.使用
使用Vue的过程就是定义MVVM(Model-View-ViewModel)各个组成部分的过程的过程。
<!--这里定义View-->
<p id="app">{{ message }}</p>
<script src="js/vue.js"></script>
<script>
 // 这里定义Model
 var exampleData = {
 message: 'Hello World!'
 }
 // 这里创建一个 Vue 实例或 "ViewModel"
 // 连接 View 与 Model
 new Vue({
 el: '#app',
 data: exampleData
 })
</script>2.Vue.js的常用指令
Vue.js提供了一些常用的内置指令,接下来我们将介绍以下几个内置指令:
	?v-if指令
?v-show指令
?v-else指令
?v-for指令
?v-bind指令
?v-on指令
Vue.js具有良好的扩展性,我们也可以开发一些自定义的指令,后面的文章会介绍自定义指令。
2.1 v-if指令
v-if后面赋予 可以转化为布尔类型的表达式
<p id="app">
 <h1>Hello, Vue.js!</h1>
 <h1 v-if="yes">Yes!</h1>
 <h1 v-if="no">No!</h1>
 <h1 v-if="age >= 25">Age: {{ age }}</h1>
 <h1 v-if="name.indexOf('jack') >= 0">Name: {{ name }}</h1>
</p>
 <script src="js/vue.js"></script>
 <script>
 var vm = new Vue({
 el: '#app',
 data: {
 yes: true,
 no: false,
 age: 28,
 name: 'keepfool'
 }
 })
 </script>这里最后就输出
<p id="app"> <h1>Hello, Vue.js!</h1> <h1>Yes!</h1> <!----> <h1>Age: 28</h1> <!----> </p>
2.2 v-show
 <p id="app">
 <h1>Hello, Vue.js!</h1>
 <h1 v-show="yes">Yes!</h1>
 <h1 v-show="no">No!</h1>
 <h1 v-show="age >= 25">Age: {{ age }}</h1>
 <h1 v-show="name.indexOf('jack') >= 0">Name: {{ name }}</h1>
 </p>
 </body>
 <script src="js/vue.js"></script>
 <script>
 var vm = new Vue({
 el: '#app',
 data: {
 yes: true,
 no: false,
 age: 28,
 name: 'keepfool'
 }
 })
 </script>这里代码只是v-if改为v-show
输出为
<p id="app"> <h1>Hello, Vue.js!</h1> <h1>Yes!</h1> <h1 style="display: none;">No!</h1> <h1>Age: 28</h1> <h1 style="display: none;">Name: keepfool</h1> </p>
这里区别是上面v-if直接不输出html代码,这里用display:none隐藏
2.3 v-else指令
<h1 v-if="age >= 25">Age: {{ age }}</h1>
<h1 v-else>Name: {{ name }}</h1>
<script src="js/vue.js"></script>
 <script>
 var vm = new Vue({
 el: '#app',
 data: {
 age: 28,
 name: 'keepfool',
 sex: 'Male'
 }
 })
</script>前一兄弟元素必须有 v-if 或 v-else-if,新版的vue.js新增了v-else-if用法也跟v-if一样,不过前一兄弟元素必须有v-if或v-else-if,旧版的v-else前面可以跟v-show,但新版v-else前面不能是v-show了。
2.4 v-for指令
<p v-for="p in people">
 <h1>Age: {{ p.age }}</h1>
 <h1>Name: {{ p.name }}</h1>
 <h1>Sex: {{ p.sex }}</h1>
</p>
<script charset="utf-8" src="js/vue.js"></script>
<script type="text/javascript">
 var myModel = {
 people:[
 {
 age: 25,
 name: 'keepfool',
 sex: 'Male'
 },
 {
 age: 26,
 name: 'keepfool2',
 sex: 'FeMale'
 },
 {
 age: 27,
 name: 'keepfool3',
 sex: 'Male2'
 }
 ]
 };
 var vm = new Vue({
 el: '#app',
 data: myModel
})
</script>父元素用v-for,子元素可以遍历绑定的对应Array | Object | number | string
v-for还可以这样用:
<p v-for="(item, index) in items"></p> <p v-for="(val, key) in object"></p> <p v-for="(val, key, index) in object"></p>
2.5 v-bind指令
v-bind指令可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的特性(attribute)
<p id="app">
 <ul class="pagination">
 <li v-for="n in pageCount">
 <a href="javascripit:void(0)" rel="external nofollow" v-bind:class="activeNumber === n ? 'active' : ''">{{ n }}</a>
 </li>
 </ul>
</p>
 <script src="js/vue.js"></script>
 <script>
 var vm = new Vue({
 el: '#app',
 data: {
 activeNumber: 1,
 pageCount: 10
 }
 })
 </script>又例如:
<img v-bind:src="'/path/to/images/' + fileName">
<p v-bind="{ 'id': someProp, 'other-attr': otherProp }"></p>2.6 v-on指令
<p id="app">
 <p><input type="text" v-model="message"></p>
 <p>
 <!--click事件直接绑定一个方法-->
 <button v-on:click="greet">Greet</button>
 </p>
 <p>
 <!--click事件使用内联语句-->
 <button v-on:click="say('Hi')">Hi</button>
 </p>
</p>
 <script src="js/vue.js"></script>
 <script>
 var vm = new Vue({
 el: '#app',
 data: {
 message: 'Hello, Vue.js!'
 },
 // 在 `methods` 对象中定义方法
 methods: {
 greet: function() {
 // // 方法内 `this` 指向 vm
 alert(this.message)
 },
 say: function(msg) {
 alert(msg)
 }
 }
 })
 </script>2.7 v-model指令
v-model在表单控件元素上创建双向数据绑定
<input v-model="message" placeholder="edit me">
<p>Message is: {{ message }}</p>相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!
推荐阅读:
