组件

组件系统是Vue.js其中一个重要的概念,它提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用,任意类型的应用界面都可以抽象为一个组件树。(通俗点讲,如果你在页面上需要显示4个物品窗口,那么我只需要创建1个窗口组件,然后4次调用这个组件即可,这样是不是很节省效率)。下面展示Vue组件的示例:

// 定义一个名为 button-counter 的新组件Vue.component('button-counter', {  data: function () {    return {      count: 0    }  },  template: 'You clicked me {{ count }} times.'})

组件是可复用的 Vue 实例,且带有一个名字:在这个例子中是 。我们可以在一个通过 new Vue 创建的 Vue 根实例中,把这个组件作为自定义元素来使用:

<div id="components-demo">  <button-counter>button-counter>div
new Vue({ el: '#components-demo' })

※※※※※※

为什么突然要用星号提醒呢,以前实例化的时候,data里面是什么玩意,都是一个对象,但是现在你发现组件里面的data是什么玩意,特喵的竟然是个function,而且我告诉你,你不return一个对象就会报错,why?这样写是不是开发人员脑子瓦特了,答案是否定的。举个例子,在页面上显示两个计数器,点击一下计数+1,组件里面data的数据就会+1,试想一下,如果data里面是个对象,那么每次改变都是这个对象里面的数据,你点击第一个计数器会影响到第二个计数器里面的数据,显然这样是不合理的,如果组件返回是一个新的对象的话,那么每个组件的数据就不会受到它人的影响了。

※※※※※※

当然组件也可以定义全局组件或者每个vm自己的组件,同以前的过滤器很相似的。还有个比较重要的是子组件怎么获取父组件的data和methos,Prop 是你可以在组件上注册的一些自定义 attribute。当一个值传递给一个 prop attribute 的时候,它就变成了那个组件实例的一个 property。为了给博文组件传递一个标题,我们可以用一个props选项将其包含在该组件可接受的 prop 列表中:

Vue.component('blog-post', {  props: ['title'],  template: '

{{ title }}

'})一个组件默认可以拥有任意数量的 prop,任何值都可以传递给任何 prop。在上述模板中,你会发现我们能够在组件实例中访问这个值,就像访问 data 中的值一样。一个 prop 被注册之后,你就可以像这样把数据作为一个自定义 attribute 传递进来:

<blog-post title="My journey with Vue">blog-post><blog-post title="Blogging with Vue">blog-post><blog-post title="Why Vue is so fun">blog-post>

显示的结果如下:

还有就是使用父组件的方法:用$emit 可以使用。路由:        路由,也许在我们生活中经常听见,但是百度上的解释又很晦涩,其实从程序员角度来看的话,路由分为前端路由和后端路由。前端路由:        对于单页面程序来说,主要通过URL的hash(#号)来实现不同页面之间的切换,同时,hash有个特点:HTTP请求中不会包含hash相关的内容;所以,单页面程序中的页面跳转主要用hash实现。后端路由:        对于普通网站来说,所有的链接都是URL地址,所有的URL地址都对应服务器上对应的资源。来个从零开始的路由:

const NotFound = { template: '

Page not found

' }const Home = { template: '

home page

' }const About = { template: '

about page

' }const routes = { '/': Home, '/about': About}new Vue({ el: '#app', data: { currentRoute: window.location.pathname }, computed: { ViewComponent () { return routes[this.currentRoute] || NotFound } }, render (h) { return h(this.ViewComponent) }})看完后,您是不是学废了

vue template 复用_Vue之组件、路由相关推荐

  1. vue template 复用_vue-组件基础

    1.基础介绍 vue的组件是以.vue结尾的,这是毋庸置疑的.vue的组件由三个部分组成<template>,<script>和<style>. <templ ...

  2. vue项目通讯录_vue 自定义组件实现通讯录功能

    在线demo:http://tangyupeng.top/dist/index.html#/phone 首页 + 确认 取消 import Vue from 'vue'; import Vuex fr ...

  3. vue面向切面_vue:在路由跳转中使用拦截器

    1:首先在路由对象中的某一个具体的路由对象加这样一个属性 meta: {  requireAuth:true  } 2:然后在main.js中添加这段代码 router.beforeEach((to, ...

  4. iis vue history 配置_Vue实战——vueRouter路由的添加与配置

    接上文:vue实战--自定义基础路径,端口号,继续我们的实战项目讲解之旅.本文讲解vue核心插件--vue router. 在本项目中,使用了vue-cli3.10创建的,所以默认带了router,那 ...

  5. vue变量传值_Vue各类组件之间传值的实现方式

    1.父组件向子组件传值 首先在父组件定义好数据,接着将子组件导入到父组件中.父组件只要在调用子组件的地方使用v-bind指令定义一个属性,并传值在该属性中即可,此时父组件的使命完成,请看下面关键代码: ...

  6. Vue多个单文件组件使用

    在project目录下创建components文件夹,然后将所有子组件放入components文件夹下  [创建此目录][文件名的首字母大写] 1.多组件嵌套使用 Child1.vue <tem ...

  7. Vue项目中实现父子组件之间传值

    1.路由配置:使用children属性实现路由嵌套,嵌套的组件关系就是父子组件关系 {path: '/father',name: 'father',component: father,children ...

  8. vue就地复用不是更快吗_Vue.js从零开始——组件(1)

    其实本来应该把这个章节也放在入门里面的,但是想想这个部分是 Vue 的核心功能之一,所以就独立出来吧,专门进行介绍也挺好的. 这个章节主要是对 Vue 的组件(Component)有个基础的了解先,也 ...

  9. vue 封装组件供全局使用_vue 封装组件的基本操作

    /**1.封装组件 局部 封装**/ // 1.创建组件构造器对象 const cpnC = Vue.extend({ template: ` <div> </div>` }) ...

最新文章

  1. 02 Scratch等级考试(二级)模拟题
  2. python简历数据提取_如何使用pyPDF2从PDF格式的多页简历中提取文本数据?
  3. 我是如何把VC6一直用到2016年的
  4. 体验Vysor Pro
  5. Ext.Net学习笔记01:在ASP.NET WebForm中使用Ext.Net
  6. Unity降版本的蛋疼操作
  7. linux下安装xz命令
  8. 如何让普通人了解网络隐私的重要性
  9. java继承求三角形圆形面积_Java - 三角形与圆形面积
  10. python微信机器人制作教程+源码
  11. html表格序号自动增加
  12. 组合数性质--二项式系数之和等于2^n的证明
  13. 固态硬盘和机械硬盘的区别是什么
  14. 手机按键触发事件--隐藏APP到任务后台
  15. 网页脚本输入这么简单
  16. 微信公众号服务器搭建
  17. linux 内核源码下载
  18. 商城后台管理React+Springboot
  19. [软件人生]关于我,我的未来,我的思考
  20. JVM-G1 性能调优思路与实战

热门文章

  1. js模拟3D场景效果
  2. ospf学习笔记-7种状态
  3. 每天看技术文章头大,搞点笑话轻松一下吧
  4. 荣禄[róng lù]
  5. VIM - 01. 标准模式 - 下简单操作
  6. python 哥德巴赫猜想的验证
  7. oracle对象之触发器
  8. ubuntu和windows上pip和windows上conda国内源更新module
  9. .NET Web实时消息后台服务器推送技术-GoEasy
  10. Spring3中js/css/jpg/gif等静态资源无法找到(No mapping found for HTTP request with URI)问题解决(转)...