小程序页面动态配置实现方法


Posted in Javascript onFebruary 05, 2019

小程序可以根据管理后台配置动态更新展示内容,如实现下面新鲜事栏目图片的来源的可配置,点击跳转url的可配置。

小程序页面动态配置实现方法

实现方案

1后端创建一个map结构的数据表,表结构如下:

小程序页面动态配置实现方法

2 管理后台根据不同业务设定不同的key和value,更新数据库

如key:ad1url value:a.png

如果需要更新页面图片,只需更新ad1url对应的value

3 小程序根据对应业务key获取对应的配置项,更新页面显示

技术栈

后端接口服务:SpringBoot Mybatis MySql

管理后台:vue

前端:小程序

代码实现

后端接口

为了保证key的唯一性,key在数据库设置为unique属性,新增和更新功能通过以下sql语句实现,主要通过replace into实现配置项的唯一

@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设计

一开始想通过传如list数据给后端实现配置项的批量插入功能,发现后端数据一直接受不到,故而退而求其次,通过json字符串实现vue(网络库使用axios)调用后端接口

@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开发,网络框架采用axios,列表数据通过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)});
......

小程序

小程序调用后端接口返回所有配置项,具体业务根据具体业务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
 })
},

总结

这个功能我在自己的小程序开发过程中设计的页面配置实现思路,主要遇到了两个小问题:1 如果保证key的唯一性 2 前后端批量数据的传输问题;希望能给遇到同样问题的小伙伴一些启示,如果有更好的方案,欢迎一起讨论

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
复制js对象方法(详解)
Jul 08 Javascript
jquery mobile事件多次绑定示例代码
Sep 13 Javascript
使用javascript实现简单的选项卡切换
Jan 09 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
May 13 Javascript
省市区三级联动jquery实现代码
Apr 15 Javascript
自己封装的一个简单的倒计时功能实例
Nov 23 Javascript
JavaScript 总结几个提高性能知识点(推荐)
Feb 20 Javascript
AngularJS实现动态添加Option的方法
May 17 Javascript
小程序tab页无法传递参数的方法
Aug 03 Javascript
vue删除html内容的标签样式实例
Sep 13 Javascript
layui递归实现动态左侧菜单
Jul 26 Javascript
微信小程序获取位置展示地图并标注信息的实例代码
Sep 01 Javascript
PHP实现基于Redis的MessageQueue队列封装操作示例
Feb 02 #Javascript
AngularJS实现的自定义过滤器简单示例
Feb 02 #Javascript
vue实现的树形结构加多选框示例
Feb 02 #Javascript
javascript中floor使用方法总结
Feb 02 #Javascript
JS对象和字符串之间互换操作实例分析
Feb 02 #Javascript
Vue+Element UI+Lumen实现通用表格分页功能
Feb 02 #Javascript
JS基于ES6新特性async await进行异步处理操作示例
Feb 02 #Javascript
You might like
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
php多维数组去掉重复值示例分享
2014/03/02 PHP
PHP中生成UUID自定义函数分享
2015/06/10 PHP
PHP结合Mysql数据库实现留言板功能
2016/03/04 PHP
php使用文本统计访问量的方法
2016/05/12 PHP
推荐:极酷右键菜单
2006/11/29 Javascript
从新浪弄下来的全屏广告代码 与使用说明
2007/03/15 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
Jquery的hide及toggle方法让超链接慢慢消失
2013/09/06 Javascript
jquery实现的鼠标下拉滚动置顶效果
2014/07/24 Javascript
JavaScript控制listbox列表框的项目上下移动的方法
2015/03/18 Javascript
将JavaScript的jQuery库中表单转化为JSON对象的方法
2015/11/17 Javascript
原生javascript实现的一个简单动画效果
2016/03/30 Javascript
JavaScript:Date类型全面解析
2016/05/19 Javascript
jQuery EasyUI ProgressBar进度条组件
2017/02/28 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
vue2实现搜索结果中的搜索关键字高亮的代码
2018/08/29 Javascript
轻松学习JavaScript函数中的 Rest 参数
2019/05/30 Javascript
javascript实现日历效果
2019/06/17 Javascript
原生JS无缝滑动轮播图
2019/10/22 Javascript
Vue2.0 实现页面缓存和不缓存的方式
2019/11/12 Javascript
[01:03:47]VP vs NewBee Supermajor 胜者组 BO3 第一场 6.5
2018/06/06 DOTA
在Linux系统上部署Apache+Python+Django+MySQL环境
2015/12/24 Python
详解Pytorch 使用Pytorch拟合多项式(多项式回归)
2018/05/24 Python
Python MySQL 日期时间格式化作为参数的操作
2020/03/02 Python
详解如何在登录过期后跳出Ifram框架
2020/09/10 HTML / CSS
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
.net C#面试题
2012/08/28 面试题
大学生预备党员自我评价分享
2013/11/16 职场文书
毕业自荐信
2013/12/16 职场文书
团日活动总结报告
2014/06/25 职场文书
观看信仰心得体会
2014/09/04 职场文书
房屋买卖协议书范本
2014/09/27 职场文书
2015年发展党员工作总结报告
2015/03/31 职场文书
党员承诺书格式范文
2015/04/28 职场文书
教研活动主持词
2015/07/03 职场文书