-
當(dāng)前位置:首頁 > 創(chuàng)意學(xué)院 > 技術(shù) > 專題列表 > 正文
如何封裝組件(如何封裝組件怎么回答)
大家好!今天讓創(chuàng)意嶺的小編來大家介紹下關(guān)于如何封裝組件的問題,以下是小編對此問題的歸納整理,讓我們一起來看看吧。
開始之前先推薦一個非常厲害的Ai人工智能工具,一鍵生成原創(chuàng)文章、方案、文案、工作計劃、工作報告、論文、代碼、作文、做題和對話答疑等等
只需要輸入關(guān)鍵詞,就能返回你想要的內(nèi)容,越精準(zhǔn),寫出的就越詳細(xì),有微信小程序端、在線網(wǎng)頁版、PC客戶端
官網(wǎng):https://ai.de1919.com。
創(chuàng)意嶺作為行業(yè)內(nèi)優(yōu)秀的企業(yè),服務(wù)客戶遍布全球各地,如需了解SEO相關(guān)業(yè)務(wù)請撥打電話175-8598-2043,或添加微信:1454722008
本文目錄:
一、Element scrollbar 使用封裝
最近進行 Element UI 組件封裝,在之前的項目中經(jīng)常用到 el-scrollbar 這個內(nèi)置組件,這次單獨封裝時遇到點寫法上的小問題,做個記錄和分享,希望能幫到相關(guān)的開發(fā)者。
el-scrollbar 在 Element 組件官方文檔中沒有,在 node_modules 中可以看到,目錄位置 node_modules/element-ui/packages/scrollbar
在 Vue 頁面中直接引入 el-scrollbar 標(biāo)簽,定義對應(yīng)的高度就可以實現(xiàn) element 官方的滾動條效果
這時候,默認(rèn)效果的縱向滾動條有了,但是橫向會出現(xiàn)瀏覽器默認(rèn)的滾動條占位,如下效果
默認(rèn)的橫向滾動條隱藏可以設(shè)置 el-scrollbar__wrap 類屬性為 overflow-x: hidden; 移除, el-scrollbar__wrap 屬性可以在瀏覽其中查看元素看到,在自定義的元素內(nèi)部,選擇元素后在 style 添加 overflow-x: hidden; 即可查看移除默認(rèn)滾動條的效果
在我們的項目組件封裝過程中,這個組件的屬性設(shè)置需要在 <style> 中設(shè)置, 注意 默認(rèn) css 默認(rèn)下不能添加 scoped 屬性才能正常生效(這里花了我半個小時才弄出來效果), 寫法如下
有的項目里 <style> 標(biāo)簽里如果使用了 scss 并且使用了 scoped 屬性的話,需要使用 deep 操作符. 這里可以查看官方說明 https://vue-loader.vuejs.org/zh/guide/scoped-css.html , 如下寫法
項目中大部分使用 el-scrollbar 默認(rèn)使用縱向滾動條效果,在我們項目里的 tag 頁簽功能區(qū)使用了橫向滾動條,隱藏了縱向滾動條,由于自定義的需求,在實際使用時需要根據(jù)情況設(shè)置對應(yīng)的邊距問題,這里調(diào)整的時候還需要隱藏原生滾動條,這時候需要耐心一點才能調(diào)出想要的頁面效果。
二、前端通用組件設(shè)計
調(diào)用組件庫的API相信很多人都會用,但是如何封裝一個高復(fù)用的組件并不是每個人都能做到,而這也是檢驗一個前端開發(fā)人員的一個標(biāo)準(zhǔn)。
說到開發(fā)組件,首先需要考慮一個問題,一個可復(fù)用的組件都需要具備哪些必要條件。
1. 細(xì)粒度考量
看過設(shè)計模式的朋友應(yīng)該有了解過很多設(shè)計原則,其中一個就是 單一職責(zé)原則 ,這個原則放在開發(fā)組件中也同樣適用。在原則上一個組件就只負(fù)責(zé)一件事,這就是單一原則所帶來的好處也非常明顯,就是可以更大可能的復(fù)用組件。但如果職責(zé)過于單一,也會造成組件碎片化嚴(yán)重,過于抽象。
因此我們需要考慮,所謂的單一職責(zé)原則是建立在可復(fù)用的基礎(chǔ)上的。否則,可以做為獨立組件的內(nèi)部組件進行使用。
2. 組件通用性考量
組件設(shè)計之初是為了當(dāng)時的頁面設(shè)計進行封裝設(shè)計的,那么之后的頁面設(shè)計極大可能是與之前不同的,那么之前設(shè)計的組件就不能用了。
而一旦發(fā)生這樣的情況,就說明我們之前所設(shè)計的組件是不通用的,需要重新設(shè)計了。就像Antd組件庫那樣,預(yù)留了dropdownRender進行組件渲染。
通用性的設(shè)計就代表著將放棄對DOM的操作權(quán),暴露給開發(fā)者進行操作,組件開發(fā)者本身只負(fù)責(zé)底層邏輯和基本的DOM結(jié)構(gòu)。這也是開發(fā)通用型組件的秘訣之一。
3. 技術(shù)選型
css存在著許多的弊端,例如樣式易沖突(沒有作用域的概念)、書寫繁瑣(不支持嵌套)、缺少變量(不便于一件更換主題)等等。而解決這些問題的方案也是層出不窮,從最早的css預(yù)處理,到后來的Postcss,再到后來的styled-compontent,各種方式任君選擇。
4. 打包工具
產(chǎn)品的設(shè)計思想固然是核心,但是也需要一堆輔助工具來來幫助我們開發(fā),例如編譯工具、測試工具、打包工具。
說到打包工具,就不得不提一下如今非常火爆的,需要配置工程師專門配置的webpack了。但是他也有一個強大的競爭對手 rollup。
rollup更適合用于組件庫的打包,優(yōu)勢如下:
設(shè)計一個輪播圖組件
學(xué)以致用,學(xué)了就肯定要實踐一下。輪播圖是一個比較常見的組件,每個組件庫中都封裝的有,接下來我們也來介紹一下如何設(shè)計一個輪播圖組件。
1. 輪播圖原理
通常情況下我們使用輪播圖是這樣編寫的
那么為什么放入了四個div盒子卻只顯示一個呢,這是因為可視區(qū)域是固定的,只需要移動div盒子就可以顯示出后面的盒子,這樣就達到了輪播的效果。
為了是觀看效果更好,我們都會隱藏掉可視區(qū)域之外的內(nèi)容,這樣就是大家經(jīng)??吹降妮啿D了。組件就可以這樣設(shè)計:
可以通過transform: translateX()不斷改變SlideList的位置,就可以達到輪播的效果了。
2. 輪播圖的基礎(chǔ)實現(xiàn)
知道了基礎(chǔ)原理就可以進行組件的實現(xiàn)了,這里以移動端輪播圖為例。
首先,獲取移動端可視窗口的寬度。
------- 未完待續(xù) --------
三、01.slot-插槽的基本使用
slot翻譯為插槽:
在生活中很多地方都有插槽,電腦的USB插槽,插板當(dāng)中的電源插槽。
插槽的目的是讓我們原來的設(shè)備具備更多的擴展性。
比如電腦的USB我們可以插入U盤、硬盤、手機、音響、鍵盤、鼠標(biāo)等等。
組件的插槽:
組件的插槽也是為了讓我們封裝的組件更加具有擴展性。
讓使用者可以決定組件內(nèi)部的一些內(nèi)容到底展示什么。
栗子:移動網(wǎng)站中的導(dǎo)航欄。
移動開發(fā)中,幾乎每個頁面都有導(dǎo)航欄。
導(dǎo)航欄我們必然會封裝成一個插件,比如nav-bar組件。
一旦有了這個組件,我們就可以在多個頁面中復(fù)用了。
但是,每個頁面的導(dǎo)航是一樣的嗎?No,我以京東M站為例
如何去封裝這類的組件呢?
它們也很多區(qū)別,但是也有很多共性。
如果,我們每一個單獨去封裝一個組件,顯然不合適:比如每個頁面都返回,這部分內(nèi)容我們就要重復(fù)去封裝。
但是,如果我們封裝成一個,好像也不合理:有些左側(cè)是菜單,有些是返回,有些中間是搜索,有些是文字,等等。
如何封裝合適呢?抽取共性,保留不同。
最好的封裝方式就是將共性抽取到組件中,將不同暴露為插槽。
一旦我們預(yù)留了插槽,就可以讓使用者根據(jù)自己的需求,決定插槽中插入什么內(nèi)容。
是搜索框,還是文字,還是菜單。由調(diào)用者自己來決定。
這就是為什么我們要學(xué)習(xí)組件中的插槽slot的原因。
了解了為什么用slot,我們再來談?wù)勅绾问褂胹lot?
在子組件中,使用特殊的元素<slot>就可以為子組件開啟一個插槽。
該插槽插入什么內(nèi)容取決于父組件如何使用。
我們通過一個簡單的例子,來給子組件定義一個插槽:
<slot>中的內(nèi)容表示,如果沒有在該組件中插入任何其他內(nèi)容,就默認(rèn)顯示該內(nèi)容
有了這個插槽后,父組件如何使用呢?
四、69 掌握slot插槽的基本使用
https://www.bilibili.com/video/BV15741177Eh?p=69&spm_id_from=pageDriver
slot翻譯為插槽:
在生活中很多地方都有插槽,電腦的USB插槽,插板當(dāng)中的電源插槽。
插槽的目的是讓我們原來的設(shè)備具備更多的擴展性。
比如電腦的USB我們可以插入U盤、硬盤、手機、音響、鍵盤、鼠標(biāo)等等。
組件的插槽:
組件的插槽也是為了讓我們封裝的組件更加具有擴展性。
讓使用者可以決定組件內(nèi)部的一些內(nèi)容到底展示什么。
栗子:移動網(wǎng)站中的導(dǎo)航欄。
移動開發(fā)中,幾乎每個頁面都有導(dǎo)航欄。
導(dǎo)航欄我們必然會封裝成一個插件,比如nav-bar組件。
一旦有了這個組件,我們就可以在多個頁面中復(fù)用了。
但是,每個頁面的導(dǎo)航是一樣的嗎?No,我以京東M站為例
如何去封裝這類的組件呢?
它們也很多區(qū)別,但是也有很多共性。
如果,我們每一個單獨去封裝一個組件,顯然不合適:比如每個頁面都返回,這部分內(nèi)容我們就要重復(fù)去封裝。
但是,如果我們封裝成一個,好像也不合理:有些左側(cè)是菜單,有些是返回,有些中間是搜索,有些是文字,等等。
如何封裝合適呢?抽取共性,保留不同。
最好的封裝方式就是將共性抽取到組件中,將不同暴露為插槽。
一旦我們預(yù)留了插槽,就可以讓使用者根據(jù)自己的需求,決定插槽中插入什么內(nèi)容。
是搜索框,還是文字,還是菜單。由調(diào)用者自己來決定。
這就是為什么我們要學(xué)習(xí)組件中的插槽slot的原因。
以上就是關(guān)于如何封裝組件相關(guān)問題的回答。希望能幫到你,如有更多相關(guān)問題,您也可以聯(lián)系我們的客服進行咨詢,客服也會為您講解更多精彩的知識和內(nèi)容。
推薦閱讀:
抖音作品下面的文字如何添加(抖音作品下面的文字如何添加上去)
南非發(fā)展現(xiàn)狀(南非發(fā)展現(xiàn)狀如何)
手機如何用新必應(yīng)(手機如何用新必應(yīng)充電器)
烤豬皮餐飲品牌設(shè)計(烤豬皮餐飲品牌設(shè)計圖片)
烤鴨餐飲品牌設(shè)計圖片(烤鴨餐飲品牌設(shè)計圖片高清)