vue.js指令和组件详细介绍及实例


Posted in Javascript onApril 06, 2017

大家好,本文给各位做一下vue.js一个最基本的概念介绍。

vue.js 指令

<div id="app">
  <div v-text="message"></div>
</div>
var app = new Vue({
 el: '#app',
 data: {
  message: 'Hello Vue!'
 }
})

这个例子我们会得到,v-text所在的div元素的内部插入了'Hello Vue!'这段字符串,那么我们为什么会产生这样一个结果呢,我们来分析一下:

vue.js指令和组件详细介绍及实例

这一步的意思是,实例化的这个Vue接管了#app元素,这里面的所有内容归我管,也就是说可以接受vue的功能指令。

vue.js指令和组件详细介绍及实例

第二步是在#app里, v-text指令被识别出来,它接受的参数是'message',vue获取到这个参数,并在自己实例化的data里查找叫message的属性,找到message的内容原来是'hello vue', 于是把'hello vue' 渲染到页面。

类似的指令,还有v-if,条件判断,v-for,列表渲染,v-on进行元素的事件绑定。等等。vue.js与页面也就是template进行交互,主要是通过这些内置指令来完成的。

vue.js 组件

开发前端页面,模块化有很多好处,比如公用的sidebar,比如公用的日期选择器。

模块化还有一个好处,就是简化开发逻辑,让项目具有扩展性。

vue.js的模块化主要体现在组件上,以组件为单位进行模块化。

我们可以在实例化vue对象之前,通过Vue.component方法来注册全局的组件,比如:

全局组件

// 告诉Vue,我需要一个组件叫做todo-item,它的配置如下,就是包含props和template那个对象
Vue.component('todo-item', {
 props: ['todo'],
 template: '<li>{{ todo.text }}</li>'
}) 
// 实例化一个vue对象,挂载在#app-7这个元素下,并且设定它的属性,groceryList,是一个数组
var app7 = new Vue({
 el: '#app-7',
 data: {
  groceryList: [
   { text: 'Vegetables' },
   { text: 'Cheese' },
   { text: 'Whatever else humans are supposed to eat' }
  ]
 }
})

模板:

<div id="app-7">
 <ol>
  <!--因为注册了全局的todo-item组件,所以在挂载范围内我们可以直接使用todo-item标签,来引用这个组件,-->
  <!--组件内部会被 todo-item配置表里的template替换,用来渲染。属性todo也是配置对象里规定的,可以接受的参数。-->
  <todo-item v-for="item in groceryList" v-bind:todo="item"></todo-item>
 </ol>
</div>

子组件

实际项目开发中,我们更多的使用的是子组件。

我们刚刚说的每个组件都有一个配置表,就是一个js对象,比如:

{
 props: ['todo'],
 template: '<li>{{ todo.text }}</li>'
}

我们把这份配置引入到实例化对象里,就可以成为这个vue对象的子组件,比如:

new Vue({
  components: {
    'component-a' : {
       props: ['todo'],
       template: '<li>{{ todo.text }}</li>'
    }
  }
})

这样的话,我们和之前全局组件一样,也可以在实例化对象挂载的范围内,直接使用<component-a>标签来引用组件。

那么接下来,我们考虑一下,子组件里也可以有自己的子组件,比如:

new Vue({
  components: {
    'component-a' : {
       props: ['todo'],
       template: '<li>{{ todo.text }}</li>',
       components: {
          'component-b' : {
             template: 'i am component b',
             components: {
                ...
             }
          }
       }
    }
  }
})

那么这样下去,我们可以有无数个子组件,形成一个组件树:

vue.js指令和组件详细介绍及实例

所以,一个vue.js架构的网站,我们可以看成是一个个组件的开发,最终存在一个根节点,就是项目里唯一实例化的Vue对象,而这一个个组件,其实就是一份份配置对象,以及它们对应的template 模板(html片段)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Prototype Number对象 学习
Jul 19 Javascript
一次失败的jQuery优化尝试小结
Feb 06 Javascript
jQuery学习笔记之 Ajax操作篇(一) - 数据加载
Jun 23 Javascript
jQuery插件制作之全局函数用法实例
Jun 01 Javascript
jQuery  ready方法实现原理详解
Oct 19 Javascript
Vue.js组件使用开发实例教程
Nov 01 Javascript
JavaScript中this的用法及this在不同应用场景的作用解析
Apr 13 Javascript
vue实现一个移动端屏蔽滑动的遮罩层实例
Jun 08 Javascript
浅谈在fetch方法中添加header后遇到的预检请求问题
Aug 31 Javascript
开发Node CLI构建微信小程序脚手架的示例
Mar 27 Javascript
vant组件中 dialog的确认按钮的回调事件操作
Nov 04 Javascript
详解为什么Vue中的v-if和v-for不建议一起用
Jan 13 Vue.js
javascript闭包功能与用法实例分析
Apr 06 #Javascript
深入理解 JavaScript 中的 JSON
Apr 06 #Javascript
ES6中module模块化开发实例浅析
Apr 06 #Javascript
ES6中class类用法实例浅析
Apr 06 #Javascript
ES6中Proxy代理用法实例浅析
Apr 06 #Javascript
ES6中Symbol类型用法实例详解
Apr 06 #Javascript
vue中mint-ui环境搭建详细介绍
Apr 06 #Javascript
You might like
ZF等常用php框架中存在的问题
2008/01/10 PHP
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
php+ajax实现无刷新分页的方法
2014/11/04 PHP
PHP批量去除BOM头代码分享
2015/06/26 PHP
ThinkPHP使用Ueditor的方法详解
2016/05/20 PHP
php验证身份证号码正确性的函数
2016/07/20 PHP
Linux服务器下PHPMailer发送邮件失败的问题解决
2017/03/04 PHP
JAVASCRIPT  THIS详解 面向对象
2009/03/25 Javascript
jquery的$(document).ready()和onload的加载顺序
2010/05/26 Javascript
js里的prototype使用示例
2010/11/19 Javascript
基于jQuery实现滚动切换效果
2016/12/02 Javascript
详解jQuery uploadify文件上传插件的使用方法
2016/12/16 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
ios设备中angularjs无法改变页面title的解决方法
2018/09/13 Javascript
Fetch超时设置与终止请求详解
2019/05/18 Javascript
用node.js写一个jenkins发版脚本
2019/05/21 Javascript
React组件对子组件children进行加强的方法
2019/06/23 Javascript
详解Vue中CSS样式穿透问题
2019/09/12 Javascript
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Python使用numpy模块实现矩阵和列表的连接操作方法
2019/06/26 Python
django最快程序开发流程详解
2019/07/19 Python
Pyqt5自适应布局实例
2019/12/13 Python
python适合做数据挖掘吗
2020/06/16 Python
python实现xlwt xlrd 指定条件给excel行添加颜色
2020/07/14 Python
如何利用Python给自己的头像加一个小国旗(小月饼)
2020/10/02 Python
利用HTML5 Canvas API绘制矩形的超级攻略
2016/03/21 HTML / CSS
澳大利亚领先的孕妇服装品牌:Mamaway
2018/08/14 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
Fabletics官网:美国运动服饰品牌,由好莱坞女演员凯特·哈德森创立
2019/10/19 全球购物
Wallis官网:英国女装零售商
2020/01/21 全球购物
总经理岗位职责描述
2014/02/08 职场文书
六年级学生评语
2014/04/22 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
生产助理岗位职责
2014/06/18 职场文书
领导班子党的群众路线对照检查材料
2014/09/25 职场文书
2015军训通讯稿大全
2015/07/18 职场文书