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


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 tools 系列 scrollable(2)
Sep 06 Javascript
Jquery实现简单的动画效果代码
Mar 18 Javascript
jQuery UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
Javascript 面向对象(一)(共有方法,私有方法,特权方法)
May 23 Javascript
将HTML格式的String转化为HTMLElement的实现方法
Aug 07 Javascript
深入理解jQuery事件绑定
Jun 02 Javascript
JS实现放大、缩小及拖拽图片的方法【可兼容IE、火狐】
Aug 23 Javascript
AngularJS入门教程之数据绑定用法示例
Nov 01 Javascript
详解vue.js的事件处理器v-on:click
Jun 27 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
Dec 24 jQuery
Parcel.js + Vue 2.x 极速零配置打包体验教程
Dec 24 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
Sep 27 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
php 的加密函数 md5,crypt,base64_encode 等使用介绍
2012/04/09 PHP
php导出excel格式数据问题
2014/03/11 PHP
destoon常用的安全设置概述
2014/06/21 PHP
ThinkPHP自定义Redis处理SESSION的实现方法
2016/05/16 PHP
php微信开发之带参数二维码的使用
2016/08/03 PHP
Laravel框架自定义公共函数的引入操作示例
2019/04/16 PHP
VBScript版代码高亮
2006/06/26 Javascript
求解开jscript.encode代码的asp函数
2007/02/28 Javascript
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
js使用eval解析json(js中使用json)
2014/01/17 Javascript
原生JavaScript+LESS实现瀑布流
2014/12/12 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
JavaScript+CSS无限极分类效果完整实现方法
2015/12/22 Javascript
JavaScript实现经典排序算法之冒泡排序
2016/12/28 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
jQuery回调方法使用示例
2017/06/26 jQuery
JavaScript 中的 this 简单规则
2017/09/19 Javascript
jQuery 实现批量提交表格多行数据的方法
2018/08/09 jQuery
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
简单了解JS打开url的方法
2020/02/21 Javascript
小结Python用fork来创建子进程注意事项
2014/07/03 Python
浅谈Python 对象内存占用
2016/07/15 Python
在PyCharm中批量查找及替换的方法
2019/01/20 Python
python 计算平均平方误差(MSE)的实例
2019/06/29 Python
pandas apply多线程实现代码
2020/08/17 Python
CSS去掉A标签(链接)虚线框的方法
2014/04/01 HTML / CSS
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
建设投标担保书
2014/05/13 职场文书
党员承诺书格式
2014/05/21 职场文书
共产党员批评与自我批评
2014/10/15 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
离婚起诉状范本
2015/05/19 职场文书
闪闪红星观后感
2015/06/08 职场文书
资产移交协议书
2016/03/24 职场文书
详解MySQL数据库千万级数据查询和存储
2021/05/18 MySQL
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android