HOME 首页
SERVICE 服务产品
XINMEITI 新媒体代运营
CASE 服务案例
NEWS 热点资讯
ABOUT 关于我们
CONTACT 联系我们
创意岭
让品牌有温度、有情感
专注品牌策划15年

    如何封装组件(如何封装组件怎么回答)

    发布时间:2023-04-21 19:25:57     稿源: 创意岭    阅读: 98        

    大家好!今天让创意岭的小编来大家介绍下关于如何封装组件的问题,以下是小编对此问题的归纳整理,让我们一起来看看吧。

    开始之前先推荐一个非常厉害的Ai人工智能工具,一键生成原创文章、方案、文案、工作计划、工作报告、论文、代码、作文、做题和对话答疑等等

    只需要输入关键词,就能返回你想要的内容,越精准,写出的就越详细,有微信小程序端、在线网页版、PC客户端

    官网:https://ai.de1919.com

    创意岭作为行业内优秀的企业,服务客户遍布全球各地,如需了解SEO相关业务请拨打电话175-8598-2043,或添加微信:1454722008

    本文目录:

    如何封装组件(如何封装组件怎么回答)

    一、Element scrollbar 使用封装

    最近进行 Element UI 组件封装,在之前的项目中经常用到 el-scrollbar 这个内置组件,这次单独封装时遇到点写法上的小问题,做个记录和分享,希望能帮到相关的开发者。

    el-scrollbar 在 Element 组件官方文档中没有,在 node_modules 中可以看到,目录位置 node_modules/element-ui/packages/scrollbar

    在 Vue 页面中直接引入 el-scrollbar 标签,定义对应的高度就可以实现 element 官方的滚动条效果

    这时候,默认效果的纵向滚动条有了,但是横向会出现浏览器默认的滚动条占位,如下效果

    默认的横向滚动条隐藏可以设置 el-scrollbar__wrap 类属性为 overflow-x: hidden; 移除, el-scrollbar__wrap 属性可以在浏览其中查看元素看到,在自定义的元素内部,选择元素后在 style 添加 overflow-x: hidden; 即可查看移除默认滚动条的效果

    在我们的项目组件封装过程中,这个组件的属性设置需要在 <style> 中设置, 注意 默认 css 默认下不能添加 scoped 属性才能正常生效(这里花了我半个小时才弄出来效果), 写法如下

    有的项目里 <style> 标签里如果使用了 scss 并且使用了 scoped 属性的话,需要使用 deep 操作符. 这里可以查看官方说明 https://vue-loader.vuejs.org/zh/guide/scoped-css.html , 如下写法

    项目中大部分使用 el-scrollbar 默认使用纵向滚动条效果,在我们项目里的 tag 页签功能区使用了横向滚动条,隐藏了纵向滚动条,由于自定义的需求,在实际使用时需要根据情况设置对应的边距问题,这里调整的时候还需要隐藏原生滚动条,这时候需要耐心一点才能调出想要的页面效果。

    二、前端通用组件设计

    调用组件库的API相信很多人都会用,但是如何封装一个高复用的组件并不是每个人都能做到,而这也是检验一个前端开发人员的一个标准。

    说到开发组件,首先需要考虑一个问题,一个可复用的组件都需要具备哪些必要条件。

    1. 细粒度考量

    看过设计模式的朋友应该有了解过很多设计原则,其中一个就是 单一职责原则 ,这个原则放在开发组件中也同样适用。在原则上一个组件就只负责一件事,这就是单一原则所带来的好处也非常明显,就是可以更大可能的复用组件。但如果职责过于单一,也会造成组件碎片化严重,过于抽象。

    因此我们需要考虑,所谓的单一职责原则是建立在可复用的基础上的。否则,可以做为独立组件的内部组件进行使用。

    2. 组件通用性考量

    组件设计之初是为了当时的页面设计进行封装设计的,那么之后的页面设计极大可能是与之前不同的,那么之前设计的组件就不能用了。

    而一旦发生这样的情况,就说明我们之前所设计的组件是不通用的,需要重新设计了。就像Antd组件库那样,预留了dropdownRender进行组件渲染。

    通用性的设计就代表着将放弃对DOM的操作权,暴露给开发者进行操作,组件开发者本身只负责底层逻辑和基本的DOM结构。这也是开发通用型组件的秘诀之一。

    3. 技术选型

    css存在着许多的弊端,例如样式易冲突(没有作用域的概念)、书写繁琐(不支持嵌套)、缺少变量(不便于一件更换主题)等等。而解决这些问题的方案也是层出不穷,从最早的css预处理,到后来的Postcss,再到后来的styled-compontent,各种方式任君选择。

    4. 打包工具

    产品的设计思想固然是核心,但是也需要一堆辅助工具来来帮助我们开发,例如编译工具、测试工具、打包工具。

    说到打包工具,就不得不提一下如今非常火爆的,需要配置工程师专门配置的webpack了。但是他也有一个强大的竞争对手 rollup。

    rollup更适合用于组件库的打包,优势如下:

    设计一个轮播图组件

    学以致用,学了就肯定要实践一下。轮播图是一个比较常见的组件,每个组件库中都封装的有,接下来我们也来介绍一下如何设计一个轮播图组件。

    1. 轮播图原理

    通常情况下我们使用轮播图是这样编写的

    那么为什么放入了四个div盒子却只显示一个呢,这是因为可视区域是固定的,只需要移动div盒子就可以显示出后面的盒子,这样就达到了轮播的效果。

    为了是观看效果更好,我们都会隐藏掉可视区域之外的内容,这样就是大家经常看到的轮播图了。组件就可以这样设计:

    可以通过transform: translateX()不断改变SlideList的位置,就可以达到轮播的效果了。

    2. 轮播图的基础实现

    知道了基础原理就可以进行组件的实现了,这里以移动端轮播图为例。

    首先,获取移动端可视窗口的宽度。

    ------- 未完待续 --------

    三、01.slot-插槽的基本使用

    slot翻译为插槽:

    在生活中很多地方都有插槽,电脑的USB插槽,插板当中的电源插槽。

    插槽的目的是让我们原来的设备具备更多的扩展性。

    比如电脑的USB我们可以插入U盘、硬盘、手机、音响、键盘、鼠标等等。

    组件的插槽:

    组件的插槽也是为了让我们封装的组件更加具有扩展性。

    让使用者可以决定组件内部的一些内容到底展示什么。

    栗子:移动网站中的导航栏。

    移动开发中,几乎每个页面都有导航栏。

    导航栏我们必然会封装成一个插件,比如nav-bar组件。

    一旦有了这个组件,我们就可以在多个页面中复用了。

    但是,每个页面的导航是一样的吗?No,我以京东M站为例

    如何去封装这类的组件呢?

    它们也很多区别,但是也有很多共性。

    如果,我们每一个单独去封装一个组件,显然不合适:比如每个页面都返回,这部分内容我们就要重复去封装。

    但是,如果我们封装成一个,好像也不合理:有些左侧是菜单,有些是返回,有些中间是搜索,有些是文字,等等。

    如何封装合适呢?抽取共性,保留不同。

    最好的封装方式就是将共性抽取到组件中,将不同暴露为插槽。

    一旦我们预留了插槽,就可以让使用者根据自己的需求,决定插槽中插入什么内容。

    是搜索框,还是文字,还是菜单。由调用者自己来决定。

    这就是为什么我们要学习组件中的插槽slot的原因。

    了解了为什么用slot,我们再来谈谈如何使用slot?

    在子组件中,使用特殊的元素<slot>就可以为子组件开启一个插槽。

    该插槽插入什么内容取决于父组件如何使用。

    我们通过一个简单的例子,来给子组件定义一个插槽:

    <slot>中的内容表示,如果没有在该组件中插入任何其他内容,就默认显示该内容

    有了这个插槽后,父组件如何使用呢?

    四、69 掌握slot插槽的基本使用

    https://www.bilibili.com/video/BV15741177Eh?p=69&spm_id_from=pageDriver

    slot翻译为插槽:

    在生活中很多地方都有插槽,电脑的USB插槽,插板当中的电源插槽。

    插槽的目的是让我们原来的设备具备更多的扩展性。

    比如电脑的USB我们可以插入U盘、硬盘、手机、音响、键盘、鼠标等等。

    组件的插槽:

    组件的插槽也是为了让我们封装的组件更加具有扩展性。

    让使用者可以决定组件内部的一些内容到底展示什么。

    栗子:移动网站中的导航栏。

    移动开发中,几乎每个页面都有导航栏。

    导航栏我们必然会封装成一个插件,比如nav-bar组件。

    一旦有了这个组件,我们就可以在多个页面中复用了。

    但是,每个页面的导航是一样的吗?No,我以京东M站为例

    如何去封装这类的组件呢?

    它们也很多区别,但是也有很多共性。

    如果,我们每一个单独去封装一个组件,显然不合适:比如每个页面都返回,这部分内容我们就要重复去封装。

    但是,如果我们封装成一个,好像也不合理:有些左侧是菜单,有些是返回,有些中间是搜索,有些是文字,等等。

    如何封装合适呢?抽取共性,保留不同。

    最好的封装方式就是将共性抽取到组件中,将不同暴露为插槽。

    一旦我们预留了插槽,就可以让使用者根据自己的需求,决定插槽中插入什么内容。

    是搜索框,还是文字,还是菜单。由调用者自己来决定。

    这就是为什么我们要学习组件中的插槽slot的原因。

    以上就是关于如何封装组件相关问题的回答。希望能帮到你,如有更多相关问题,您也可以联系我们的客服进行咨询,客服也会为您讲解更多精彩的知识和内容。


    推荐阅读:

    抖音作品下面的文字如何添加(抖音作品下面的文字如何添加上去)

    南非发展现状(南非发展现状如何)

    手机如何用新必应(手机如何用新必应充电器)

    烤猪皮餐饮品牌设计(烤猪皮餐饮品牌设计图片)

    烤鸭餐饮品牌设计图片(烤鸭餐饮品牌设计图片高清)