• 微信小程序数据交互------WXS的使用


                                                      🎬 艳艳耶✌️:个人主页

                                                      🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》

                                                      ⛺️ 越努力 ,越幸运。
     

    1.数据库连接

    数据表结构:

     

    数据测式:

     

    2.后台配置

    pom.xml

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    4. <modelVersion>4.0.0</modelVersion>
    5. <parent>
    6. <groupId>org.springframework.boot</groupId>
    7. <artifactId>spring-boot-starter-parent</artifactId>
    8. <version>2.6.2</version>
    9. <relativePath/> <!-- lookup parent from repository -->
    10. </parent>
    11. <groupId>com.CloudJun</groupId>
    12. <artifactId>minoa</artifactId>
    13. <version>0.0.1-SNAPSHOT</version>
    14. <name>minoa</name>
    15. <description>Demo project for Spring Boot</description>
    16. <properties>
    17. <java.version>1.8</java.version>
    18. <fastjson.version>1.2.70</fastjson.version>
    19. <jackson.version>2.9.8</jackson.version>
    20. </properties>
    21. <dependencies>
    22. <dependency>
    23. <groupId>org.springframework.boot</groupId>
    24. <artifactId>spring-boot-starter-jdbc</artifactId>
    25. </dependency>
    26. <dependency>
    27. <groupId>org.springframework.boot</groupId>
    28. <artifactId>spring-boot-starter-web</artifactId>
    29. </dependency>
    30. <dependency>
    31. <groupId>org.mybatis.spring.boot</groupId>
    32. <artifactId>mybatis-spring-boot-starter</artifactId>
    33. <version>2.2.1</version>
    34. </dependency>
    35. <dependency>
    36. <groupId>mysql</groupId>
    37. <artifactId>mysql-connector-java</artifactId>
    38. <version>5.1.44</version>
    39. <scope>runtime</scope>
    40. </dependency>
    41. <dependency>
    42. <groupId>org.projectlombok</groupId>
    43. <artifactId>lombok</artifactId>
    44. <optional>true</optional>
    45. </dependency>
    46. <dependency>
    47. <groupId>com.alibaba</groupId>
    48. <artifactId>fastjson</artifactId>
    49. <version>${fastjson.version}</version>
    50. </dependency>
    51. </dependencies>
    52. <build>
    53. <plugins>
    54. <plugin>
    55. <groupId>org.springframework.boot</groupId>
    56. <artifactId>spring-boot-maven-plugin</artifactId>
    57. <configuration>
    58. <excludes>
    59. <exclude>
    60. <groupId>org.projectlombok</groupId>
    61. <artifactId>lombok</artifactId>
    62. </exclude>
    63. </excludes>
    64. </configuration>
    65. </plugin>
    66. <plugin>
    67. <groupId>org.mybatis.generator</groupId>
    68. <artifactId>mybatis-generator-maven-plugin</artifactId>
    69. <version>1.3.2</version>
    70. <dependencies>
    71. <!--使用Mybatis-generator插件不能使用太高版本的mysql驱动 -->
    72. <dependency>
    73. <groupId>mysql</groupId>
    74. <artifactId>mysql-connector-java</artifactId>
    75. <version>${mysql.version}</version>
    76. </dependency>
    77. </dependencies>
    78. <configuration>
    79. <overwrite>true</overwrite>
    80. </configuration>
    81. </plugin>
    82. </plugins>
    83. </build>
    84. </project>

    appliation.yml

    1. spring:
    2. datasource:
    3. #type连接池类型 DBCP,C3P0,Hikari,Druid,默认为Hikari
    4. type: com.zaxxer.hikari.HikariDataSource
    5. driver-class-name: com.mysql.jdbc.Driver
    6. url: jdbc:mysql://localhost:3306/mybatis_oapro?useUnicode=true&characterEncoding=UTF-8&useSSL=false
    7. username: root
    8. password: 123456
    9. mybatis:
    10. mapper-locations: classpath*:mapper/*.xml #指定mapper文件位置
    11. type-aliases-package: com.zking.minoa.model #指定自动生成别名所在包
    12. logging:
    13. level:
    14. root: info
    15. com.zking.minoa.mapper: debug

    3.前端代码

    index.wxml

    1. <!-- <view class="box">
    2. <view>1</view>
    3. <view>2</view>
    4. <view>3</view>
    5. <view>4</view>
    6. <view>5</view>
    7. <view>6</view>
    8. <view>7</view>
    9. <view>8</view>
    10. <view>9</view>
    11. <view>10</view>
    12. <view>11</view>
    13. <view>12</view>
    14. </view> -->
    15. <!--index.wxml-->
    16. <!--index.wxml-->
    17. <view>
    18. <swiper autoplay="true" indicator-dots="true" indicator-color="#fff" indicator-active-color="#00f">
    19. <block wx:for="{{images}}" wx:key="text">
    20. <swiper-item>
    21. <view>
    22. <image src="{{item.img}}" class="swiper-item" />
    23. </view>
    24. </swiper-item>
    25. </block>
    26. </swiper>
    27. </view>
    28. <wxs src="/utils/comm.wxs" module="tools" />
    29. <view class="mobi-title">
    30. <text class="mobi-icon"></text>
    31. <text>会议信息</text>
    32. </view>
    33. <block wx:for-items="{{lists}}" wx:for-item="item" wx:key="item.id">
    34. <view class="list" data-id="{{item.id}}">
    35. <view class="list-img">
    36. <image class="video-img" mode="scaleToFill" src="{{item.seatpic}}"></image>
    37. </view>
    38. <view class="list-detail">
    39. <view class="list-title"><text>{{item.title}}</text></view>
    40. <view class="list-tag">
    41. <view class="state">{{tools.getStateName(item.state)}}</view>
    42. <view class="join"><text class="list-num">{{tools.getNum
    43. (item.canyuze,item.liexize,item.zhuchiren)}} </text> 人报名</view>
    44. </view>
    45. <view class="list-info"><text>{{item.location}}</text> | <text>{{tools.formatDate(item.starttime)}}</text></view>
    46. </view>
    47. </view>
    48. </block>
    49. <view class="section bottom-line">
    50. <text>到底啦</text>
    51. </view>

    index.wxss

    1. /* pages/meeting/list/list.wxss */
    2. .list {
    3. display: flex;
    4. flex-direction: row;
    5. width: 100%;
    6. padding: 0 20rpx 0 0;
    7. border-top: 1px solid #eeeeee;
    8. background-color: #fff;
    9. margin-bottom: 5rpx;
    10. /* border-radius: 20rpx;
    11. box-shadow: 0px 0px 10px 6px rgba(0,0,0,0.1); */
    12. }
    13. .list-img {
    14. display: flex;
    15. margin: 10rpx 10rpx;
    16. width: 150rpx;
    17. height: 220rpx;
    18. justify-content: center;
    19. align-items: center;
    20. }
    21. .list-img .video-img {
    22. width: 120rpx;
    23. height: 120rpx;
    24. }
    25. .list-detail {
    26. margin: 10rpx 10rpx;
    27. display: flex;
    28. flex-direction: column;
    29. width: 600rpx;
    30. height: 220rpx;
    31. }
    32. .list-title text {
    33. font-size: 11pt;
    34. color: #333;
    35. font-weight: bold;
    36. }
    37. .list-detail .list-tag {
    38. display: flex;
    39. height: 70rpx;
    40. }
    41. .list-tag .state {
    42. font-size: 9pt;
    43. color: #81aaf7;
    44. width: 120rpx;
    45. border: 1px solid #93b9ff;
    46. border-radius: 2px;
    47. margin: 10rpx 0rpx;
    48. display: flex;
    49. justify-content: center;
    50. align-items: center;
    51. }
    52. .list-tag .join {
    53. font-size: 11pt;
    54. color: #bbb;
    55. margin-left: 20rpx;
    56. display: flex;
    57. justify-content: center;
    58. align-items: center;
    59. }
    60. .list-tag .list-num {
    61. font-size: 11pt;
    62. color: #ff6666;
    63. }
    64. .list-info {
    65. font-size: 9pt;
    66. color: #bbb;
    67. margin-top: 20rpx;
    68. }
    69. .bottom-line{
    70. display: flex;
    71. height: 60rpx;
    72. justify-content: center;
    73. align-items: center;
    74. background-color: #f3f3f3;
    75. }
    76. .bottom-line text{
    77. font-size: 9pt;
    78. color: #666;
    79. }

    效果展示:

    4.WXS的使用

    WXS(WeChat Mini Program Storage)是微信小程序提供的本地存储方案,用于在小程序中进行数据的存储和管理。相比远程数据库,WXS更适合于小规模、简单的数据存储需求。

    4.1.wxs 文件

    在微信开发者工具里面,右键可以直接创建 .wxs 文件,在其中直接编写 WXS 脚本。

    1. // /pages/comm.wxs
    2. var foo = "'hello world' from comm.wxs";
    3. var bar = function(d) {
    4. return d;
    5. }
    6. module.exports = {
    7. foo: foo,
    8. bar: bar
    9. };
    • exports: 通过该属性,可以对外共享本模块的私有变量与函数。

    在需要使用的页面进行引用即可

    1. <wxs src="/tools.wxs" module="tools" />
    2. <view> {{tools.msg}} </view>
    3. <view> {{tools.bar(tools.FOO)}} </view>

    4.2.解决数据显示数字问题

    1. function getStateName(state){
    2. // 状态:0取消会议1待审核2驳回3待开4进行中5开启投票6结束会议,默认值为1
    3. if(state == 0 ){
    4. return '取消会议';
    5. }else if(state == 1 ){
    6. return '待审核';
    7. }else if(state == 2 ){
    8. return '驳回';
    9. }else if(state == 3 ){
    10. return '待开';
    11. }else if(state == 4 ){
    12. return '进行中';
    13. }else if(state == 5 ){
    14. return '开启投票';
    15. }else if(state == 6 ){
    16. return '结束会议';
    17. }
    18. return '其它';
    19. }
    20. module.exports = {
    21. getStateName:getStateName,
    22. };

     4.3.解决统计人数问题

    1. function getNum(canyuze,liexize,zhuchiren){
    2. var person = canyuze + "," +liexize +","+ zhuchiren;
    3. var arr = person.split(",");
    4. var res =[];
    5. for(var i = 0; i < arr.length; i++){
    6. if(res.indexOf(arr[i] === -1)){
    7. res.push(arr[i]);
    8. }
    9. }
    10. return res.length;
    11. }
    12. module.exports = {
    13. getNum:getNum,
    14. };

    4.4.解决时间进制问题

    1. function formatDate(ts, option) {
    2. var date = getDate(ts)
    3. var year = date.getFullYear()
    4. var month = date.getMonth() + 1
    5. var day = date.getDate()
    6. var week = date.getDay()
    7. var hour = date.getHours()
    8. var minute = date.getMinutes()
    9. var second = date.getSeconds()
    10. //获取 年月日
    11. if (option == 'YY-MM-DD') return [year, month, day].map(formatNumber).join('-')
    12. //获取 年月
    13. if (option == 'YY-MM') return [year, month].map(formatNumber).join('-')
    14. //获取 年
    15. if (option == 'YY') return [year].map(formatNumber).toString()
    16. //获取 月
    17. if (option == 'MM') return [mont].map(formatNumber).toString()
    18. //获取 日
    19. if (option == 'DD') return [day].map(formatNumber).toString()
    20. //获取 年月日 周一 至 周日
    21. if (option == 'YY-MM-DD Week') return [year, month, day].map(formatNumber).join('-') + ' ' + getWeek(week)
    22. //获取 月日 周一 至 周日
    23. if (option == 'MM-DD Week') return [month, day].map(formatNumber).join('-') + ' ' + getWeek(week)
    24. //获取 周一 至 周日
    25. if (option == 'Week') return getWeek(week)
    26. //获取 时分秒
    27. if (option == 'hh-mm-ss') return [hour, minute, second].map(formatNumber).join(':')
    28. //获取 时分
    29. if (option == 'hh-mm') return [hour, minute].map(formatNumber).join(':')
    30. //获取 分秒
    31. if (option == 'mm-dd') return [minute, second].map(formatNumber).join(':')
    32. //获取 时
    33. if (option == 'hh') return [hour].map(formatNumber).toString()
    34. //获取 分
    35. if (option == 'mm') return [minute].map(formatNumber).toString()
    36. //获取 秒
    37. if (option == 'ss') return [second].map(formatNumber).toString()
    38. //默认 时分秒 年月日
    39. return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
    40. }
    41. function formatNumber(n) {
    42. n = n.toString()
    43. return n[1] ? n : '0' + n
    44. }
    45. function getWeek(n) {
    46. switch(n) {
    47. case 1:
    48. return '星期一'
    49. case 2:
    50. return '星期二'
    51. case 3:
    52. return '星期三'
    53. case 4:
    54. return '星期四'
    55. case 5:
    56. return '星期五'
    57. case 6:
    58. return '星期六'
    59. case 7:
    60. return '星期日'
    61. }
    62. }
    63. module.exports =
    64. formatDate:formatDate,
    65. };

    效果展示:

  • 相关阅读:
    前端基础:BFC
    基于结构应力方法的焊接结构疲劳评估及实例分析(上篇)
    spring-cloud-alibaba: nacos原理详解
    ES6:Map
    使用 Next.js、 Prisma 和 PostgreSQL 全栈开发视频网站
    2022年8月10日:使用 ASP.NET Core 为初学者构建 Web 应用程序--使用 ASP.NET Core 创建 Web UI
    Java项目:SSM企业OA管理系统
    深入理解Spring Boot Starter:概念、特点、场景、原理及自定义starter
    第一章:最新版零基础学习 PYTHON 教程(第十四节 - Python 条件和循环语句–Python 中的 with 语句)
    【开题报告】基于uni-app的恋爱打卡app的设计与实现
  • 原文地址:https://blog.csdn.net/2301_76988707/article/details/133949435