Vue组件封装的过程

vue组件的定义

  1. 组件(Component)是Vue.js最强大的功能之一
  2. 组件可以扩展HTML元素,封装可重用代码
  3. 在较高层面上,组件是自定义元素,Vue.js的编译器为他添加特殊功能
  4. 某些情况下,组件也可以表现用 `js` 特性进行了扩展的原生的HTML元素
  5. 所有的Vue组件同时也都是Vue实例,所以可以接受 相同的选项对象(除了一些根级特有的选项),并提供 相同的生命周期钩子函数

vue组件的功能

  1. 能够把页面抽象成多个相对独立的模块
  2. 实现代码重用,提高开发效率和代码质量,使得代码易于维护

Vue组件封装过程

  1. 首先,使用Vue.extend()创建一个组件
  2. 然后,使用Vue.component()方法注册组件
  3. 接着,如果子组件需要数据,可以在props中接受定义
  4. 最后,子组件修改好数据之后,想把数据传递给父组件,可以使用emit()方法

组件使用流程详细介绍

1、组件创建—有3中方法,extend()
< template id=’’>
< script type=‘text/x-template’ id=’’>

  • A、调用Vue.extend(),创建名为myCom的组件,template定义模板的标签,模板的内容需写在该标签下
  • 
    var myCom = Vue.extend({template: '<div>这是我的组件</div>'
    })
    
  • B、标签创建,需要加上id属性
  • 
    <template id="myCom"><div>这是template标签构建的组件</div>
    </template>
    

    C、< script type=‘text/x-template’ id=‘myCom’>,
    需加id属性,同时还得加 type=“text/x-template”,
    加这个是为了告诉浏览器不执行编译里面的代码

    <script type="text/x-template" id="myCom1"><div>这是script标签构建的组件</div>
    </script>
    

    2、注册组件----有2中方法,全局注册,局部注册

  • A1、全局注册:一次注册( 调用Vue.component( 组件名称,为组件创建时定义的变量 ) ),可在多个Vue实例中使用。
  • 我们先用全局注册,注册上面例子中创建的myCom组件
    Vue.component('my-com',myCom)
    

    A2、全局注册语法糖:不需要创建直接注册的写法

    Vue.component('my-com',{'template':'<div>这是我的组件</div>'
    })
    

    'my-com’为给组件自定义的名字,在使用时会用到,后面myCom对应的就是上面构建的组件变量。

    A3、如果是用template及script标签构建的组件,第二个参数就改为它们标签上的id值

    Vue.component('my-com',{template: '#myCom'
    })
    

    B1、局部注册:只能在注册该组件的实例中使用,一处注册,一处使用

    var app = new Vue({el: '#app',components: {'my-com': myCom}
    })
    

    B2、局部注册语法糖:

    var app = new Vue({el: '#app',components: {'my-com': {template: '<div>这是我的组件</div>'}}
    })
    

    B3、< template>及< script>创建的组件,局部注册

    var app = new Vue({el: '#app',components: {'my-com': {template: '#myCom'}}
    })
    

    3、调用组件

    只需要在调用组件的地方,写上组件名字的标签即可

    <div>/*调用组件*/<my-com></my-com>
    </div>
    

    案例:

    A、全局注册:新建一个html文件,引入vue.js,并且定义2个vue实例app1和app2

    <!DOCTYPE html>
    <html lang="en">
    <head><meta charset="UTF-8"><title>vue组件</title><script src="vue.js"></script>
    </head>
    <body><div id="app1"><my-com></my-com></div><div id="app2"><my-com></my-com></div><script>/*创建组件*/var myCom = Vue.extend({template: '<div>这是我的组件</div>'});/*全局注册组件*/Vue.component('my-com',myCom);/*定义vue实例app1*/var app1 = new Vue({el: '#app1'});/*定义vue实例app2*/var app2 = new Vue({el: '#app2'});</script>
    </body>
    </html>
    

    显示效果:

Vue组件封装的过程相关推荐

  1. Vue组件封装,(面试回答)

    在我用vue开发项目的时候,一般我都会用到组件封装,采用组件化的思想进行项目开发,我在搭建一个项目的时候,就会创建一个views目录和一个commen目录和一个feature目录,views目录中放页 ...

  2. Vue组件封装 (面试必问)

    先说一下vue组件封装的优点 组件(Component)是Vue.js最强大的功能之一 组件可以扩展HTML元素, 封装可重用代码 组件是可复用的Vue 实例 组件可以提升整个项目的开发效率.能够把页 ...

  3. vue组件封装技巧,如何对vue模块进行功能封装

    如何对vue模块进行功能封装,vue组件封装技巧 当业务不断累加,导致原本干净整洁的代码越来越冗余,各种变量和注释已经让他人望而却步,往往又苦于重构带来的成本,导致诞生很多巨石应用.与其让自己或他人面 ...

  4. Vue 组件封装之 ScrollView 上拉加载更多

    Vue 组件封装之 ScrollView 上拉加载更多 一.ScrollView 上拉加载更多 二.使用案例 三.API 使用指南 四.源代码 一.ScrollView 上拉加载更多 组件说明: 实现 ...

  5. Vue 组件封装之 Questionnaire 问卷调查

    Vue 组件封装之 Questionnaire 问卷调查 前言 一.Questionnaire 组件 二.使用案例 三.API 使用指南 四.源代码 前言 问卷调查表也是目前前端比较常见的开发项目,目 ...

  6. Vue 组件封装之 Content 列表(处理多行输入框 textarea)

    Vue 组件封装之 Content 列表 一.Content 列表 二.使用案例 三.API 使用指南 四.源代码 一.Content 列表 组件说明: 实现 Content 列表布局排版. 效果展示 ...

  7. Vue 组件封装之 List 列表

    Vue 组件封装之 List 列表 一.List 列表 二.使用案例 三.API 使用指南 四.源代码 一.List 列表 组件说明: 实现 List 列表布局排版. 效果展示: 实现的功能: 在一个 ...

  8. Vue 组件封装之 Search 搜索

    Vue 组件封装之 Search 搜索 一.Search 组件 二.使用案例 三.API 使用指南 四.源代码 一.Search 组件 组件说明: 实现搜索功能. 效果展示: input 输入框背景铺 ...

  9. Vue 组件封装之 Tab 切换

    Vue 组件封装之 tab 切换 一.Tab 切换组件 二.使用案例 三.API 使用指南 四.源代码 五.总结 一.Tab 切换组件 组件说明: 实现 tab 切换. 效果展示: 实现 tab 切换 ...

最新文章

  1. 【每日一算法】 合并两个有序链表
  2. python使用pyodbc连接sql server 2008
  3. 14种轻量级网络综述 — 主干网络篇
  4. flowable DMN部署单独使用_06
  5. elementui表单校验原始密码_javascript 中入门数据校验
  6. 计算机文本专业,15计算机专业2文字录入期中考试卷
  7. Linux 命令(4)—— declare/typeset 命令(builtin)
  8. org manual翻译--3.6 Org-Plot
  9. C#控制BarTender自动打印(方法一)
  10. 线下娱乐“换血”,沉浸式体验会成为下一个10年的主题吗?
  11. 用 Amazon Web Services 进行云计算,第 3 部分: 用 EC2 根据需要提供服务器
  12. 优化ESD防护的PCB设计准则
  13. Altera的IP核
  14. 维视智造斩获2022年度光能杯最具影响力“智造”企业奖
  15. GV2、GV3、GV4热磁和单磁断路器区别是什么?
  16. 《洋娃娃和小熊跳舞》吉他简谱
  17. [英语语法]词法之连词
  18. Lane Detection in Low-light Conditions Using an Efficient DataEnhancement : Light Conditions Style
  19. strcmp,stricmp,strcmpi的区别
  20. Python多进程:超时进程的处理与终止

热门文章

  1. 番茄工作法——专治拖延症、精神涣散、再要五分钟综合症
  2. vue中实现input实时搜索
  3. 视频转图片工具的使用
  4. 使用finereport自定义滚动条
  5. 启动android模拟器 命令,使用命令启动android emulator
  6. github电脑壁纸_40行代码+奇技淫巧搞定专属电脑壁纸库【附壁纸】
  7. 企业微信第三方应用开发授权设置(PHP版)
  8. tx2在自制载板上无法识别usb以及pcie无法读取数据
  9. 阴阳师 服务器维护,阴阳师6月16日服务器维护更新内容公告
  10. Chainlink对接Cosmos区块链