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


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常见表单应用技巧
Jan 09 Javascript
js 获取服务器控件值的代码
Mar 05 Javascript
javascript取消文本选定的实现代码
Nov 14 Javascript
js实现连个数字相加而不是拼接的方法
Feb 23 Javascript
angular中使用路由和$location切换视图
Jan 23 Javascript
js实现上传图片及时预览
May 07 Javascript
vue.js移动端tab组件的封装实践实例
Jun 30 Javascript
基于vue-cli vue-router搭建底部导航栏移动前端项目
Feb 28 Javascript
Angular2中监听数据更新的方法
Aug 31 Javascript
JSX在render函数中的应用详解
Sep 04 Javascript
微信小程序以7天为周期连续签到7天功能效果的示例代码
Aug 20 Javascript
vue+element table表格实现动态列筛选的示例代码
Jan 14 Vue.js
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函数
2011/05/31 PHP
深入讲解PHP Session及如何保持其不过期的方法
2015/08/18 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
ThinkPHP5+Layui实现图片上传加预览功能
2018/08/17 PHP
Laravel框架搜索分页功能示例
2019/02/01 PHP
thinkphp5.1框架实现格式化mysql时间戳为日期的方式小结
2019/10/10 PHP
动手学习无线电
2021/03/10 无线电
jQuery建立一个按字母顺序排列的友好页面索引(兼容IE6/7/8)
2013/02/26 Javascript
JavaScript 垃圾回收机制分析
2013/10/10 Javascript
js数组操作学习总结
2013/11/04 Javascript
JS去除字符串两端空格的简单实例
2013/12/27 Javascript
js实现精确到毫秒的倒计时效果
2016/08/05 Javascript
jQuery实现扑克正反面翻牌效果
2017/03/10 Javascript
js对象实例详解(JavaScript对象深度剖析,深度理解js对象)
2017/09/21 Javascript
Angular.js中window.onload(),$(document).ready()的写法浅析
2017/09/28 Javascript
浅谈angular2路由预加载策略
2017/10/04 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
layui异步加载table表中某一列数据的例子
2019/09/16 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
uniapp微信小程序实现一个页面多个倒计时
2020/11/01 Javascript
Python 绘图和可视化详细介绍
2017/02/11 Python
python入门教程之识别验证码
2017/03/04 Python
Python3.5编程实现修改IIS WEB.CONFIG的方法示例
2017/08/18 Python
python cx_Oracle的基础使用方法(连接和增删改查)
2017/11/19 Python
Python实现发送与接收邮件的方法详解
2018/03/28 Python
python smtplib模块自动收发邮件功能(一)
2018/05/22 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
python实现自动登录
2018/09/17 Python
10个python3常用排序算法详细说明与实例(快速排序,冒泡排序,桶排序,基数排序,堆排序,希尔排序,归并排序,计数排序)
2020/03/17 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
PyCharm2019.3永久激活破解详细图文教程,亲测可用(不定期更新)
2020/10/29 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
美体小铺印度官网:The Body Shop印度
2019/10/17 全球购物
低碳生活的宣传标语
2014/06/23 职场文书
小学英语教学经验交流材料
2015/11/02 职场文书