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 相关文章推荐
如果文字过长,则将过长的部分变成省略号显示
Jun 26 Javascript
showModalDialog 和 showModelessDialog
Jan 22 Javascript
Javascript的一种模块模式
Mar 22 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
May 27 Javascript
JavaScript版TAB选项卡效果实例
Aug 16 Javascript
jQuery使用removeClass方法删除元素指定Class的方法
Mar 26 Javascript
一个用jquery写的判断div滚动条到底部的方法【推荐】
Apr 29 Javascript
详谈$.data()的用法和作用
Feb 13 Javascript
微信小程序商城项目之淘宝分类入口(2)
Apr 17 Javascript
react-native fetch的具体使用方法
Nov 01 Javascript
vue微信分享 vue实现当前页面分享其他页面
Dec 02 Javascript
javascript实现用户必须勾选协议实例讲解
Mar 24 Javascript
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
中国的第一台收音机
2021/03/01 无线电
php对数组排序代码分享
2014/02/24 PHP
php中的strpos使用示例
2014/02/27 PHP
PHP中遇到BOM、编码导致json_decode函数无法解析问题
2014/07/02 PHP
如何使用jQuery+PHP+MySQL来实现一个在线测试项目
2015/04/26 PHP
javascript 节点遍历函数
2010/03/28 Javascript
javascript实现动态侧边栏代码
2014/02/19 Javascript
jquery进行数组遍历如何跳出当前的each循环
2014/06/05 Javascript
JS实现黑客帝国文字下落效果
2015/09/01 Javascript
JavaScript中eval函数的问题
2016/01/31 Javascript
js获取页面及个元素高度、宽度的代码
2016/04/26 Javascript
JS实现图文并茂的tab选项卡效果示例【附demo源码下载】
2016/09/21 Javascript
原生JS实现匀速图片轮播动画
2016/10/18 Javascript
html、css和jquery相结合实现简单的进度条效果实例代码
2016/10/24 Javascript
神级程序员JavaScript300行代码搞定汉字转拼音
2017/05/20 Javascript
parabola.js抛物线与加入购物车效果的示例代码
2017/10/25 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
vue实现随机验证码功能的实例代码
2019/04/30 Javascript
基于Vue.js+Nuxt开发自定义弹出层组件
2020/10/09 Javascript
vant中的toast轻提示实现代码
2020/11/04 Javascript
vue print.js打印支持Echarts图表操作
2020/11/13 Javascript
[46:25]DOTA2上海特级锦标赛主赛事日 - 4 败者组第五轮 MVP.Phx VS EG第二局
2016/03/05 DOTA
python数字图像处理之骨架提取与分水岭算法
2018/04/27 Python
利用python GDAL库读写geotiff格式的遥感影像方法
2018/11/29 Python
pyqt5 lineEdit设置密码隐藏,删除lineEdit已输入的内容等属性方法
2019/06/24 Python
python 使用pygame工具包实现贪吃蛇游戏(多彩版)
2019/10/30 Python
Pandas-Cookbook 时间戳处理方式
2019/12/07 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
2020/03/10 Python
稀有和绝版书籍:Biblio.com
2017/02/02 全球购物
美体小铺美国官网:The Body Shop美国
2017/11/10 全球购物
财会专业毕业生自荐信
2014/07/09 职场文书
公司授权委托书范本
2014/09/18 职场文书
2015年妇产科工作总结
2015/05/18 职场文书
教师节领导致辞
2015/07/29 职场文书
党校团干班培训心得体会
2016/01/06 职场文书
2016年春季趣味运动会开幕词
2016/03/04 职场文书