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 相关文章推荐
常见JS效果之图片减速度滚动实现代码
Dec 08 Javascript
jquery库文件略庞大用纯js替换jquery的方法
Aug 12 Javascript
浅谈重写window对象的方法
Dec 29 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
jfinal与bootstrap的登录跳转实战演习
Sep 22 Javascript
基于Bootstrap使用jQuery实现简单可编辑表格
May 04 Javascript
js 判断一组日期是否是连续的简单实例
Jul 11 Javascript
js 动态给元素添加、移除事件的实现方法
Jul 19 Javascript
jQuery实现的自定义弹出层效果实例详解
Sep 04 Javascript
详解vue项目接入微信JSSDK的坑
Dec 14 Javascript
Vue keepAlive 数据缓存工具实现返回上一个页面浏览的位置
May 10 Javascript
判断“命令按钮”是否被鼠标单击详解
Jul 31 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数组中的重复值的实现代码
2011/07/17 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
js 文件引入实现代码
2010/04/23 Javascript
基于jquery的checkbox下拉框插件代码
2010/06/25 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
javascript获取系统当前时间的方法
2015/11/19 Javascript
javascript 广告移动特效的实现代码
2016/06/25 Javascript
微信小程序 在Chrome浏览器上运行以及WebStorm的使用
2016/09/27 Javascript
easyui中combotree循环获取父节点至根节点并输出路径实现方法
2016/11/10 Javascript
vue引入swiper插件的使用实例
2017/07/19 Javascript
ES6中Array.copyWithin()函数的用法实例详解
2017/09/16 Javascript
探索Vue高阶组件的使用
2018/01/08 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
bootstrap里bootstrap动态加载下拉框的实例讲解
2018/08/10 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
简单两步使用node发送qq邮件的方法
2019/03/01 Javascript
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
解决vue-cli项目开发运行时内存暴涨卡死电脑问题
2019/10/29 Javascript
[36:20]KG vs SECRET 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
Python 使用requests模块发送GET和POST请求的实现代码
2016/09/21 Python
python调用Matplotlib绘制分布点图
2019/10/18 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
Jupyter Notebook远程登录及密码设置操作
2020/04/10 Python
python实现PDF中表格转化为Excel的方法
2020/06/16 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
竟聘演讲稿范文
2013/12/31 职场文书
酒店经理职责
2014/01/30 职场文书
工程质量承诺书范文
2014/03/27 职场文书
积极向上的团队口号
2014/06/06 职场文书
2014年财务工作总结与计划
2014/12/08 职场文书
2016年秋季运动会加油稿
2015/12/21 职场文书
2016特色励志班级口号
2015/12/24 职场文书
python将图片转为矢量图的方法步骤
2021/03/30 Python
了解Kubernetes中的Service和Endpoint
2022/04/01 Servers