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 相关文章推荐
使用PHP+JQuery+Ajax分页的实现
Apr 23 Javascript
js控制frameSet示例
Sep 10 Javascript
JavaScript之数组(Array)详解
Apr 01 Javascript
JavaScript实现的背景自动变色代码
Oct 17 Javascript
AngularJs动态加载模块和依赖注入详解
Jan 11 Javascript
jQuery时间插件jquery.clock.js用法实例(5个示例)
Jan 14 Javascript
文本框只能输入数字的js代码(含小数点)
Jul 10 Javascript
jQuery制作网页版选项卡
Jul 28 Javascript
JavaScript实现按键精灵的原理分析
Feb 21 Javascript
JS实现的小火箭发射动画效果示例
Dec 08 Javascript
layui点击弹框页面 表单请求的方法
Sep 21 Javascript
vue v-model的用法解析
Oct 19 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
在smarty模板中使用PHP函数的方法
2011/04/23 PHP
PHP函数spl_autoload_register()用法和__autoload()介绍
2012/02/04 PHP
twig里使用js变量的方法
2016/02/05 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
详解php中的implements 使用
2017/06/13 PHP
PHP实现分布式memcache设置web集群session同步的方法
2018/04/10 PHP
PHP面向对象类型约束用法分析
2019/06/12 PHP
php数组指针函数功能及用法示例
2020/02/11 PHP
javascript URL编码和解码使用说明
2010/04/12 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
jQuery对象的length属性用法实例
2014/12/27 Javascript
js实现当复选框选择匿名登录时隐藏登录框效果
2015/08/14 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
javascript学习指南之回调问题
2016/04/23 Javascript
jquery实现拖动效果(代码分享)
2017/01/25 Javascript
javascript 缓冲运动框架的实现
2017/09/29 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
2018/03/09 Javascript
JS实现图片旋转动画效果封装与使用示例
2018/07/09 Javascript
vue 指令之气泡提示效果的实现代码
2018/10/18 Javascript
Python import用法以及与from...import的区别
2015/05/28 Python
Linux(Redhat)安装python3.6虚拟环境(推荐)
2018/05/05 Python
解决Tensorflow安装成功,但在导入时报错的问题
2018/06/13 Python
Python线程之定位与销毁的实现
2019/02/17 Python
pygame实现非图片按钮效果
2019/10/29 Python
Scrapy基于scrapy_redis实现分布式爬虫部署的示例
2020/09/29 Python
世界第一冲浪品牌:O’Neill
2016/08/30 全球购物
简述使用ftp进行文件传输时的两种登录方式?它们的区别是什么?常用的ftp文件传输命令是什么?
2016/11/20 面试题
后勤副校长自我鉴定
2013/10/13 职场文书
《黄河颂》教学反思
2014/02/07 职场文书
部队2014年终工作总结
2014/11/27 职场文书
医院志愿者活动总结
2015/05/06 职场文书
红歌会主持词
2015/07/02 职场文书
2015年秋季学校开学标语
2015/07/16 职场文书
2016年党员岗位承诺书
2016/03/24 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript