vue.js语法及常用指令


Posted in Javascript onOctober 29, 2017

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-->
<div id="app">{{ message }}</div>
<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后面赋予 可以转化为布尔类型的表达式

<div 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>
</div>
 <script src="js/vue.js"></script>
 <script>
    var vm = new Vue({
      el: '#app',
      data: {
        yes: true,
        no: false,
        age: 28,
        name: 'keepfool'
      }
    })
 </script>

这里最后就输出

<div id="app">
  <h1>Hello, Vue.js!</h1>
  <h1>Yes!</h1>
  <!---->
  <h1>Age: 28</h1>
  <!---->
</div>

2.2 v-show

<div 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>
    </div>
  </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

输出为

<div 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>
</div>

这里区别是上面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指令

<div v-for="p in people">
   <h1>Age: {{ p.age }}</h1>
   <h1>Name: {{ p.name }}</h1>
   <h1>Sex: {{ p.sex }}</h1>
</div>
<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还可以这样用:

<div v-for="(item, index) in items"></div>
<div v-for="(val, key) in object"></div>
<div v-for="(val, key, index) in object"></div>

2.5 v-bind指令

v-bind指令可以在其名称后面带一个参数,中间放一个冒号隔开,这个参数通常是HTML元素的特性(attribute)

<div 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>
</div>
 <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">
<div v-bind="{ 'id': someProp, 'other-attr': otherProp }"></div>

2.6 v-on指令

<div 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>
</div>
 <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>

总结

以上所述是小编给大家介绍的vue.js语法及常用指令,希望对大家有所帮助!

Javascript 相关文章推荐
一个仿糯米弹框效果demo
Jul 22 Javascript
jQuery on()方法示例及jquery on()方法的优点
Aug 27 Javascript
JS+CSS实现分类动态选择及移动功能效果代码
Oct 19 Javascript
angular.js之路由的选择方法
Sep 24 Javascript
js 弹出虚拟键盘修改密码的简单实例
Oct 10 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
Nov 24 Javascript
javascript笔记之匿名函数和闭包
Feb 06 Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 Javascript
js实现数组内数据的上移和下移的实例
Nov 14 Javascript
jQuery UI实现动画效果代码分享
Aug 19 jQuery
vue仿element实现分页器效果
Sep 13 Javascript
微信小程序淘宝首页双排图片布局排版代码(推荐)
Oct 29 Javascript
基于vue.js快速搭建图书管理平台
Oct 29 #Javascript
JavaScript代码执行的先后顺序问题
Oct 29 #Javascript
springmvc接收jquery提交的数组数据代码分享
Oct 28 #jQuery
ES6中Class类的静态方法实例小结
Oct 28 #Javascript
jQuery实现的简单前端搜索功能示例
Oct 28 #jQuery
jQuery实现点击下拉框中的值累加到文本框中的方法示例
Oct 28 #jQuery
jquery ajax异步提交表单数据的方法
Oct 27 #jQuery
You might like
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
Laravel框架中VerifyCsrfToken报错问题的解决
2017/08/30 PHP
父窗口获取弹出子窗口文本框的值
2006/06/27 Javascript
ext读取两种结构的xml的代码
2008/11/05 Javascript
js下获取div中的数据的原理分析
2010/04/07 Javascript
jQuery+css实现图片滚动效果(附源码)
2013/03/18 Javascript
浅析JQuery获取和设置Select选项的常用方法总结
2013/07/04 Javascript
javascript中全局对象的parseInt()方法使用介绍
2013/12/19 Javascript
js鼠标点击图片实现随机变换图片的方法
2015/02/16 Javascript
jQuery绑定事件的几种实现方式
2016/05/09 Javascript
微信小程序 生命周期详解
2016/10/12 Javascript
推荐三款不错的图片压缩上传插件(webuploader、localResizeIMG4、LUploader)
2017/04/21 Javascript
详解Vue用axios发送post请求自动set cookie
2017/05/10 Javascript
基于angular2 的 http服务封装的实例代码
2017/06/29 Javascript
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
JavaScript常用工具方法封装
2019/02/12 Javascript
JavaScript setTimeout()基本用法有哪些
2020/11/04 Javascript
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
C#返回当前系统所有可用驱动器符号的方法
2015/04/18 Python
Python做文本按行去重的实现方法
2016/10/19 Python
一文读懂Python 枚举
2020/08/25 Python
Python Pivot table透视表使用方法解析
2020/09/11 Python
python 制作网站小说下载器
2021/02/20 Python
Blank NYC官网:夹克、牛仔裤等
2020/12/16 全球购物
Huda Beauty官方商店:化妆和美容产品
2020/09/05 全球购物
css animation配合SVG制作能量流动效果
2021/03/24 HTML / CSS
创建青年文明号材料
2014/05/09 职场文书
敬老院标语
2014/06/27 职场文书
工作所在部门证明
2014/09/21 职场文书
流动人口婚育证明范本
2014/09/26 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
乡镇党的群众路线教育实践活动总结报告
2014/10/30 职场文书
高三英语复习计划
2015/01/19 职场文书
会计主管竞聘书
2015/09/15 职场文书
导游词之海南-南湾猴岛
2019/10/12 职场文书