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 相关文章推荐
js left,right,mid函数
Jun 10 Javascript
12个非常有创意的JavaScript小游戏
Mar 18 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
Jul 26 Javascript
JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法
Nov 03 Javascript
总结javascript中的六种迭代器
Aug 16 Javascript
Javascript中数组去重与拍平的方法示例
Feb 03 Javascript
解决layui中的form表单与button的点击事件冲突问题
Aug 15 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
JavaScript回调函数callback用法解析
Jan 14 Javascript
node+multer实现图片上传的示例代码
Feb 18 Javascript
解决vue路由name同名,路由重复的问题
Aug 05 Javascript
react使用antd的上传组件实现文件表单一起提交功能(完整代码)
Jun 29 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
php文件上传你必须知道的几点
2015/10/20 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
js 获取浏览器高度和宽度值(多浏览器)
2009/09/02 Javascript
JS无限树状列表实现代码
2011/01/11 Javascript
使用jquery实现select添加实现后台权限添加的效果
2011/05/28 Javascript
jquery 使用简明教程
2014/03/05 Javascript
jquery插件推荐 jquery.cookie
2014/11/09 Javascript
noty ? jQuery通知插件全面解析
2016/05/18 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
JS实现全屏的四种写法
2016/12/30 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
js使用html2canvas实现屏幕截取的示例代码
2017/08/28 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
jQuery实现动态显示select下拉列表数据的方法
2018/02/05 jQuery
Vue单页应用引用单独的样式文件的两种方式
2018/03/30 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
2018/07/13 Javascript
React中使用外部样式的3种方式(小结)
2019/05/28 Javascript
Vue优化:常见会导致内存泄漏问题及优化详解
2020/08/04 Javascript
[48:30]LGD vs infamous Supermajor小组赛D组 BO3 第一场 6.3
2018/06/04 DOTA
Python正规则表达式学习指南
2016/08/02 Python
Django Highcharts制作图表
2016/08/27 Python
使用python实现链表操作
2018/01/26 Python
关于django 数据库迁移(migrate)应该知道的一些事
2018/05/27 Python
python requests post多层字典的方法
2018/12/27 Python
django 多对多表的创建和插入代码实现
2019/09/09 Python
Python用5行代码实现批量抠图的示例代码
2020/04/14 Python
如何利用python进行时间序列分析
2020/08/04 Python
python利用platform模块获取系统信息
2020/10/09 Python
Python如何批量生成和调用变量
2020/11/21 Python
HTML5实现动画效果的方式汇总
2016/02/29 HTML / CSS
Prototype如何为一个Ajax添加一个参数
2015/12/06 面试题
股东授权委托书
2014/10/15 职场文书
学生会宣传部竞选稿
2015/11/21 职场文书
北京大学中文系教授推荐的10本小说
2019/08/08 职场文书
html5移动端禁止长按图片保存的实现
2021/04/20 HTML / CSS