标题 | 详情 |
---|---|
作者简介 | 愚公搬代码 |
头衔 | 华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,CSDN商业化专家,阿里云专家博主,阿里云签约作者,腾讯云优秀博主,腾讯云内容共创官,掘金优秀博主,亚马逊技领云博主,51CTO博客专家等。 |
近期荣誉 | 2022年度博客之星TOP2,2023年度博客之星TOP2,2022年华为云十佳博主,2023年华为云十佳博主等。 |
博客内容 | .NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。 |
欢迎 | 👍点赞、✍评论、⭐收藏 |
在当今移动互联网的迅猛发展中,小程序以其轻便、高效的特点,逐渐成为了吸引用户的重要工具。无论是电商、社交还是生活服务,各类小程序如雨后春笋般涌现,改变了我们与应用的交互方式。然而,很多开发者在初次接触小程序时,往往对其项目结构感到迷茫。了解小程序的基本结构不仅是开发的第一步,更是构建高效、可维护应用的基础。
在本篇文章中,我们将深入探讨小程序项目的基本结构,帮助大家理清各个组成部分的功能与作用。无论你是刚入门的小白,还是有经验的开发者,相信都能从中获得启发和实用的知识。让我们一起揭开小程序的神秘面纱,开启你的开发之旅吧!
请重新观察一下之前我们创建的小程序项目的文件检索区,你会发现,测试工程虽然简单,但是默认生成的文件却不少。正所谓麻雀虽小,却五脏俱全。这个示例工程正是我们理解小程序工程结构的最好样例。
之前我们创建的 HelloWorld 项目的目录结构如图所示:
从图可以看到,工程根目录中有两个文件夹 pages
和 utils
以及一些独立文件。先来介绍各个独立文件的用途。
下面,再来看一下工程根目录下的两个文件夹:
utils
文件夹用来存放一些提供工具支持的 JS 文件,默认生成的 util.js
文件中的代码如下:
// 进行日期时间格式化的方法
const formatTime = date => {
// 获取当前年份
const year = date.getFullYear()
// 获取当前月份
const month = date.getMonth() + 1
// 获取当前日期
const day = date.getDate()
// 获取当前时间中的时
const hour = date.getHours()
// 获取当前时间中的分
const minute = date.getMinutes()
// 获取当前时间中的秒
const second = date.getSeconds()
return `${[year, month, day].map(formatNumber).join('/')}` +
` ${[hour, minute, second].map(formatNumber).join(':')}`
}
// 将数值数据转换成字符串
const formatNumber = n => {
n = n.toString()
return n[1] ? n : '0' + n
}
// 将模块提供的方法导出
module.exports = {
formatTime
}
util.js
中实际上提供了一个获取格式化后的当前日期时间的方法。
pages
文件夹用来存放所有页面。在小程序开发中,一个完整的页面由 JS、WXML、WXSS 和 JSON 这 4 类文件组成。因此在 pages
文件夹下,每一个子文件夹即表示一个小程序页面。
在预览 HelloWorld 项目时,会看到首页上展示当前登录用户的微信头像,这个页面其实就是工程中的 index
页面。如果点击用户头像,小程序会跳转到一个显示启动记录的页面,此页面就是项目中的 logs
页面,如图所示。
在小程序项目中,JSON文件通常用来设置配置选项。每个小程序工程下会有一个全局配置文件,即app.json,小程序中的每一个页面也会有一个配置文件。先来关注一下 app.json 这个文件,HelloWorld 工程中的此文件内容如下:
{
"pages": [
"pages/index/index",
"pages/logs/logs"
],
"window": {
"navigationBarTextStyle": "black",
"navigationBarTitleText": "Weixin",
"navigationBarBackgroundColor": "#ffffff"
},
"style": "v2",
"componentFramework": "glass-easel",
"sitemapLocation": "sitemap.json",
"lazyCodeLoading": "requiredComponents"
}
entryPagePath
pages
列表中的第一个页面作为默认页面。pages
window
配置项 | 类型 | 作用 | 示例 |
---|---|---|---|
| 字符串 | 设置导航栏的背景色,例如将导航栏设置为白色 |
|
| 字符串 | 设置导航栏标题颜色,支持设置为 |
|
| 字符串 | 设置导航栏的标题文字 |
|
| 字符串 | 设置导航栏样式,可设置为: |
|
| 字符串 | 设置窗口的背景色 | |
| 字符串 | 设置下拉页面刷新时,加载 |
|
| 字符串 | 设置顶部窗口的背景色,会影响下拉刷新模块 | |
| 字符串 | 设置底部窗口的背景色,会影响上拉加载模块 | |
| 布尔值 | 设置开启全局的下拉刷新功能 | |
| 数值 | 设置上拉页面时底部事件触发的距离页面底部的距离 | 数值类配置 |
| 字符串 | 设置页面方向,可设置为: |
|
| 字符串 | 设置小程序的重启策略,可设置为: |
|
| 字符串 | 进行页面初始化缓存配置,可设置为: |
|
| 字符串 | 当进入后台时,是否自动隐藏页面内容,以保护用户隐私,可设置为: |
|
tabBar
如果小程序有多个功能模块,可以采用多tabBar的模式来构建。tabBar选项用来对底部或的标签栏进行配置,顶部的标签栏效果如图所示。
配置项 | 类型 | 作用 |
---|---|---|
color | 字符串 | 设置标签栏上文字的默认颜色 |
selectedColor | 字符串 | 设置标签栏上文字选中时的颜色 |
backgroundColor | 字符串 | 设置标签栏的背景颜色 |
borderStyle | 字符串 | 设置标签栏的边框风格,可设置为: |
| ||
| ||
list | 数组,其内为对象 | 设置标签栏中的标签,最少2个,最多支持5个 |
position | 字符串 | 设置标签栏的位置,可设置为: |
| ||
| ||
custom | 布尔值 | 是否使用自定义的标签栏 |
对于其中的 list 配置项,其内对象可配置的选项如表所示。
配置项 | 类型 | 作用 |
---|---|---|
| 字符串 | 当前标签页对应的页面路径 |
| 字符串 | 设置标签标题 |
| 字符串 | 设置标签上的图标路径,当标签栏展示在页面上方时,不显示图标 |
| 字符串 | 设置选中时的图标路径,当标签栏展示在页面上方时,不显示图标 |
"tabBar": {
"list": [
{
"pagePath": "pages/index/index",
"text": "主页"
},
{
"pagePath": "pages/logs/logs",
"text": "日志",
"position": "top",
"color": "#000000",
"backgroundColor": "#0000ff",
"borderStyle": "white"
}
]
}
这个配置项用来对小程序中网络相关接口的超时时间进行配置,需要配置为一个对象,可配置的选项如表 2-4 所示。
配置项 | 类型 | 作用 | 默认值 |
---|---|---|---|
| 数值 | 设置请求的超时时间,单位毫秒 | 60000 |
| 数值 | 设置 socket 的超时时间,单位毫秒 | 60000 |
| 数值 | 设置上传文件的超时时间,单位毫秒 | 60000 |
| 数值 | 设置下载文件的超时时间,单位毫秒 | 60000 |
debug
functionalPages
subpackages
workers
requiredBackgroundModes
audio
: 声明拥有后台播放音乐的能力location
: 声明拥有后台定位的能力plugins
preloadRule
resizable
usingComponents
permission
sitemapLocation
sitemap.json
文件的位置,用于配置微信搜索功能。style
useExtendedLib
entranceDeclare
darkmode
true
后,小程序中的组件样式会跟随微信的主题展示不同效果。themeLocation
theme.json
文件的路径位置。darkmode
设置为 true
时必填。lazyCodeLoading
singlePage
supportedMaterials
serviceProviderTicket
embeddedAppIdList
wx.openEmbeddedMiniProgram
接口打开的小程序名单。以上介绍了小程序的全局配置选项。在实际开发中,可能会用到其中的一小部分配置项。随着小程序基础库的升级,可能会新增一些全局配置字段。最好的学习方式是在小程序测试工程中配置它们,并亲自体验这些配置项的功能。
在小程序中创建一个新的页面时,微信开发者工具会自动帮我们生成一组文件,其中包含后缀为.json 的配置文件,此文件用来对当前的页面进行配置。某些页面的配置项与window 的配置项是重复的,对于这种情况,页面配置项会覆盖掉window中的配置。表列举了页面配置文件中可用的配置选项。
配置项 | 类型 | 作用 |
---|---|---|
| 字符串 | 设置当前页面导航栏的背景颜色 |
| 字符串 | 设置导航栏标题颜色风格,可设置为: |
| ||
| ||
| 字符串 | 设置导航栏的标题文字 |
| 字符串 | 设置导航栏的风格,可设置为: |
| ||
| ||
| 字符串 | 设置窗口的背景色 |
| 字符串 | 设置下拉loading的风格,可设置为: |
| ||
| ||
| 字符串 | 设置下拉loading部分的背景色 |
| 字符串 | 设置上拉加载部分的背景色 |
| 布尔值 | 设置是否为当前页面开启下拉刷新功能 |
| 数值 | 设置页面上拉触底事件触发时距离页面底部的距离,默认值为50 |
| 字符串 | 对屏幕进行旋转设置,可设置为: |
| ||
| ||
| ||
| 布尔值 | 设置页面是否支持上下滚动 |
| 对象 | 配置当前页面使用的自定义组件 |
| 字符串 | 进行页面初始化缓存配置,可设置为: |
| ||
| ||
| 字符串 | 是否使用新版的组件样式 |
| 字符串 | 设置重启策略,可设置为: |
| ||
|
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。