微信小程序开发简易教程

微信小程序文件结构详解

1. 项目配置文件

project.config.json

  • 项目的配置文件
  • 包含项目名称、appid、编译选项等配置
  • 示例:
{"description": "项目配置文件","packOptions": {"ignore": []},"setting": {"urlCheck": true,"es6": true,"postcss": true,"minified": true},"compileType": "miniprogram","libVersion": "2.19.4","appid": "你的小程序appid","projectname": "示例小程序","debugOptions": {"hidedInDevtools": []}
}

app.json

  • 小程序全局配置文件
  • 配置页面路径、窗口样式、底部导航栏等
  • 示例:
{"pages": ["pages/index/index","pages/logs/logs"],"window": {"backgroundTextStyle": "light","navigationBarBackgroundColor": "#fff","navigationBarTitleText": "示例小程序","navigationBarTextStyle": "black"},"tabBar": {"list": [{"pagePath": "pages/index/index","text": "首页","iconPath": "images/home.png","selectedIconPath": "images/home-active.png"}]},"style": "v2","sitemapLocation": "sitemap.json"
}

2. 全局入口文件

app.js

  • 小程序的入口文件
  • 包含小程序的生命周期函数
  • 定义全局数据和方法
  • 示例:
App({// 小程序初始化完成时触发,全局只触发一次onLaunch: function () {// 获取用户信息wx.getUserInfo({success: res => {this.globalData.userInfo = res.userInfo}})},// 小程序显示时触发onShow: function () {console.log('小程序显示')},// 小程序隐藏时触发onHide: function () {console.log('小程序隐藏')},// 全局数据globalData: {userInfo: null,version: '1.0.0'}
})

app.wxss

  • 全局样式文件
  • 定义所有页面都能使用的样式
  • 示例:
/* 全局样式 */
.container {height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: space-between;padding: 200rpx 0;box-sizing: border-box;
}/* 常用文本样式 */
.text-primary {color: #07c160;
}.text-center {text-align: center;
}

3. 页面文件夹 (pages)

每个页面通常包含4个文件:

页面 JS 文件 (例如 index.js)

  • 页面的逻辑文件
  • 处理页面的生命周期
  • 定义页面数据和方法
  • 示例:
Page({// 页面的初始数据data: {message: 'Hello World',list: []},// 生命周期函数--监听页面加载onLoad: function (options) {this.getData()},// 生命周期函数--监听页面显示onShow: function () {console.log('页面显示')},// 自定义方法getData: function() {wx.request({url: 'api/data',success: (res) => {this.setData({list: res.data})}})}
})

页面 WXML 文件 (例如 index.wxml)

  • 页面的结构文件(类似HTML)
  • 使用微信小程序的组件和语法
  • 示例:
<view class="container"><!-- 数据绑定 --><text>{{message}}</text><!-- 条件渲染 --><view wx:if="{{list.length > 0}}"><!-- 列表渲染 --><view wx:for="{{list}}" wx:key="id">{{item.name}}</view></view><!-- 事件绑定 --><button bindtap="getData">刷新数据</button>
</view>

页面 WXSS 文件 (例如 index.wxss)

  • 页面的样式文件(类似CSS)
  • 仅对当前页面生效
  • 示例:
/* 页面容器 */
.container {padding: 20rpx;
}/* 列表样式 */
.list-item {margin: 20rpx 0;padding: 20rpx;border-bottom: 1rpx solid #eee;
}/* 按钮样式 */
button {margin-top: 40rpx;background-color: #07c160;color: white;
}

页面配置文件 (例如 index.json)

  • 页面的配置文件
  • 可覆盖app.json中的配置
  • 示例:
{"navigationBarTitleText": "首页","usingComponents": {"custom-component": "/components/custom/custom"},"enablePullDownRefresh": true
}

4. 组件文件夹 (components)

组件文件结构

  • 与页面文件结构类似
  • 包含 js/wxml/wxss/json 四个文件
  • 示例组件 JS:
Component({// 组件的属性列表properties: {title: {type: String,value: ''}},// 组件的初始数据data: {count: 0},// 组件的方法列表methods: {handleClick() {this.setData({count: this.data.count + 1})// 触发自定义事件this.triggerEvent('customevent', {count: this.data.count})}}
})

5. 其他重要文件

utils/util.js

  • 工具函数文件
  • 存放公共方法
  • 示例:
const formatTime = date => {const year = date.getFullYear()const month = date.getMonth() + 1const day = date.getDate()return [year, month, day].map(formatNumber).join('/')
}const formatNumber = n => {n = n.toString()return n[1] ? n : `0${n}`
}module.exports = {formatTime,formatNumber
}

sitemap.json

  • 小程序搜索相关配置
  • 配置页面是否允许被微信索引
  • 示例:
{"desc": "关于本文件的更多信息,请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html","rules": [{"action": "allow","page": "*"}]
}

文件命名规范

  1. 文件夹和文件名使用小写字母
  2. 多个单词使用连字符(-) 或下划线(_)连接
  3. 页面文件夹与文件名保持一致
  4. 组件文件夹使用有意义的名称

开发注意事项

  1. 生命周期管理

    • 合理使用页面和应用的生命周期函数
    • 在适当的生命周期处理数据加载和清理
  2. 数据管理

    • 使用 setData 更新数据
    • 避免频繁调用 setData
    • 合理使用全局数据
  3. 性能优化

    • 及时销毁不需要的定时器和事件监听
    • 合理使用组件和页面的懒加载
    • 优化图片资源
  4. 代码规范

    • 遵循统一的代码风格
    • 适当添加注释
    • 做好错误处理

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/63611.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Unix/Linux 命令行重定向操作

2>/dev/null 是一个常见的 Unix/Linux 命令行重定向操作&#xff0c;用于将标准错误&#xff08;stderr&#xff09;输出重定向到 /dev/null&#xff0c;即丢弃错误信息而不显示。理解这个表达式需要了解几个概念&#xff1a;文件描述符、重定向和特殊文件 /dev/null。 ###…

图解LinkedList底层原理

图解LinkedList底层原理 本篇将讲解Java中的一个集合LinkedList的底层实现原理&#xff0c;会查看并分析底层源码&#xff0c;结合图解的方式&#xff0c;理解其添加数据的过程 数据结构 LinkedList 是基于双向链表实现的&#xff0c;节点结构如下&#xff1a; private stati…

react antd tabs router 基础管理后台模版

在构建 React 后台管理系统时&#xff0c;使用标签页的方式展示路由是一种高效且用户友好的设计模式。这种实现方式通常允许用户在多个页面之间快速切换&#xff0c;并保留页面的状态&#xff0c;类似于浏览器的多标签页功能。 需求分析 1.动态标签页&#xff1a;根据用户的导…

【OpenCV】图像阈值

简单阈值法 此方法是直截了当的。如果像素值大于阈值&#xff0c;则会被赋为一个值&#xff08;可能为白色&#xff09;&#xff0c;否则会赋为另一个值&#xff08;可能为黑色&#xff09;。使用的函数是 cv.threshold。第一个参数是源图像&#xff0c;它应该是灰度图像。第二…

初次使用uniapp编译到微信小程序编辑器页面空白,真机预览有内容

uniapp微信小程序页面结构 首页页面代码 微信小程序模拟器 模拟器页面为空白时查了下&#xff0c;有几个说是“Hbuilder编译的时候应该编译出来一个app.js文件 但是却编译出了App.js”&#xff0c;但是我的小程序结构没问题&#xff0c;并且真机预览没有问题 真机调试 根据defi…

【开源】一款基于SpringBoot 的全开源充电桩平台

一、下载项目文件 下载源码项目文件口令&#xff1a;动作璆璜量子屏多好/~d1b8356ox2~:/复制口令后&#xff0c;进入夸克网盘app即可保存&#xff08;如果复制到夸克app没有跳转资源&#xff0c;可以复制粘贴口令到夸克app的搜索框也可以打开&#xff08;不用点搜索按钮&#…

Ubuntu上使用system()函数运行不需要输入密码

使用system()运行一些终端命令的时候&#xff0c;需要sudo权限&#xff0c;也就是必须输入密码&#xff0c;那么在程序自启动的时候就无法成功启动。如果设置Ubuntu下所有操作都不需要密码&#xff0c;安全性太低&#xff0c;所以我们可以将需要用到的终端指令给予无需输入密码…

【人工智能】人工智能,深度学习与人工神经网络

人工智能 人工智能一、定义与核心要素二、主要方法与技术三、应用领域四、发展前景与挑战五、分类六、研究目标与价值 深度学习定义与核心思想网络结构工作原理关键技术与模型应用领域发展与挑战 人工神经网络一、定义与原理二、基本特性三、网络结构四、工作原理五、应用领域六…

RPC 详解

一、简介 RPC&#xff08;Remote Procedure Call&#xff0c;远程过程调用&#xff09;是一种计算机通信协议&#xff0c;允许程序在不同的计算机上执行过程或服务。RPC 使得开发者能够像调用本地函数一样调用远程服务&#xff0c;简化了网络编程的复杂性。使得开发者能够专注…

WHAT - React 富文本编辑器推荐

目录 1. Draft.js2. Slate.js3. Quill4. TinyMCE5. CKEditor6. react-quill7. TipTap8. Lexical React 生态中有许多优秀的开源富文本编辑器可供使用&#xff0c;以下是一些常用的选择&#xff1a; 1. Draft.js Draft.js 优点&#xff1a; 由 Facebook 开发和维护&#xff0…

php使用file_get_contents返回false

php使用file_get_contents返回false, 具体报错内容如下: failed to open stream: HTTP request failed! HTTP/1.1 400 Bad Request 解决方式1 : 使用curl 替换 file_get_contents 解决方式2 : 请检查请求网址中是否包含中文, 将中文部分进行urlencode function encodeChin…

国产GPU中,VLLM0.5.0发布Qwen2.5-14B-Instruct-GPTQ-Int8模型,请求返回结果乱码

概述 国产GPU: DCU Z100 推理框架&#xff1a; vllm0.5.0 docker容器化部署 运行如下代码&#xff1a; python -m vllm.entrypoints.openai.api_server --model /app/models/Qwen2.5-14B-Instruct-GPTQ-Int8 --served-model-name qwen-gptq --trust-remote-code --enforce…

WireShark速成

1.WireShark安装 官网&#xff1a; Wireshark Go Deep Kali Linux系统自带WireShark工具。 2.WireShark介绍 WireShark是一个网络包分析工具&#xff0c;该工具主要用于捕获网络数据包&#xff0c;并自动解析数据包&#xff0c;为用户显示数据包的详情信息&#xff0c;供…

算法-字符串-72.编辑距离

一、题目 二、思路解析 1.思路&#xff1a; 最少操作数——动态数组 res[i][j]:长度为i的字符串转化为长度为j字符串的最少操作 2.常用方法&#xff1a; 无 3.核心逻辑&#xff1a; 1.情况一&#xff1a;当word1为空&#xff0c;word2不为空时 for(int i0;i<size2;i){res[0…

uniapp-内部项目使用文档

uniapp-内部项目使用文档 目录 uniapp-内部项目使用文档阶段1自行实现内容&#xff1a;阶段1问题记录&#xff1a; 阶段2自行实现内容&#xff1a; 阶段3 APP项目介绍及规范阶段4 公共组件方法UseList 列表页面HooksListItem 列表项uni-load-more 列表加载更多组件CardTitle 列…

大模型在辅导场景的深度应用,猿辅导素养课推出启发性“AI作文通”

猿辅导集团旗下的飞象星球面向学校发布“飞象AI作文”&#xff0c;让教育大模型成为老师的AI批改助手、学生的写作助手。芥末堆注意到&#xff0c;猿辅导集团旗下的猿辅导素养课也推出了名为“AI作文通”的AI作文功能&#xff0c;已于7月正式大规模上线&#xff0c;在AI教育领域…

Node.js系统模块

【图书介绍】《Node.jsMongoDBVue.js全栈开发实战》-CSDN博客 《Node.jsMongoDBVue.js全栈开发实战&#xff08;Web前端技术丛书&#xff09;》(邹琼俊)【摘要 书评 试读】- 京东图书 (jd.com) 2.2.1 什么是系统模块 由于Node.js运行环境提供的API都是以模块化的方式进行开…

路由封装,连接导航router-link

路由的封装抽离&#xff1a; 所有路由配置堆在main.js中不合适&#xff0c;需将路由模块抽离出来&#xff0c;以便维护 将与路由相关信息提取到src文件夹下的router文件夹下的index.js文件中 在main.js中就只需要导入当前路由&#xff0c;并且注入到当前实例中&#xff0c;其他…

工业4.0下的IT网络与OT网络

https://zhuanlan.zhihu.com/p/498984722 随着“中国制造2025”的深入推进&#xff0c;制药行业以手工为主的传统生产方式正在被以“工业4.0 ”为核心的自动化生产方式逐步替代。 为了实现生产自动化&#xff0c;很多制药企业都引入了由PLC&#xff08;可编程逻辑控制器 &am…

Ubuntu压缩打包解压

ubuntu压缩打包 上图&#xff0c;压缩当前目录svn 为svn.tar.gaz&#xff0c;解压后再当前解压目录生成svn文件 在Ubuntu中&#xff0c;你可以使用tar命令来创建一个压缩包&#xff0c;或者使用zip命令来创建一个.zip压缩文件。以下是两种常见的压缩方法&#xff1a; 下图&am…