小程序頁面動(dòng)態(tài)配置實(shí)現(xiàn)方法
小程序可以根據(jù)管理后臺(tái)配置動(dòng)態(tài)更新展示內(nèi)容,如實(shí)現(xiàn)下面新鮮事欄目圖片的來源的可配置,點(diǎn)擊跳轉(zhuǎn)url的可配置。

實(shí)現(xiàn)方案
1后端創(chuàng)建一個(gè)map結(jié)構(gòu)的數(shù)據(jù)表,表結(jié)構(gòu)如下:

2 管理后臺(tái)根據(jù)不同業(yè)務(wù)設(shè)定不同的key和value,更新數(shù)據(jù)庫
如key:ad1url value:a.png
如果需要更新頁面圖片,只需更新ad1url對應(yīng)的value
3 小程序根據(jù)對應(yīng)業(yè)務(wù)key獲取對應(yīng)的配置項(xiàng),更新頁面顯示
技術(shù)棧
后端接口服務(wù):SpringBoot Mybatis MySql
管理后臺(tái):vue
前端:小程序
代碼實(shí)現(xiàn)
后端接口
為了保證key的唯一性,key在數(shù)據(jù)庫設(shè)置為unique屬性,新增和更新功能通過以下sql語句實(shí)現(xiàn),主要通過replace into實(shí)現(xiàn)配置項(xiàng)的唯一
@Insert("<script>" +
"REPLACE INTO `rental`.`t_config`(`key`, `value`) VALUES" +
"<foreach" +
" collection=\"list\" item=\"item1\" index=\"index\" separator=\",\">" +
"(#{item1.key}, #{item1.value})" +
"</foreach>" +
"</script>")
@Options(useGeneratedKeys = true, keyProperty = "configId", keyColumn = "configId")
api設(shè)計(jì)
一開始想通過傳如list數(shù)據(jù)給后端實(shí)現(xiàn)配置項(xiàng)的批量插入功能,發(fā)現(xiàn)后端數(shù)據(jù)一直接受不到,故而退而求其次,通過json字符串實(shí)現(xiàn)vue(網(wǎng)絡(luò)庫使用axios)調(diào)用后端接口
@ApiOperation(value = "新增或更新配置列表")
@RequestMapping(value = "/add_or_update_config_list", method = RequestMethod.POST,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public ResponseBean<String> addOrUpdateConfigList(String list) {
long result = configService.batchInsertOrUpdate(JSONObject.parseArray(
list,Config.class));
......
}
管理平臺(tái)
管理平臺(tái)用vue開發(fā),網(wǎng)絡(luò)框架采用axios,列表數(shù)據(jù)通過json字符串傳遞給后端
let config1 = {key: "ad1Url", value: this.formData.ad1Url};
let config2 = {key: "ad2Url", value: this.formData.ad2Url};
let config3 = {key: "adClick1", value: this.formData.adClick1};
let config4 = {key: "adClick2", value: this.formData.adClick2};
let configList = [config1, config2, config3, config4];
let result = await addConfigList({list: JSON.stringify(co
nfigList)});
......
小程序
小程序調(diào)用后端接口返回所有配置項(xiàng),具體業(yè)務(wù)根據(jù)具體業(yè)務(wù)key獲取配置項(xiàng)
getConfigList: function () {
var that = this;
wx.request({
url: constant.HOST + '/config/get_config_list',
method: 'GET',
header: {
'content-type': 'application/json'
},
complete: function (res) {
},
success: function (res) {
console.log("config list response:" + JSON.stringify(res));
that.setData({ configList: res.data.data});
}
});
},
goAd1: function(){
wx.navigateTo({
url: '/pages/webview/webview?url=' + this.data.configList.adClick1
})
},
總結(jié)
這個(gè)功能我在自己的小程序開發(fā)過程中設(shè)計(jì)的頁面配置實(shí)現(xiàn)思路,主要遇到了兩個(gè)小問題:1 如果保證key的唯一性 2 前后端批量數(shù)據(jù)的傳輸問題;希望能給遇到同樣問題的小伙伴一些啟示,如果有更好的方案,歡迎一起討論
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript使用二分查找算法在數(shù)組中查找數(shù)據(jù)的方法
這篇文章主要介紹了JavaScript使用二分查找算法在數(shù)組中查找數(shù)據(jù)的方法,較為詳細(xì)的分析了二分查找法的原理與javascript實(shí)現(xiàn)技巧,需要的朋友可以參考下2015-04-04
僅IE不支持setTimeout/setInterval函數(shù)的第三個(gè)以上參數(shù)
setTimeout/setInterval,這兩個(gè)函數(shù)相信前端開發(fā)同學(xué)都很熟悉。它們在非IE(6-9)瀏覽器中還可以如下使用2011-05-05
JS取request值以及自動(dòng)執(zhí)行使用示例
在網(wǎng)頁中JS函數(shù)自動(dòng)執(zhí)行常用三種方法,下面為大家詳細(xì)介紹下JS取request值以及自動(dòng)執(zhí)行使用,需要的朋友可以參考下2014-02-02
JavaScript實(shí)現(xiàn)鼠標(biāo)經(jīng)過表格行給出顏色標(biāo)識(shí)
這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)鼠標(biāo)經(jīng)過表格行給出顏色標(biāo)識(shí),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-04-04
教你用javascript實(shí)現(xiàn)隨機(jī)標(biāo)簽云效果_附代碼
下面小編就為大家?guī)硪黄棠阌胘avascript實(shí)現(xiàn)隨機(jī)標(biāo)簽云效果_附代碼。小編覺得很實(shí)用,現(xiàn)在分享給大家。給大家一個(gè)參考2016-03-03

