隨著科技的不斷進步,軟件開發行業的復雜度也在日益提高。傳統的開發方式通常是將整個系統視作一個整體,進行一次性開發。然而,這種方式的缺點是顯而易見的:即使只是對系統進行微小的修改或添加一個小功能,也可能需要對整個邏輯進行重新調整,從而引發一系列連鎖反應,增加了開發成本和時間。
為了應對這一挑戰,組件化開發逐漸成為了軟件開發行業的一種趨勢。通過組件化開發,我們可以將整個系統分解為一系列獨立的小組件,每個組件都有其特定的功能和職責。這種方式的優點是顯而易見的:每個組件都可以獨立開發、測試和部署,大大提高了開發效率;同時,組件之間可以隨意組合,使得系統具有更好的可擴展性和可維護性。
本文將介紹一款前端組件——vue uni-app自定義精美海報生成組件。這款組件的主要功能是根據用戶自定義的數據字段,自動生成一張海報。海報的樣式和布局可以完全自定義,以滿足不同場景的需求。此外,用戶還可以通過長按海報圖片的方式將其保存到本地,方便后續使用。
下面我們來看一下這款組件的使用示例:
cc-poster 注意: 1:長按保存圖片不支持H5,小程序 App均支持 2:圖片地址需要是小程序白名單設置的IP地址
使用方法
<!-- 自定義生成海報組件 -->
<!-- @success:成功事件 imgSrc:圖片地址 QrSrc:二維碼圖片二進制 Title:標題 PriceTxt:價格 OriginalTxt:原始價格 LineType:是否顯示換行 -->
<cc-poster @success="posterSuccess" :imgSrc="goods.itempic" :QrSrc="erweimapath" :Title="goods.itemtitle" :PriceTxt="goods.itemendprice" :OriginalTxt="goods.itemprice":LineType="false"></cc-poster>
HTML代碼實現部分
<template>
<view>
<button style="margin: 66px 36px;" @click="showModal"> 生成海報 </button>
<view class="cu-modal" :class="modalName == 'Image' ? 'show' : ''" @tap="hideModal">
<view class="cu-dialog" v-if="goods && erweimapath && haibaoShow" @tap="hideModal">
<view class="bg-img">
<!-- 自定義生成海報組件 -->
<!-- @success:成功事件 imgSrc:圖片地址 QrSrc:二維碼圖片地址 Title:標題 PriceTxt:價格 OriginalTxt:原始價格 LineType -->
<cc-poster @success="posterSuccess" :imgSrc="goods.itempic" :QrSrc="erweimapath"
:Title="goods.itemtitle" :PriceTxt="goods.itemendprice" :OriginalTxt="goods.itemprice"
:LineType="false"></cc-poster>
</view>
</view>
</view>
</view>
</template>
<script>
//高德SDK
export default {
data() {
return {
haibaoImg: null,
modalName: '',
haibaoShow: false,
erweimapath: "https://www.xinhuanet.com/politics/2016-07/19/5119875106653616178_11n.jpg",
goods: {
"itemid": "2nNozWXiotnRwxGUakBuXUD-0npyN5GSNmYDb0pgTxw",
"itemtitle": "開麗產婦衛生巾產后專用刀紙月子安睡褲計量衛生巾孕婦用品安心褲",
"itemshorttitle": "開麗產婦衛生巾月子安睡褲計量衛生",
"itemdesc": "【開麗旗艦店】安心褲型親膚面料,產后專用不勒刀口,免穿設計方便,超強吸收加長加大款,產婦的優質選擇!【贈運費險】",
"itemprice": "39.90",
"todaysale": "3",
"itempic": "https://img.alicdn.com/imgextra/i1/2742920221/O1CN01nFqqJ41DVGNfjYMmu_!!2742920221.jpg",
"itemendprice": "29.91",
}
};
},
onLoad() {
},
methods: {
posterSuccess(haibaoImg) {
this.haibaoImg = haibaoImg;
this.modalName = 'Image';
},
showModal() {
if (!this.haibaoImg) {
this.haibaoShow = true;
uni.showLoading({
title: '海報生成中...'
});
} else {
this.modalName = 'Image';
}
},
hideModal() {
this.modalName = null;
}
}
};
</script>
<style lang="scss">
.cu-modal {
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1110;
opacity: 0;
outline: 0;
text-align: center;
-ms-transform: scale(1.185);
transform: scale(1.185);
backface-visibility: hidden;
perspective: 2000upx;
background: rgba(0, 0, 0, 0.6);
transition: all 0.3s ease-in-out 0s;
pointer-events: none;
}
.cu-modal::before {
content: "\200B";
display: inline-block;
height: 100%;
vertical-align: middle;
}
.cu-modal.show {
opacity: 1;
transition-duration: 0.3s;
-ms-transform: scale(1);
transform: scale(1);
overflow-x: hidden;
overflow-y: auto;
pointer-events: auto;
}
.cu-dialog {
position: relative;
display: inline-block;
vertical-align: middle;
margin-left: auto;
margin-right: auto;
width: 680upx;
max-width: 100%;
background-color: #f8f8f8;
border-radius: 10upx;
overflow: hidden;
}
</style>
在使用實例中,我們注意到 cc-poster
這一組件,它能夠根據我們的參數輸入來實現不同的海報生成功能。舉例來說,我們可以利用 :img
參數來設定海報的圖片來源,通過 QrSrc
來調整二維碼的圖片格式,借助 :Title
來定義標題,通過 :PriceTxt
設定價格,而 :OriginalTxt
則可用于設定原始價格。此外,LineType
參數還能決定是否需要顯示換行。
除了這些基礎應用,該組件更是提供了豐富的自定義選項,使得用戶可以靈活調整樣式和布局。只需簡單地修改組件的 CSS 樣式,用戶就能改變海報的整體外觀;同時,通過調整組件的 HTML 結構,用戶還能實現具有個性化的布局設計。
綜上所述,這款自定義精美海報生成組件無疑是一款極具實用價值的工具。它不僅能夠協助開發者迅速生成滿足需求的海報,提升了開發效率和用戶體驗,更通過靈活的自定義選項,賦予了開發者無限的設計可能。如果你對組件化開發有所熱衷,那么這款組件絕對值得你一試!