一,由机械设计角度理解组件化思想

就像是机械设计中,整机通常由各个部件构成,各个部件实现特定的功能。经过机械行业长期的发展,有些公司就开始将这些可以实现特定功能的机械模块进行标准化,比如功能模块单一的标准件:螺钉,螺母,轴承这些。
功能结构复杂些的,比如滚珠丝杆,线性导轨,电缸,型材等。
利用这些模块,进行排列组合,就可以实现不同功能的机器设备。
这就是组件化思想。
即将实现不同功能的代码封装成不同的组件,像搭积木一样编程
组件化思想有四个特征:
标准:也就是和机械中的标准化一样,只有标准化,才能带来更大程度的互换性。
**分治:**同样的,就是每个模块可以实现各自独立的功能
**重用:**就像一台非标设备中,可能需要用到很多根滚珠丝杠一样的道理,同一个功能模块,也可能被多次复用。而需要更换也是一样,拆下来换成新的即可。
**组合:**这是基于前三个特征而产生的!各个模块组合起来就可以成为一个新的产品。
而在编程中,组件化开发如下图,一个模块就是一个组件,各个组件之间 是父子关系或者兄弟关系,于是 开发好组件之后,将他们用这些关系联系起来就可以了!!

二,组件化规范Web Components


这个规范的目标是通过封装创建好功能的定制元素来解决上述问题,这些定制元素的标签名字是它定义好的。不再是div,span之类的了。
但是浏览器还不是很支持这个,所以,只是了解一下,有这么个思想,或者说方向方法。
但是vue部分实现了上述的规范!这就可以学习了!

三,组件注册

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><link rel="stylesheet" type="text/css" href="css/base.css"/><style type="text/css">#app{width: 20%;margin: 200px auto;border: 1px solid #ccc;line-height: 30px;padding: 20px;}</style></head><body><div id="app"><button-counter></button-counter><!-- 组件的使用,直接用定义的名字做标签就可以了 --></div><script type="text/javascript" src="js/vue.min.js"></script><script type="text/javascript">//定义一个名为button-counter的新组件Vue.component('button-counter',{data:function(){return  {count:0}},// data的值需要是一个函数,return需要是一个对象,对象中就存放数据template:'<button @click="count++">点击了{{count}}次</button>'})var vm= new Vue({el:'#app'})</script></body>
</html>

效果:

值得注意的点:
1,data的值必须是一个函数

2,组件模板内容必须是单个根元素(最外层只有一个标签,不能多个并列)

3,组件模板内容可以是模板字符串,因为模板太长,都在一行,很丑的,就可以用模板字符串:

             template:`<div><button @click='count++'>点击了{{count}}次</button><button>测试123</button></div>`

四,组件的命名方式

第一种:中间通过横杆:button-counter
第二种:驼峰式:buttonCounter
需要注意的地方是:如果使用驼峰命名组件,那么必须在使用组件的时候,只能在字符串模板中用驼峰的方式使用组件(在模板字符串中可以使用其他定义好的组件名称),但是在普通的标签使用时,必须使用短横线的方式使用组件。
所以直接使用短横线就没那么多事情了!

五,局部组件

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><link rel="stylesheet" type="text/css" href="css/base.css"/><style type="text/css">#app{width: 20%;margin: 200px auto;border: 1px solid #ccc;line-height: 30px;padding: 20px;}</style></head><body><div id="app"><one></one><second></second><three></three></div><script type="text/javascript" src="js/vue.min.js"></script><script type="text/javascript">var HelloWorld1={data:function(){return {msg:'HelloWorld'}},template:'<div>{{msg}}</div>'}var HelloWorld2={data:function(){return {msg:'第二个'}},template:'<div>{{msg}}</div>'}var HelloWorld3={data:function(){return {msg:'第三个'}},template:'<div>{{msg}}</div>'}//这上面的三个都是先定义好对象,var vm= new Vue({el:'#app',data:{},//这里直接components开始定义组件components:{// 组件的定义方式,键值对的形式,键是字符串,值是对象'one':HelloWorld1,'second':HelloWorld2,'three':HelloWorld3}})</script></body>
</html>

vue组件化开发学习笔记-1-组件化开发思想相关推荐

  1. Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用

    Uniapp零基础开发学习笔记(5) -组件入门及容器组件使用 按照官网教程学习使用组件,并且重点把容器组件的应用进行了练习. 1.官网关于组件的介绍 组件是视图层的基本组成单元,是一个单独且可复用的 ...

  2. 四、Vue组件化开发学习笔记——父子组件通信,父级向子级传值(props),子级向父级传值(自定义事件),slot插槽

    一.父子组件的通信 在上一篇博文中,我们提到了子组件是不能引用父组件或者Vue实例的数据的. 但是,在开发中,往往一些数据确实需要从上层传递到下层: 比如在一个页面中,我们从服务器请求到了很多的数据. ...

  3. cad二次开发 java_基于.NET的CAD二次开发学习笔记一:CAD开发入门

    1.AutoCAD .NET API由不同的DLL文件组成,它们提供用于访问图形文件或AutoCAD应用程序的包含丰富的类.结构.方法和事件.每一个DLL文件都定义不同的使用基于功能的库组织组件的命名 ...

  4. Asp.net控件开发学习笔记(三)-控件开发基础

    封装      在asp.net中,控件被分为两类.用户控件和自定义服务器控件.前者就是我们经常用来将一些可复用的内容封装成的.ascx文件.这里主要研究后者. 创建自定义服务器控件      创建自 ...

  5. amazeui学习笔记二(进阶开发2)--Web组件简介Web Component

    amazeui学习笔记二(进阶开发2)--Web组件简介Web Component 一.总结 1.amaze ui:amaze ui是一个web 组件, 由模板(hbs).样式(LESS).交互(JS ...

  6. Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件

    Polyworks脚本开发学习笔记(十五)-用Python连接Polyworks的COM组件 用Polyworks脚本开发,没有高级语言的支持,功能难免单一,一些比较复杂的交互实现不了,界面和报告也很 ...

  7. Mini 容器学习笔记4——组件的生命周期(应用篇)

    Mini容器支持6中生命周期类型: 1. Singleton :单利类型(缺省组件都是单利类型的生命周期,由容器进行托管的) [Test]public void SingletonLifestyleT ...

  8. React学习:ref调用、组件封装调用-学习笔记

    文章目录 React学习:ref调用.组件封装调用-学习笔记 ref调用-string形式 ref调用-回调形式(官方推荐) ref调用-父调子 组件封装调用demo(全选) demo1(单组件) d ...

  9. Mini 容器学习笔记6——组件的获取(应用)

    1. 通过组件Id获取组件实例: [Test]public void GetByIdTest(){ServiceRegistry.Register<Person>("person ...

  10. 游戏开发学习笔记——lua脚本语言——安装、汉化与小测试(解决lua运行代码乱码问题)

    游戏开发学习笔记--lua脚本语言--安装.汉化与小测试 FOR THE SIGMA FOR THE GTINDER FOR THE ROBOMASTER 简介: Lua 是一种轻量小巧的脚本语言,用 ...

最新文章

  1. Oracle 导表异常处理方案 (解决空表导出出错问题)
  2. 提升PHP性能使用细节
  3. 深入学习QWidget-1
  4. (0017)iOS 开发之Mac上安装Eclipse、创建java后台程序访问本地数据库
  5. Java开发中遇到具有挑战的事_Java并发编程的挑战:遇到的问题及如何解决
  6. 微软职位内部推荐-Senior SW Engineer for Application Ecosystem
  7. [js]JavaScript Number.toPrecision() 函数详解
  8. vector与list的接口介绍与如何使用以及区别,附代码。
  9. scikit-image 库简介
  10. 如何选购一款好的人事档案管理系统
  11. 【硬件】串口422的DB9接法
  12. centos7安装中文字体
  13. PLSQL使用教程(一):同步表结构和表数据
  14. 学习PS基本工具与感悟
  15. 实验一 9V稳压电源电路实验
  16. [常用办公软件] wps怎么自动生成目录?wps自动生成目录的设置教程
  17. 盘点一份JS逆向代码转换为Python代码的教程
  18. scrapy框架入门第一天笔记记录
  19. Composer中的ThingWorx模型定义—建模
  20. PHP判断ip是否在指定IP段内(微信支付回调IP段验证)

热门文章

  1. ubuntu 16.04 运行php,乌班图Ubuntu 16.04下安装PHP 7过程详解
  2. mysql 更新删除数据,MYSQL数据的插入、删除、更新
  3. 手机点餐系统概述_自助点餐、自助收银......在餐饮行业有哪些智慧化场景?
  4. smalot-bootstrap-datetimepicker 使用心得
  5. Python标准库11 多进程探索 (multiprocessing包)
  6. js html table转json 反向生成数据源
  7. Serial垃圾回收器总结
  8. Redisson分布式锁使用采坑记
  9. thymeleaf使用总结
  10. Spring中的@Autowired自动装配