組件分享-腦圖版

20220712Vue組件.png

Vue組件

什么是組件

組件是一種編程抽象耀怜,其目的是復(fù)用
  • 通用型組件
  • 業(yè)務(wù)性組件

為什么需要組件

從業(yè)務(wù)角度看,業(yè)務(wù)成長到一定規(guī)模后菜拓,共性的地方需要復(fù)用倍踪。
從設(shè)計角度看系宫,產(chǎn)品會遵循一定的設(shè)計規(guī)范,需要保證產(chǎn)品一致性建车。
從開發(fā)效率角度看扩借,快速響應(yīng)業(yè)務(wù)開發(fā)。
從維護(hù)角度看缤至,需要統(tǒng)一管理代碼潮罪,一處修改全局響應(yīng) 而非到處復(fù)制粘貼。

組件庫的價值

就個人而言领斥,擁有一套自己的組件庫嫉到,可以讓開發(fā)更高效
就團(tuán)隊而言,擁有一套團(tuán)隊的組件庫月洛,可以讓協(xié)同開發(fā)變得更高效規(guī)范
就公司而言何恶,擁有一套公司維護(hù)的開源組件庫,公司在行業(yè)內(nèi)更具影響力

組件設(shè)計原則

就近原則
  • 單文件開發(fā) vue文件 三部分在同一頁面
  • 相關(guān)聯(lián)組件放在同級目錄
高復(fù)用性
  • 頁面級別的復(fù)用 (基礎(chǔ)組建)
  • 項目級別的復(fù)用-私有組件庫(業(yè)務(wù)組件)
  • 公司級別的復(fù)用-開源組件庫( elment-ui)
靈活擴(kuò)展
  • 利用slot插槽完成用戶個性化定制需求

封裝組件分類

木偶組件

一般通過props從父組件獲取數(shù)據(jù) 給什么數(shù)據(jù)就顯示什么數(shù)據(jù) 給什么方法 就調(diào)用什么方法

  • 內(nèi)部只處理渲染工作 膊存。固定部分 變化部分進(jìn)行了很好的分離导而。
智能組件

最外層的父組件忱叭,擁有數(shù)據(jù)

  • 數(shù)據(jù)的傳遞
  • 回調(diào)的處理

通用型-表格封裝

 <el-table max-height="600" border  :data="dataList" >
   <el-table-column align="center" prop="deliveryOrderNo" label="發(fā)貨單編號" width="200px" />
   <el-table-column align="center" prop="deliveryTime" label="發(fā)貨時間" width="200px" />
   <el-table-column align="center" prop="deliveryUser" label="發(fā)貨人" />
   <el-table-column align="center" prop="deliveryPhone" label="聯(lián)系電話" />
   <el-table-column align="center" prop="logisticsTypeName" label="配送方式" />
   <el-table-column align="center" prop="logisticsCodeName" label="配送公司" />
   <el-table-column align="center" prop="logisticsNo" label="配送單號" />
   <el-table-column align="center" prop="logisticsFile" label="配送憑證">
        <template slot-scope="scope">
                  <el-button type="text" @click="onDownloadClick(scope.row.logisticsFile)">下載</el-button>
         </template>
   </el-table-column>
</el-table>

首先要明確表格自身具有哪些屬性隔崎,此處展示一些常用的屬性

  • table表格的屬性

    • 1 border 是否帶有縱向邊框
      2 empty-text 空數(shù)據(jù)時顯示文本
      3 loading
      ......
  • 列屬性

1、hidden: 是否顯示
2 韵丑、prop 對應(yīng)字段名
3 爵卒、lable 列標(biāo)題
4 、showTooltip: 內(nèi)容過長隱藏顯示省略號
5撵彻、width 對應(yīng)列寬度
6钓株、fixed 列是否固定在左側(cè) (true left right)
7实牡、align
8、slot 特殊字段處理
1 某字段需要個性化處理呢
諸如“狀態(tài)”字段 要求不同狀態(tài)值轴合,文字顯示不同顏色创坞,或者前綴有不同圖標(biāo)。
2 一行有多個字段同時需要個性化處理呢

封裝代碼
<template>
    <el-table :data="tableData" :height="height" v-loading="tableLoading" border>
        <template v-for="(item,index) in tableColumns" :key='index'>
            <!-- 列 -->
            <el-table-column
                :key="`${item.label}`"
                :prop="item.prop"
                :label="item.label"
                :align="item.align || 'center'"
                :show-overflow-tooltip="!item.tooltip?item.tooltip:'true'"
                :min-width="item.minWidth || '110px'"
            >
                <template slot-scope="{row}">
                    <div v-if="item.slot">
                        <slot :name="item.prop" :row="row">{{ row }}</slot>
                    </div>
                    <div v-else>
                        <span v-if="!item.money">{{ row[item.prop] }}</span>
                        <span v-else>{{ addCommas(row[item.prop] ) }}</span>
                    </div>
                </template>
            </el-table-column>
        </template>
    </el-table>
</template>

<script>
import tableResize from '@/mixins/tableResize';
export default {
    name: 'Index',
    mixins: [
        tableResize,
    ],
    props: {
        // 表格數(shù)據(jù)
        tableData: {
            type: Array,
            default: () => [],
        },
        // 列
        tableColumns: {
            type: Array,
            default: () => [],
        },
        tableLoading: {
            type: Boolean,
            default: false,
        },
        height: {
            type: [Number, String],
            default: 'auto',
        },
    },
};
</script>

全局注冊
image.png
使用:

定義數(shù)據(jù)源+表格列

            tableDataPay: [],
            tableColumnsPay: [
                { prop: 'invoiceRealTypeView', label: '發(fā)票類型' },
                { prop: 'invoiceNo', label: '發(fā)票號碼' },
                { prop: 'buyerName', label: '購買方名稱' },
                { prop: 'sellerName', label: '銷售方名稱' },
                { prop: 'invoiceTotalAmount', label: '價稅合計金額', money: true },
                { prop: 'invoiceId', label: '銷貨清單', slot: true },
                { prop: 'invoiceInfoOssKey', label: '發(fā)票', slot: true },
                { prop: 'thirdInvoiceStateView', label: '發(fā)票狀態(tài)' },
                { prop: 'invoiceRealTypeView', label: '開票類型' },
                { prop: 'invoiceDate', label: '開票日期', tooltip: false },
                // { prop: 'postNumber', label: '郵寄單號' }, // 需求文檔:這兩個前端暫時不展示
                // { prop: 'postStateView', label: '郵寄狀態(tài)' },
            ],
<FTable :table-data="tableDataPay" :table-columns="tableColumnsPay">
   <template v-slot:invoiceId="scope">
        <el-button type="text" @click="showSaleList(scope.row.invoiceId,2)">查看</el-button>
   </template>
   <template v-slot:invoiceInfoOssKey="scope">
       <el-button type="text" @click="previewImage(scope.row.invoiceInfoOssKey)">查看</el-button>
  </template>
</FTable>
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末受葛,一起剝皮案震驚了整個濱河市题涨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌总滩,老刑警劉巖纲堵,帶你破解...
    沈念sama閱讀 218,640評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異闰渔,居然都是意外死亡席函,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,254評論 3 395
  • 文/潘曉璐 我一進(jìn)店門冈涧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茂附,“玉大人,你說我怎么就攤上這事炕舵『沃” “怎么了?”我有些...
    開封第一講書人閱讀 165,011評論 0 355
  • 文/不壞的土叔 我叫張陵咽筋,是天一觀的道長溶推。 經(jīng)常有香客問我,道長奸攻,這世上最難降的妖魔是什么蒜危? 我笑而不...
    開封第一講書人閱讀 58,755評論 1 294
  • 正文 為了忘掉前任,我火速辦了婚禮睹耐,結(jié)果婚禮上辐赞,老公的妹妹穿的比我還像新娘。我一直安慰自己硝训,他們只是感情好响委,可當(dāng)我...
    茶點故事閱讀 67,774評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著窖梁,像睡著了一般赘风。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上纵刘,一...
    開封第一講書人閱讀 51,610評論 1 305
  • 那天邀窃,我揣著相機(jī)與錄音,去河邊找鬼假哎。 笑死瞬捕,一個胖子當(dāng)著我的面吹牛鞍历,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播肪虎,決...
    沈念sama閱讀 40,352評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼劣砍,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了扇救?” 一聲冷哼從身側(cè)響起秆剪,我...
    開封第一講書人閱讀 39,257評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎爵政,沒想到半個月后仅讽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,717評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡钾挟,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,894評論 3 336
  • 正文 我和宋清朗相戀三年洁灵,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片掺出。...
    茶點故事閱讀 40,021評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡徽千,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出汤锨,到底是詐尸還是另有隱情双抽,我是刑警寧澤,帶...
    沈念sama閱讀 35,735評論 5 346
  • 正文 年R本政府宣布闲礼,位于F島的核電站牍汹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏柬泽。R本人自食惡果不足惜慎菲,卻給世界環(huán)境...
    茶點故事閱讀 41,354評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锨并。 院中可真熱鬧露该,春花似錦、人聲如沸第煮。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,936評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽包警。三九已至撵摆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間揽趾,已是汗流浹背台汇。 一陣腳步聲響...
    開封第一講書人閱讀 33,054評論 1 270
  • 我被黑心中介騙來泰國打工苛骨, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留篱瞎,地道東北人苟呐。 一個月前我還...
    沈念sama閱讀 48,224評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像俐筋,于是被迫代替她去往敵國和親牵素。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,974評論 2 355

推薦閱讀更多精彩內(nèi)容