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

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

2 管理后臺根據(jù)不同業(yè)務設(shè)定不同的key和value,更新數(shù)據(jù)庫
如key:ad1url value:a.png
如果需要更新頁面圖片,只需更新ad1url對應的value
3 小程序根據(jù)對應業(yè)務key獲取對應的配置項,更新頁面顯示
技術(shù)棧
后端接口服務:SpringBoot Mybatis MySql
管理后臺:vue
前端:小程序
代碼實現(xiàn)
后端接口
為了保證key的唯一性,key在數(shù)據(jù)庫設(shè)置為unique屬性,新增和更新功能通過以下sql語句實現(xiàn),主要通過replace into實現(xiàn)配置項的唯一
@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è)計
一開始想通過傳如list數(shù)據(jù)給后端實現(xiàn)配置項的批量插入功能,發(fā)現(xiàn)后端數(shù)據(jù)一直接受不到,故而退而求其次,通過json字符串實現(xiàn)vue(網(wǎng)絡庫使用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));
......
}
管理平臺
管理平臺用vue開發(fā),網(wǎng)絡框架采用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)用后端接口返回所有配置項,具體業(yè)務根據(jù)具體業(yè)務key獲取配置項
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é)
這個功能我在自己的小程序開發(fā)過程中設(shè)計的頁面配置實現(xiàn)思路,主要遇到了兩個小問題:1 如果保證key的唯一性 2 前后端批量數(shù)據(jù)的傳輸問題;希望能給遇到同樣問題的小伙伴一些啟示,如果有更好的方案,歡迎一起討論
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
JavaScript使用二分查找算法在數(shù)組中查找數(shù)據(jù)的方法
這篇文章主要介紹了JavaScript使用二分查找算法在數(shù)組中查找數(shù)據(jù)的方法,較為詳細的分析了二分查找法的原理與javascript實現(xiàn)技巧,需要的朋友可以參考下2015-04-04
僅IE不支持setTimeout/setInterval函數(shù)的第三個以上參數(shù)
setTimeout/setInterval,這兩個函數(shù)相信前端開發(fā)同學都很熟悉。它們在非IE(6-9)瀏覽器中還可以如下使用2011-05-05
JavaScript實現(xiàn)鼠標經(jīng)過表格行給出顏色標識
這篇文章主要為大家詳細介紹了JavaScript實現(xiàn)鼠標經(jīng)過表格行給出顏色標識,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-04-04
教你用javascript實現(xiàn)隨機標簽云效果_附代碼
下面小編就為大家?guī)硪黄棠阌胘avascript實現(xiàn)隨機標簽云效果_附代碼。小編覺得很實用,現(xiàn)在分享給大家。給大家一個參考2016-03-03

