HOME 首頁(yè)
SERVICE 服務(wù)產(chǎn)品
XINMEITI 新媒體代運(yùn)營(yíng)
CASE 服務(wù)案例
NEWS 熱點(diǎn)資訊
ABOUT 關(guān)于我們
CONTACT 聯(lián)系我們
創(chuàng)意嶺
讓品牌有溫度、有情感
專注品牌策劃15年

    如何封裝組件(如何封裝組件怎么回答)

    發(fā)布時(shí)間:2023-04-21 19:25:57     稿源: 創(chuàng)意嶺    閱讀: 98        

    大家好!今天讓創(chuàng)意嶺的小編來(lái)大家介紹下關(guān)于如何封裝組件的問(wèn)題,以下是小編對(duì)此問(wèn)題的歸納整理,讓我們一起來(lái)看看吧。

    開(kāi)始之前先推薦一個(gè)非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計(jì)劃、工作報(bào)告、論文、代碼、作文、做題和對(duì)話答疑等等

    只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫(xiě)出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁(yè)版、PC客戶端

    官網(wǎng):https://ai.de1919.com。

    創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請(qǐng)撥打電話175-8598-2043,或添加微信:1454722008

    本文目錄:

    如何封裝組件(如何封裝組件怎么回答)

    一、Element scrollbar 使用封裝

    最近進(jìn)行 Element UI 組件封裝,在之前的項(xiàng)目中經(jīng)常用到 el-scrollbar 這個(gè)內(nèi)置組件,這次單獨(dú)封裝時(shí)遇到點(diǎn)寫(xiě)法上的小問(wèn)題,做個(gè)記錄和分享,希望能幫到相關(guān)的開(kāi)發(fā)者。

    el-scrollbar 在 Element 組件官方文檔中沒(méi)有,在 node_modules 中可以看到,目錄位置 node_modules/element-ui/packages/scrollbar

    在 Vue 頁(yè)面中直接引入 el-scrollbar 標(biāo)簽,定義對(duì)應(yīng)的高度就可以實(shí)現(xiàn) element 官方的滾動(dòng)條效果

    這時(shí)候,默認(rèn)效果的縱向滾動(dòng)條有了,但是橫向會(huì)出現(xiàn)瀏覽器默認(rèn)的滾動(dòng)條占位,如下效果

    默認(rèn)的橫向滾動(dòng)條隱藏可以設(shè)置 el-scrollbar__wrap 類屬性為 overflow-x: hidden; 移除, el-scrollbar__wrap 屬性可以在瀏覽其中查看元素看到,在自定義的元素內(nèi)部,選擇元素后在 style 添加 overflow-x: hidden; 即可查看移除默認(rèn)滾動(dòng)條的效果

    在我們的項(xiàng)目組件封裝過(guò)程中,這個(gè)組件的屬性設(shè)置需要在 <style> 中設(shè)置, 注意 默認(rèn) css 默認(rèn)下不能添加 scoped 屬性才能正常生效(這里花了我半個(gè)小時(shí)才弄出來(lái)效果), 寫(xiě)法如下

    有的項(xiàng)目里 <style> 標(biāo)簽里如果使用了 scss 并且使用了 scoped 屬性的話,需要使用 deep 操作符. 這里可以查看官方說(shuō)明 https://vue-loader.vuejs.org/zh/guide/scoped-css.html , 如下寫(xiě)法

    項(xiàng)目中大部分使用 el-scrollbar 默認(rèn)使用縱向滾動(dòng)條效果,在我們項(xiàng)目里的 tag 頁(yè)簽功能區(qū)使用了橫向滾動(dòng)條,隱藏了縱向滾動(dòng)條,由于自定義的需求,在實(shí)際使用時(shí)需要根據(jù)情況設(shè)置對(duì)應(yīng)的邊距問(wèn)題,這里調(diào)整的時(shí)候還需要隱藏原生滾動(dòng)條,這時(shí)候需要耐心一點(diǎn)才能調(diào)出想要的頁(yè)面效果。

    二、前端通用組件設(shè)計(jì)

    調(diào)用組件庫(kù)的API相信很多人都會(huì)用,但是如何封裝一個(gè)高復(fù)用的組件并不是每個(gè)人都能做到,而這也是檢驗(yàn)一個(gè)前端開(kāi)發(fā)人員的一個(gè)標(biāo)準(zhǔn)。

    說(shuō)到開(kāi)發(fā)組件,首先需要考慮一個(gè)問(wèn)題,一個(gè)可復(fù)用的組件都需要具備哪些必要條件。

    1. 細(xì)粒度考量

    看過(guò)設(shè)計(jì)模式的朋友應(yīng)該有了解過(guò)很多設(shè)計(jì)原則,其中一個(gè)就是 單一職責(zé)原則 ,這個(gè)原則放在開(kāi)發(fā)組件中也同樣適用。在原則上一個(gè)組件就只負(fù)責(zé)一件事,這就是單一原則所帶來(lái)的好處也非常明顯,就是可以更大可能的復(fù)用組件。但如果職責(zé)過(guò)于單一,也會(huì)造成組件碎片化嚴(yán)重,過(guò)于抽象。

    因此我們需要考慮,所謂的單一職責(zé)原則是建立在可復(fù)用的基礎(chǔ)上的。否則,可以做為獨(dú)立組件的內(nèi)部組件進(jìn)行使用。

    2. 組件通用性考量

    組件設(shè)計(jì)之初是為了當(dāng)時(shí)的頁(yè)面設(shè)計(jì)進(jìn)行封裝設(shè)計(jì)的,那么之后的頁(yè)面設(shè)計(jì)極大可能是與之前不同的,那么之前設(shè)計(jì)的組件就不能用了。

    而一旦發(fā)生這樣的情況,就說(shuō)明我們之前所設(shè)計(jì)的組件是不通用的,需要重新設(shè)計(jì)了。就像Antd組件庫(kù)那樣,預(yù)留了dropdownRender進(jìn)行組件渲染。

    通用性的設(shè)計(jì)就代表著將放棄對(duì)DOM的操作權(quán),暴露給開(kāi)發(fā)者進(jìn)行操作,組件開(kāi)發(fā)者本身只負(fù)責(zé)底層邏輯和基本的DOM結(jié)構(gòu)。這也是開(kāi)發(fā)通用型組件的秘訣之一。

    3. 技術(shù)選型

    css存在著許多的弊端,例如樣式易沖突(沒(méi)有作用域的概念)、書(shū)寫(xiě)繁瑣(不支持嵌套)、缺少變量(不便于一件更換主題)等等。而解決這些問(wèn)題的方案也是層出不窮,從最早的css預(yù)處理,到后來(lái)的Postcss,再到后來(lái)的styled-compontent,各種方式任君選擇。

    4. 打包工具

    產(chǎn)品的設(shè)計(jì)思想固然是核心,但是也需要一堆輔助工具來(lái)來(lái)幫助我們開(kāi)發(fā),例如編譯工具、測(cè)試工具、打包工具。

    說(shuō)到打包工具,就不得不提一下如今非?;鸨?,需要配置工程師專門(mén)配置的webpack了。但是他也有一個(gè)強(qiáng)大的競(jìng)爭(zhēng)對(duì)手 rollup。

    rollup更適合用于組件庫(kù)的打包,優(yōu)勢(shì)如下:

    設(shè)計(jì)一個(gè)輪播圖組件

    學(xué)以致用,學(xué)了就肯定要實(shí)踐一下。輪播圖是一個(gè)比較常見(jiàn)的組件,每個(gè)組件庫(kù)中都封裝的有,接下來(lái)我們也來(lái)介紹一下如何設(shè)計(jì)一個(gè)輪播圖組件。

    1. 輪播圖原理

    通常情況下我們使用輪播圖是這樣編寫(xiě)的

    那么為什么放入了四個(gè)div盒子卻只顯示一個(gè)呢,這是因?yàn)榭梢晠^(qū)域是固定的,只需要移動(dòng)div盒子就可以顯示出后面的盒子,這樣就達(dá)到了輪播的效果。

    為了是觀看效果更好,我們都會(huì)隱藏掉可視區(qū)域之外的內(nèi)容,這樣就是大家經(jīng)??吹降妮啿D了。組件就可以這樣設(shè)計(jì):

    可以通過(guò)transform: translateX()不斷改變SlideList的位置,就可以達(dá)到輪播的效果了。

    2. 輪播圖的基礎(chǔ)實(shí)現(xiàn)

    知道了基礎(chǔ)原理就可以進(jìn)行組件的實(shí)現(xiàn)了,這里以移動(dòng)端輪播圖為例。

    首先,獲取移動(dòng)端可視窗口的寬度。

    ------- 未完待續(xù) --------

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

    slot翻譯為插槽:

    在生活中很多地方都有插槽,電腦的USB插槽,插板當(dāng)中的電源插槽。

    插槽的目的是讓我們?cè)瓉?lái)的設(shè)備具備更多的擴(kuò)展性。

    比如電腦的USB我們可以插入U(xiǎn)盤(pán)、硬盤(pán)、手機(jī)、音響、鍵盤(pán)、鼠標(biāo)等等。

    組件的插槽:

    組件的插槽也是為了讓我們封裝的組件更加具有擴(kuò)展性。

    讓使用者可以決定組件內(nèi)部的一些內(nèi)容到底展示什么。

    栗子:移動(dòng)網(wǎng)站中的導(dǎo)航欄。

    移動(dòng)開(kāi)發(fā)中,幾乎每個(gè)頁(yè)面都有導(dǎo)航欄。

    導(dǎo)航欄我們必然會(huì)封裝成一個(gè)插件,比如nav-bar組件。

    一旦有了這個(gè)組件,我們就可以在多個(gè)頁(yè)面中復(fù)用了。

    但是,每個(gè)頁(yè)面的導(dǎo)航是一樣的嗎?No,我以京東M站為例

    如何去封裝這類的組件呢?

    它們也很多區(qū)別,但是也有很多共性。

    如果,我們每一個(gè)單獨(dú)去封裝一個(gè)組件,顯然不合適:比如每個(gè)頁(yè)面都返回,這部分內(nèi)容我們就要重復(fù)去封裝。

    但是,如果我們封裝成一個(gè),好像也不合理:有些左側(cè)是菜單,有些是返回,有些中間是搜索,有些是文字,等等。

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

    最好的封裝方式就是將共性抽取到組件中,將不同暴露為插槽。

    一旦我們預(yù)留了插槽,就可以讓使用者根據(jù)自己的需求,決定插槽中插入什么內(nèi)容。

    是搜索框,還是文字,還是菜單。由調(diào)用者自己來(lái)決定。

    這就是為什么我們要學(xué)習(xí)組件中的插槽slot的原因。

    了解了為什么用slot,我們?cè)賮?lái)談?wù)勅绾问褂胹lot?

    在子組件中,使用特殊的元素<slot>就可以為子組件開(kāi)啟一個(gè)插槽。

    該插槽插入什么內(nèi)容取決于父組件如何使用。

    我們通過(guò)一個(gè)簡(jiǎn)單的例子,來(lái)給子組件定義一個(gè)插槽:

    <slot>中的內(nèi)容表示,如果沒(méi)有在該組件中插入任何其他內(nèi)容,就默認(rèn)顯示該內(nèi)容

    有了這個(gè)插槽后,父組件如何使用呢?

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

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

    slot翻譯為插槽:

    在生活中很多地方都有插槽,電腦的USB插槽,插板當(dāng)中的電源插槽。

    插槽的目的是讓我們?cè)瓉?lái)的設(shè)備具備更多的擴(kuò)展性。

    比如電腦的USB我們可以插入U(xiǎn)盤(pán)、硬盤(pán)、手機(jī)、音響、鍵盤(pán)、鼠標(biāo)等等。

    組件的插槽:

    組件的插槽也是為了讓我們封裝的組件更加具有擴(kuò)展性。

    讓使用者可以決定組件內(nèi)部的一些內(nèi)容到底展示什么。

    栗子:移動(dòng)網(wǎng)站中的導(dǎo)航欄。

    移動(dòng)開(kāi)發(fā)中,幾乎每個(gè)頁(yè)面都有導(dǎo)航欄。

    導(dǎo)航欄我們必然會(huì)封裝成一個(gè)插件,比如nav-bar組件。

    一旦有了這個(gè)組件,我們就可以在多個(gè)頁(yè)面中復(fù)用了。

    但是,每個(gè)頁(yè)面的導(dǎo)航是一樣的嗎?No,我以京東M站為例

    如何去封裝這類的組件呢?

    它們也很多區(qū)別,但是也有很多共性。

    如果,我們每一個(gè)單獨(dú)去封裝一個(gè)組件,顯然不合適:比如每個(gè)頁(yè)面都返回,這部分內(nèi)容我們就要重復(fù)去封裝。

    但是,如果我們封裝成一個(gè),好像也不合理:有些左側(cè)是菜單,有些是返回,有些中間是搜索,有些是文字,等等。

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

    最好的封裝方式就是將共性抽取到組件中,將不同暴露為插槽。

    一旦我們預(yù)留了插槽,就可以讓使用者根據(jù)自己的需求,決定插槽中插入什么內(nèi)容。

    是搜索框,還是文字,還是菜單。由調(diào)用者自己來(lái)決定。

    這就是為什么我們要學(xué)習(xí)組件中的插槽slot的原因。

    以上就是關(guān)于如何封裝組件相關(guān)問(wèn)題的回答。希望能幫到你,如有更多相關(guān)問(wèn)題,您也可以聯(lián)系我們的客服進(jìn)行咨詢,客服也會(huì)為您講解更多精彩的知識(shí)和內(nèi)容。


    推薦閱讀:

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

    南非發(fā)展現(xiàn)狀(南非發(fā)展現(xiàn)狀如何)

    手機(jī)如何用新必應(yīng)(手機(jī)如何用新必應(yīng)充電器)

    烤豬皮餐飲品牌設(shè)計(jì)(烤豬皮餐飲品牌設(shè)計(jì)圖片)

    烤鴨餐飲品牌設(shè)計(jì)圖片(烤鴨餐飲品牌設(shè)計(jì)圖片高清)