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


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 相关文章推荐
jQuery 标题的自动翻转实现代码
Oct 14 Javascript
JavaScript 闭包在封装函数时的简单分析
Nov 28 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
Mar 17 Javascript
jQuery实现预加载图片的方法
Mar 17 Javascript
JS如何实现文本框随文本的长度而增长
Jul 30 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
Jan 19 Javascript
javascript实现dom元素可拖动
Mar 21 Javascript
ES6新特性二:Iterator(遍历器)和for-of循环详解
Apr 20 Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 Javascript
layui 数据表格 根据值(1=业务,2=机构)显示中文名称示例
Oct 26 Javascript
Vue Router 实现动态路由和常见问题及解决方法
Mar 06 Javascript
一文读懂vue动态属性数据绑定(v-bind指令)
Jul 20 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
生成sessionid和随机密码的例子
2006/10/09 PHP
php调用MySQL存储过程的方法集合(推荐)
2013/07/03 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
php计算title标题相似比的方法
2015/07/29 PHP
PHP实现获取第一个中文首字母并进行排序的方法
2017/05/09 PHP
基于laravel Request的所有方法详解
2019/09/29 PHP
JavaScript中this关键字使用方法详解
2007/03/08 Javascript
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
通过Javascript将数据导出到外部Excel文档的函数代码
2012/06/15 Javascript
重构Javascript代码示例(重构前后对比)
2013/01/23 Javascript
Jquery实现鼠标移上弹出提示框、移出消失思路及代码
2013/05/19 Javascript
js四舍五入数学函数round使用实例
2014/05/09 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
vue父组件异步获取数据传给子组件的方法
2018/07/26 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
[35:55]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第一场 12.11
2020/12/13 DOTA
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python 文件读写操作实例详解
2014/03/12 Python
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
Python自定义函数定义,参数,调用代码解析
2017/12/27 Python
Anaconda下安装mysql-python的包实例
2018/06/11 Python
python3.6利用pyinstall打包py为exe的操作实例
2018/10/31 Python
python+pyqt5实现图片批量缩放工具
2019/03/18 Python
Python进阶之@property动态属性的实现
2019/04/01 Python
Tensorflow tensor 数学运算和逻辑运算方式
2020/06/30 Python
Java爬虫技术框架之Heritrix框架详解
2020/07/22 Python
CSS3中的Transition过度与Animation动画属性使用要点
2016/05/20 HTML / CSS
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
夜班门卫岗位职责
2013/12/09 职场文书
关键在于落实心得体会
2014/09/03 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
2016年师德先进个人事迹材料
2016/02/29 职场文书