Vue组件(34)页面、组件与控件

vue的组件

在Vue里面,默认的都是组件,路由导航加载的是组件,组件里面注册的也是组件,组件还能嵌套组件,虽然很便捷,但是稍微有点混乱。

于是Vue3的项目设置了两个文件夹,一个是 views 可以放页面,或者说是视图,另一个是 components 可以放组件。
虽然名称和用途不同,但是存放的都是 .vue文件,内容结构也是完全一样的。

一开始我还以为 views 里面的组件不需要设置props呢,后来学习了router之后,发现我错了,因为路由里面也可以设置组件的参数。

那么问题来了,如果区分?我们要做一个组件,放在哪里合适?

页面

页面是直接和URL对应,或者说是和“大”URL对应的,里面不做具体的功能,而是放各种组件,负责组件之间的关联关系。

比如

  • 首页;
  • 商品列表页
  • 商品详细页面
    等。
    这只是举个简单的例子,这样有一个感觉的认识,其实我也说不太清楚,但是又需要这么一个区分,否则总是感觉哪里不对的样子。

组件

负责实现具体的功能,比如:

  • 导航组件,负责各种连接,
  • 产品列表的组件,负责显示产品目录、分页和查询之类的功能。
  • 产品详细组件,负责显示产品的具体内容、购物车按钮等。

当然一个项目里面可以有各种各样的组件,上面只是举个具体点的例子,并不是定义。

控件

更具体的实现专一的功能,比如

  • el-input,实现文本类数据的输入;
  • el-input-number,实现数字的输入;
  • el-select,实现下拉类的选择。

这里只是举了几个UI提供的控件,或者叫做组件。因为在vue里面似乎没有明确的区分,而UI库一般又以插件的形式被注册到项目里面的。

自己封装的组件

那么问题来了,我们把UI拿过来封装一下,做成一个组件,算是哪一种呢?

这个,好像哪种都不算,或者说是介于UI库与组件之间的一种“中间件”。

UI库是针对功能来做,不考虑具体的项目,侧重于UI部分,就是要做的漂亮。数据绑定交给Vue,实现业务功能,那就是调用者的事情,UI库并不怎么关心。

而我们封装的组件呢,就要侧重一下业务逻辑、业务需求,针对某一种、某一类的业务需求,封装一个组件,以实现一定的功能需求。

如果UI库最求的是灵活的话,那么封装组件最求的就是更简单好用,可以牺牲一些灵活性。

自己封装的组件的致命缺点

其实这种方式由来已久,但是为啥总是不受待见的感觉呢?因为有一个致命缺点。

如果封装的组件不能满足需求的话,怎么办?

因为整个项目都是基于这种封装组件来实现的,如果能够满足需求那自然是好,但是如果不能满足新的某一个需求的话,那么怎么办?

因为封装、因为不够灵活,导致无法实现新的需求,这时候就会发现 —— 项目崩了。

不是项目无法运行,而是如果要让项目实现新的需求,那么以前封装的组件就不能用了,要换掉。

但是项目时间紧迫,哪有换组件的时间?

另外,就算能换组件,那么以前做的工作是不是都白费了?

被坑过的肯定有同感。

没被坑过的,大概是不知道我在说啥的。

所以如何处理这个问题,就是一个不能忽略的重点。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容