微信小程序基本结构

2023-12-19

文件目录结构

在这里插入图片描述

在这里插入图片描述

app.js 是入口文件。

项目配置文件
在这里插入图片描述

一个页面四个文件
在这里插入图片描述

创建一个页面

在全局配置文件中加一行,即创建一个一个页面,和它的所有文件
在这里插入图片描述
可以 alt+up 或down来移动位置

新建一个小程序项目

填入自己appid

搭建目录结构

在这里插入图片描述

搭建项目页面

在这里插入图片描述
在这里插入图片描述

引⼊字体图标

在这里插入图片描述
选取需要的图标字体,加入购物车中。
在这里插入图片描述
选择以类方法引入。

在这里插入图片描述
下载此链接
在这里插入图片描述
粘贴到这里。
在这里插入图片描述
做全局引入
总结

  1. 打开阿⾥巴巴字体图标 ⽹站
  2. 选择的图标
  3. 添加⾄项⽬
  4. 下载到本地
  5. 将样式⽂件 由 css 修改为 wxss
  6. ⼩程序中引⼊

搭建项⽬tabbar结构

新建icon文件夹,把需要的图标放入

在这里插入图片描述

修改app.json
在这里插入图片描述

标签初始化

在这里插入图片描述
定义主题颜色和统一字体大小。
在这里插入图片描述

自定义组件

开发者可以将页面内的功能模块抽象成自定义组件,以便在不同的页面中重复使用;也可以将复杂的页面拆分成多个低耦合的模块,有助于代码维护。自定义组件在使用时与基础组件非常相似。

类似于页面,一个自定义组件由 json wxml wxss js 4个文件组成。要编写一个自定义组件,首先需要在 json 文件中进行自定义组件声明(将 component 字段设为 true 可将这一组文件设为自定义组件):

{
  "component": true
}

同时,还要在 wxml 文件中编写组件模板,在 wxss 文件中加入组件样式,它们的写法与页面的写法类似。

声明一个自定义组件

下面将在首页和其他页面中使用。
在这里插入图片描述

引用这个组件

那个页面使用,就在那个页面引用。
在首页的配置文件声明引用该组件。加入键值对,使用的是相对路径。
在这里插入图片描述
在这里插入图片描述

增加组件功能

增加导航标签,和链接。
在这里插入图片描述

修改样式使美观

在这里插入图片描述

请求网络

开发文档

https://developers.weixin.qq.com/miniprogram/dev/api/network/request/wx.request.html

在这里插入图片描述

示例代码

wx.request({
  url: 'example.php', //仅为示例,并非真实的接口地址
  data: {				//请求参数
    x: '',
    y: ''
  },
  header: {
    'content-type': 'application/json' // 默认值
  },
  success (res) {
    console.log(res.data)
  }
})

真实例子

参数接收

export const request=(params)=>{
  // 判断 url中是否带有 /my/ 请求的是私有的路径 带上header token
  let header={...params.header};
  if(params.url.includes("/my/")){
    // 拼接header 带上token
    header["Authorization"]=wx.getStorageSync("token");
  }

发起请求

  return new Promise((resolve,reject)=>{
    wx.request({
     ...params,    //传过来的参数,展开如下所示
     header:header,
     url:baseUrl+params.url,
     success:(result)=>{
       resolve(result.data.message);
     },
     fail:(err)=>{
       reject(err);
     },
     complete:()=>{
      ajaxTimes--;
      if(ajaxTimes===0){
        //  关闭正在等待的图标
        wx.hideLoading();
      }
     }
    });
  })

params参数展开

在这里插入图片描述

参数来源

  // 接口要的参数
  QueryParams:{
    query:"",
    cid:"",
    pagenum:1,
    pagesize:10
  },
  // 总页数
  totalPages:1,
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    this.QueryParams.cid=options.cid||"";
    this.QueryParams.query=options.query||"";
    this.getGoodsList();
  },

参数传入

在这里插入图片描述

首页

轮播图效果

获取轮播图接口数据

在这里插入图片描述

应用轮播图数据

在这里插入图片描述

分类导航图标

导航图标元素来自接口
新建一个分类导航图标数据模型,将数据存入其中。
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
接口请求增加分页?/limit=4&offset=4*(n-1) ,n 为页码。需要拼接下字符串。
js和wxml使用循环获得数据来展示。

列表页面

触底加载和下拉刷新

在这里插入图片描述

在这里插入图片描述

图片上传

postman
在这里插入图片描述
前端代码

// 提交按钮的点击
  handleFormSubmit() {
    // 1 获取文本域的内容 图片数组
    const { textVal, chooseImgs } = this.data;
    // 2 合法性的验证
    if (!textVal.trim()) {
      // 不合法
      wx.showToast({
        title: '输入不合法',
        icon: 'none',
        mask: true
      });
      return;
    }
    // 3 准备上传图片 到专门的图片服务器 
    // 上传文件的 api 不支持 多个文件同时上传  遍历数组 挨个上传 
    // 显示正在等待的图片
    wx.showLoading({
      title: "正在上传中",
      mask: true
    });
    // 判断有没有需要上传的图片数组
    if (chooseImgs.length != 0) {
      chooseImgs.forEach((v, i) => {
        wx.uploadFile({
          // 图片要上传到哪里
          url: 'http://192.168.2.21:8000/news/image_upload',
          // 被上传的文件的路径
          filePath: v,
          // 上传的文件的名称 后台来获取文件  file,对象的key,图片保存路径为值。
          name: "image",
          // 顺带的文本信息
          formData: {},
          success: (result) => {
            console.log(result);
            let url = JSON.parse(result.data).url;
            this.UpLoadImgs.push(url);
            // 所有的图片都上传完毕了才触发  
            if (i === chooseImgs.length - 1) {
              wx.hideLoading();
              console.log("把文本的内容和外网的图片数组 提交到后台中");
              //  提交都成功了
              // 重置页面
              this.setData({
                textVal: "",
                chooseImgs: []
              })
              // 返回上一个页面
              wx.navigateBack({
                delta: 1
              });
            }
          }
        });
      })
    }else{
      wx.hideLoading();
      console.log("只是提交了文本");
      wx.navigateBack({
        delta: 1
      });
    }
  }
})

drf后端代码
views.py


class ImageView(CreateAPIView):
    model = Image
    serializer_class = ImageSerializer
    parser_classes = (parsers.MultiPartParser,)
    permission_classes = (permissions.AllowAny,)

urls.py

    path('image_upload', ImageView.as_view(), name='image'),

name 参数可选。
models.py

class Image(models.Model):
    image = models.ImageField(upload_to='images/uploads/%Y/%m/%d/', blank=True)

image是传递的key,前端把值绑定这个key,后端获得。
serializers.py

class ImageSerializer(serializers.ModelSerializer):
    class Meta:
        model = Image
        fields = ("image",)

框架

整个程序的框架,及其部件用法。

小程序配置

小程序根目录下的 app.json 文件用来对微信小程序进行全局配置。文件内容为一个 JSON 对象,有以下属性

全局配置

全局页面在这里配置

页面配置

单独页面的配置在这里

sitemap 配置
场景值

框架接口

生命周期函数

WXML 语法参考

数据绑定

视图层事件

全局变量

定义全局变量

在app.js中
在这里插入图片描述

引用全局变量

在这里插入图片描述

循环和条件渲染

 <view class="goods_info_content" wx:for="{{goodsObj.goods_introduce}}" wx:for-item="item" wx:for-index="index" wx:key="id">
    <view wx:if="{{goodsObj.goods_introduce[index].type=='image_block'}}">
      <image mode="widthFix" src="{{webRootUrl+goodsObj.goods_introduce[index].value.image.mobile.src}}"></image>
    </view>
    <!-- 富文本 -->
    <view wx:if="{{goodsObj.goods_introduce[index].type=='paragraph_block'}}">
      <rich-text nodes="{{goodsObj.goods_introduce[index].value}}"></rich-text>
    </view>
  </view>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

微信小程序基本结构 的相关文章

随机推荐

  • Kafka基础—3、Kafka 消费者API

    一 Kafka消费者API 1 消息消费 当我们谈论 Kafka 消费者 API 中的消息消费时 我们指的是消费者如何从 Kafka 主题中拉取消息 并对这些消息进行处理的过程 消费者是 Kafka 中的消息接收端 它从指定的主题中获取消息
  • 分数规划+费用流:LibreOJ - 2003

    https vj imken moe contest 598718 problem H 一坨分数的东西 显然二分 然后移一下项 可得 c i a i k b
  • table边框

    table边框 大家好 我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3 0的小编 也是冬天不穿秋裤 天冷也要风度的程序猿 探索Web设计的一角 Table边框的细节与魅力 在网页设计中 表格 Table 是一个常见且功能强大的元素 而表
  • 基于Java EE架构的汽车车辆管理系统设计与实现-计算机毕业设计源码68424

    摘 要 科技进步的飞速发展引起人们日常生活的巨大变化 电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用 信息时代的到来已成为不可阻挡的时尚潮流 人类发展的历史正进入一个新时代 在现实运用中 应用软件的工作规则和开发步
  • 解决adb传文件中文名问题

    echo off setlocal enabledelayedexpansion REM 路径后面记得不要加斜杠 set 目标路径 sdcard 01tmp echo 目标路径 目标路径 echo set 有连接 False for F t
  • Python Faker库:生成大量测试数据的强大工具

    在软件开发过程中 测试数据扮演着重要的角色 它不仅可以帮助开发者验证代码的正确性 还可以帮助测试人员进行压力测试和性能测试 然而 手动生成大量的测试数据是一项繁琐且耗时的任务 幸运的是 Python的Faker库提供了一种简单而高效的方法来
  • Redis设计与实现之慢查询日志

    目录 一 慢查询日志 1 相关数据结构 2 慢查询日志的记录 3 慢查询日志的操作 4 如何设置慢查询的阈值 5 如何查看慢查询日志的内容 6 如何分析慢查询日志以找出性能瓶颈 7 如何优化慢查询以提高Redis的性能 8 慢查询日志对Re
  • 华为OD机试 C++【最大载货量】

    描述 在火车站旁的货运站 小明负责调度2K辆中转车 其中K辆用于干货 K辆用于湿货 每批到站的货物来自不同的供货商 需要按照顺序装入中转车 注意 一个供货商的货物只能装在一辆车上 不能分开 但是 一辆车可以放多个供货商的货物 问题是 要让所
  • C++图形输出(慧通教育题库、一本通启蒙题库)

    第10关 课程F 二重循环应用1 1002 星号矩阵 课程F 登录 1003 星号三角形 课程F 登录 1004 星号三角形2 课程F 登录 1005 星号正方形 课程F 登录 1006 星号金字塔 课程F 登录 1007 星号平行四边形
  • 基于springboot+vue的奶茶店在线管理系统

    博主介绍 全网个人号和企业号 粉丝40W 每年辅导几千名大学生较好的完成毕业设计 专注计算机软件领域的项目研发 不断的进行新技术的项目实战 热门专栏 推荐订阅 订阅收藏起来 防止下次找不到 千套JAVA项目实战持续更新中 百套小程序APP项
  • Linux: sysctl: network: ip_no_pmtu_disc,容易搞混的参数名称

    这个参数的迷惑性在于双重否定 字面意思是关闭PMTU发现的功能 如果设置为1 代表关闭 如果是0 代表不关闭pmtu发现的功能 所以说明里 有disable enable 就容易搞混 所以要甄别网上的某些博客的说明 不要被误导 ip no
  • 硬件基础-电容

    电容 本质 电容两端电压不能激变 所以可以起到稳定电压作用 充放电 电容量的大小 想使电容容量大 使用介电常数高的介质 增大极板间的面积 减小极板间的距离 品牌 国外 村田 muRata 松下 PANASONIC 三星 SAMSUNG 太诱
  • 测试进程监控:确保产品质量的关键

    引言 在软件开发过程中 测试是确保产品质量的重要环节 为了提高测试效率和准确性 测试进程监控成为了不可或缺的工具 本文将介绍测试进程监控的各个方面 包括产品风险度量 缺陷度量源 测试用例 或规程 度量 测试覆盖率度量 风险覆盖率以及度量的使
  • U-Net 算法详解

    目录 1 任务概述 2 编码器 解码器 3 跳跃连接 4 实现细节 5 损失函数 6 上采样方法 不填充还是填充 7 U Net 的运作方式 8 结论 1 任务概述 U Net 是为语义分割任务开发的 当神经网络接受图像作为输入时 我们可以
  • 【map】【单调栈 】LeetCode768: 最多能完成排序的块 II

    作者推荐 贪心算法 中位贪心 执行操作使频率分数最大 涉及知识点 单调栈 排序 map 区间合并 题目 给你一个整数数组 arr 将 arr 分割成若干 块 并将这些块分别进行排序 之后再连接起来 使得连接的结果和按升序排序后的原数组相同
  • 【具身智能评估9】Open X-Embodiment: Robotic Learning Datasets and RT-X Models

    论文标题 Open X Embodiment Robotic Learning Datasets and RT X Models 论文作者 论文原文 https arxiv org abs 2310 08864 论文出处 论文被引 12 1
  • SpringBoot中华非遗传承网站 毕业设计-附源码48408

    SpringbootSpringboot中华非遗传承网站 摘 要 非物质文化遗产是人类智慧活动的结晶 具有极高的文化价值 是一个民族历史文化的时间遗迹 我国拥有三千多年的历史文明 在非物质文化遗产的数量和质量上 在世界当中都是首屈一指的 根
  • springboot高校基础类课程公告答疑平台 计算机毕设源码32747

    目 录 摘要 1 绪论 1 1研究背景 1 2国内外研究慨况 1
  • 【分布式算法】Gossip协议详解

    一 为什么需要 Gossip 协议 为了实现 BASE 理论中的 最终一致性原则 两阶段提交协议和 Raft 算法需要满足 大多数服务节点正常运行 原则 如果希望系统在少数服务节点正常运行的情况下 仍能对外提供稳定服务 这时就需要实现最终一
  • 微信小程序基本结构

    这里写自定义目录标题 文件目录结构 创建一个页面 新建一个小程序项目 搭建目录结构 搭建项目页面 引 字体图标 搭建项 tabbar结构 标签初始化 自定义组件 声明一个自定义组件