小程序笔记(一)

247 阅读23分钟

1.小程序介绍

mp.weixin.qq.com/

小程序是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或者搜一下即可打开应用。也体现了“用完即走”的理念,用户不用关心是否安装太多应用的问题。应用将无处不在,随时可用,但又无需安装卸载。

小程序种类

  • 微信小程序
  • 支付宝小程序
  • 百度小程序
  • 字节跳动小程序
  • qq小程序
  • 京东小程序
  • .....

本课程主要学习微信小程序,只要学会微信小程序,其他小程序就会很快上手,微信小程序是小程序界的标准。

随着技术的发展,现在已经不满足只写某一个类型的小程序,这样开发成本太高,所以现在很多公司倾向于 使用一套代码同时部署到不同的小程序平台,简单一点来说就是,一次开发,多端运行,典型的代表有 uniapp,taro

image.png 要想学好uniapp,前提条件是得学习vue以及微信小程序

2.准备小程序的账号

打开网址:mp.weixin.qq.com/

账号分类---小程序 ---- 鼠标移动上去 --- 查看详情 --- 滑动页面至底部 ---- 前往注册

也可以直接点击 网址进行注册: mp.weixin.qq.com/wxopen/ware…

账号选择个人即可

账号类型一定要选择微信小程序

3.准备小程序开发者工具

下载地址: developers.weixin.qq.com/miniprogram…

image.png

4.查看小程序的后台界面

打开网址:mp.weixin.qq.com/

  • 账户名密码登录
  • 扫码登录:扫码完成,选择自己的小程序项目即可

image.png

4.1 首页

可视化说明小程序统计数据

4.2 管理

版本管理

  • 开发版本:主要通过微信开发者工具开发,然后通过开发者工具上传即可显示体验二维码,只有项目成员和体验成员才可扫码查看效果
  • 审核版本:开发版本点击 提交审核 按钮,填写审核的信息,然后交给微信审核即可
  • 线上版本:微信审核通过,即可点击项目上线,所有人可以搜索微信小程序的名字从而使用小程序

成员管理

​ 可以添加项目成员以及体验成员

  • 项目成员:运营者,开发者,数据分析者,一个小程序项目最多含有15个项目成员

  • 体验成员:只是拥有体验权限,一个小程序项目最多含有15个体验成员

    添加时注意要添加的是 成员的 微信号,记住不是微信绑定的手机号

用户反馈

付费管理

门店管理

课外作业

image-20231225100007915转存失败,建议直接上传图片文件

4.3 统计

统计一般跟开发者无太大关系,数据分析者需要多加关注,通过数据分析,解析新的需求以及需要的改进点,项目组提出新的方案,再由开发者实现

4.4 功能

  • 微信搜一搜
  • 客服
  • 订阅消息
  • 页面内容接入
  • 实验工具
  • 小程序联盟

4.5 开发

  • 开发管理

    • 运维中心
    • 监控告警
    • 开发设置

image.png

如果小程序项目要上线,就必须的配置 开发管理 - 开发设置 - 服务器域名

image.png

  • 接口设置 **

  • 安全中心

  • 开发工具

  • 云服务

4.6 设置

  • 基础设置

根据小程序的业务需求,选择合适的 服务类目,否则小程序提交审核是会不通过

5.使用微信开发者工具

image.png

image.png

6.熟悉微信开发者工具

  • 模拟器
  • 编辑器
  • 调试器
  • 可视化:不建议使用-拖拽布局页面
  • 云开发:不需要单独的后端的接口,包含 数据库、存储、云函数、云托管
  • 小程序模式:另一个插件模式
  • 普通编译:小程序每次热更新都会让小程序从第一个页面开始渲染,那么为了提高开发效率,可以选择添加编译模式,从而快速调试页面
  • 预览:拥有开发权限和体验权限的人,可以直接查看在手机上的实际的运行结果,它跟小程序的线上版本保持一致
  • 真机调试:拥有开发权限和体验权限的人,可以直接查看在手机上的实际的运行结果,它跟小程序开发者工具中的模拟器效果保持一致(因为真机调试可以不需要后台配置服务器域名等就可以查看效果)
  • 清缓存:清除模拟的缓存信息
  • 上传:点击上传即可将项目进入 后台系统中的 开发版本和体验版本

image.png

  • 版本管理:默认使用 git 作为代码版本管理工具,方便多人合作

  • 详情

    • 基本信息
    • 性能分析
    • 本地设置
      • 调试基础库:非常关键
      • 开发阶段:勾选不校验合法域名、web-view(业务域名)、TLS版本以及HTTPs证书
    • 项目配置
      • 高级配置
        • 代码包总大小(使用分包) 20M
        • 代码包总大小(不使用分包) 2M
        • 单个分包/主包大小 2M
        • Tabbar最小个数 2
        • Tabbar最大个数 5
        • Tabbar的icon大小限制 40KB
  • 消息

  • 页面路径

    • 页面路径:路由,当前页面展示的一个标识

    • 页面参数:列表进入详情,详情区分产品的标识

    • 场景值:进入查看小程序的途径

7.熟悉小程序代码

- miniprogram
    - pages  存放该小程序所对应的页面,每个页面一个文件夹
        - index  index页面
            index.ts  index页面的逻辑文件
            index.json index页面的配置文件
            index.wxml  index页面的结构文件
            index.scss  index页面的样式文件
        - logs   logs 页面
            logs.ts
            logs.json
            logs.wxml
            logs.scss
    - utils 自定义的工具包
        util.js 自定义的函数
    app.ts 全局的逻辑文件
    app.json 全局的配置文件
    app.wxss 全局的样式文件
    sitemap.json 被搜索的配置文件
- typings
  - types
  	- wx
  	  index.d.ts
  	  lib.wx.api.d.ts
  	  lib.wx.app.d.ts
  	  lib.wx.behavior.d.ts
  	  lib.wx.cloud.d.ts
  	  lib.wx.component.d.ts
  	  lib.ex.event.d.ts
  	  lib.wx.page.d.ts
  	index.d.ts
  index.d.ts
.eslintrc.js js代码的规则描述
 project.config.json 项目的配置文件
 project.private.config.json 项目私有的配置文件
 tsconfig.json

8.小程序代码的构成

developers.weixin.qq.com/miniprogram…

学习思路,从起步 - 小程序代码构成 开始,如果见到有链接,就跳转过去学习完整的知识

8.1 JSON配置

JSON 是一种数据格式,并不是编程语言,在小程序中,JSON扮演的静态配置的角色

8.1.1 小程序的配置 app.json

app.json 是当前小程序的全局配置,包括了小程序的所有页面路径、界面表现、网络超时时间、底部 tab 等

developers.weixin.qq.com/miniprogram…

developers.weixin.qq.com/miniprogram…

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

属性类型必填描述最低版本
entryPagePathstring小程序默认启动首页
pagesstring[]页面路径列表
windowObject全局的默认窗口表现
tabBarObject底部 tab 栏的表现
networkTimeoutObject网络超时时间
debugboolean是否开启 debug 模式,默认关闭
functionalPagesboolean是否启用插件功能页,默认关闭2.1.0
subpackagesObject[]分包结构配置1.7.3
workersstringWorker 代码放置的目录1.9.90
requiredBackgroundModesstring[]需要在后台使用的能力,如「音乐播放」
pluginsObject使用到的插件1.9.6
preloadRuleObject分包预下载规则2.3.0
resizablebooleanPC 小程序是否支持用户任意改变窗口大小(包括最大化窗口);iPad 小程序是否支持屏幕旋转。默认关闭2.3.0
usingComponentsObject全局自定义组件配置开发者工具 1.02.1810190
permissionObject小程序接口权限相关设置微信客户端 7.0.0
sitemapLocationstring指明 sitemap.json 的位置
stylestring指定使用升级后的 weui 样式2.8.0
useExtendedLibObject指定需要引用的扩展库2.2.1
entranceDeclareObject微信消息用小程序打开微信客户端 7.0.9
darkmodeboolean小程序支持 DarkMode2.11.0
themeLocationstring指明 theme.json 的位置,darkmode为 true 为必填开发者工具 1.03.2004271
lazyCodeLoadingstring配置自定义组件代码按需注入2.11.1
singlePageObject单页模式相关配置2.12.0
supportedMaterialsObject聊天素材小程序打开相关配置2.14.3
serviceProviderTicketstring定制化型服务商票据
embeddedAppIdListstring[]半屏小程序 appId2.20.1
halfPageObject视频号直播半屏场景设置2.18.0
debugOptionsObject调试相关配置2.22.1
enablePassiveEventObject或booleantouch 事件监听是否为 passive2.24.1
resolveAliasObject自定义模块映射规则
  • entryPagePath

设置小程序默认的启动页面,如果不作设置,那么将会取pages数组 的第一项为默认启动项,开发过程中,一般不建议这么使用,你可以使用开发者工具中 添加编译模式 快速解决问题

image.png

image.png

  • pages

用于指定小程序由哪些页面组成,每一项都对应一个页面的 路径(含文件名) 信息。文件名不需要写文件后缀,框架会自动去寻找对应位置的 .json, .js, .wxml, .wxss 四个文件进行处理。

如何给小程序快速添加页面,写好页面后直接保存即可

{
	"pages":[
    "pages/home/home",
    "pages/index/index",
    "pages/logs/logs",
    "pages/kind/kind",
    "pages/cart/cart",
    "pages/user/user"
  ],
  ...
}
  • window

用于设置小程序的状态栏、导航条、标题、窗口背景色。

属性类型默认值描述最低版本
navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如 #000000
navigationBarTextStylestringwhite导航栏标题颜色,仅支持 black / white
navigationBarTitleTextstring导航栏标题文字内容
navigationStylestringdefault导航栏样式,仅支持以下值: default 默认样式 custom 自定义导航栏,只保留右上角胶囊按钮。参见注 2。iOS/Android 微信客户端 6.6.0,Windows 微信客户端不支持
backgroundColorHexColor#ffffff窗口的背景色
backgroundTextStylestringdark下拉 loading 的样式,仅支持 dark / light
backgroundColorTopstring#ffffff顶部窗口的背景色,仅 iOS 支持微信客户端 6.5.16
backgroundColorBottomstring#ffffff底部窗口的背景色,仅 iOS 支持微信客户端 6.5.16
enablePullDownRefreshbooleanfalse是否开启全局的下拉刷新。 详见 Page.onPullDownRefresh
onReachBottomDistancenumber50页面上拉触底事件触发时距页面底部距离,单位为 px。 详见 Page.onReachBottom
pageOrientationstringportrait屏幕旋转设置,支持 auto / portrait / landscape 详见 响应显示区域变化2.4.0 (auto) / 2.5.0 (landscape)
restartStrategystringhomePage重新启动策略配置2.8.0
initialRenderingCachestring页面初始渲染缓存配置,支持 static / dynamic2.11.1
visualEffectInBackgroundstringnone切入系统后台时,隐藏页面内容,保护用户隐私。支持 hidden / none2.15.0
handleWebviewPreloadstringstatic控制预加载下个页面的时机。支持 static / manual / auto2.15.0
{
	...,
	"window": {
        "navigationBarBackgroundColor": "#f66",
        "navigationBarTextStyle": "white",
        "navigationBarTitleText": "嗨购",
        "navigationStyle": "default",
        "homeButton": true,
        "backgroundColor": "#123123",
        "backgroundTextStyle": "dark",
        "enablePullDownRefresh": true,
        "pageOrientation": "portrait"
      },
  ....
}
  • tabBar

如果小程序是一个多 tab 应用(客户端窗口的底部或顶部有 tab 栏可以切换页面),可以通过 tabBar 配置项指定 tab 栏的表现,以及 tab 切换时显示的对应页面。

属性类型必填默认值描述最低版本
colorHexColortab 上的文字默认颜色,仅支持十六进制颜色
selectedColorHexColortab 上的文字选中时的颜色,仅支持十六进制颜色
backgroundColorHexColortab 的背景色,仅支持十六进制颜色
borderStylestringblacktabbar 上边框的颜色, 仅支持 black / white
listArraytab 的列表,详见 list 属性说明,最少 2 个、最多 5 个 tab
positionstringbottomtabBar 的位置,仅支持 bottom / top
custombooleanfalse自定义 tabBar,见详情2.5.0

其中 list 接受一个数组,只能配置最少 2 个、最多 5 个 tab。tab 按数组的顺序排序,每个项都是一个对象,其属性值如下:

属性类型必填说明
pagePathstring页面路径,必须在 pages 中先定义
textstringtab 上按钮文字
iconPathstring图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片。 positiontop 时,不显示 icon。
selectedIconPathstring选中时的图片路径,icon 大小限制为 40kb,建议尺寸为 81px * 81px,不支持网络图片。 positiontop 时,不显示 icon。

如何获取项目需要的图片

www.iconfont.cn/

搜索图标 - 加入购物车 - 点击购物车 - 下载素材

输入颜色 #333333 和 #ff6666。选择大小为81px,下载png图片即可

{
	...,
	"tabBar": {
        "color": "#333",
        "selectedColor": "#f66",
        "backgroundColor": "#efefef",
        "borderStyle": "black",
        "list": [
          {
            "pagePath": "pages/home/home",
            "text": "首页",
            "iconPath": "resources/tabBar/home.png",
            "selectedIconPath": "resources/tabBar/home_active.png"
          },
          {
            "pagePath": "pages/kind/kind",
            "text": "分类",
            "iconPath": "resources/tabBar/kind.png",
            "selectedIconPath": "resources/tabBar/kind_active.png"
          },
          {
            "pagePath": "pages/cart/cart",
            "text": "购物车",
            "iconPath": "resources/tabBar/cart.png",
            "selectedIconPath": "resources/tabBar/cart_active.png"
          },
          {
            "pagePath": "pages/user/user",
            "text": "我的",
            "iconPath": "resources/tabBar/user.png",
            "selectedIconPath": "resources/tabBar/user_active.png"
          }
        ]
      },
  ...
}
  • networkTimeout

各类网络请求的超时时间,单位均为毫秒。

{
	...,
	"networkTimeout": {
        "request": 6000,
        "connectSocket": 4000,
        "uploadFile": 600000,
        "downloadFile": 6000000
      },
  ....
}
  • debug

可以在开发者工具中开启 debug 模式,在开发者工具的控制台面板,调试信息以 info 的形式给出,其信息有 Page 的注册,页面路由,数据更新,事件触发等。可以帮助开发者快速定位一些常见的问题。

{
	...,
	"debug": false,
	....
}

底部tab选项卡对应的页面,会自动添加类似vue中的 keep-alive的功能,原来的activated 和 deactivated 分别对应小程序中的。onShow 和 onHide

  • subpackages

启用分包加载时,声明项目分包结构。

分包加载:

  • 整个小程序所有分包大小不超过 20M
  • 单个分包/主包大小不能超过 2M

使用分包

独立分包

"subPackages": [
    {
      "root": "pckSearch",
      "name": "search",
      "pages": [
        "pages/search/search",
        "pages/result/result"
      ],
      "independent": true 
    },
    {
      "root": "pckUser",
      "name": "user",
      "pages": [
        "pages/login/login",
        "pages/register/register"
      ]
    }
  ],
  "debug": true,

开启debug模式,添加编译模式,调试分包的页面,观察 独立分包和 非独立分包的效果,通过控制台的console查看

分包预下载

开发者可以通过配置,在进入小程序某个页面时,由框架自动预下载可能需要的分包,提升进入后续分包页面时的启动速度。

做一个电商类型的小程序,大部分的用户一定回去搜索,所以可以把搜索相关业务写到分包,当用户打开主包时,预下载 搜索的分包

{
	...,
	"subPackages": [
        {
          "root": "pckSearch",
          "name": "pckSearch",
          "pages": [
            "pages/search/search",
            "pages/result/result"
          ],
          "independent": true 
        },
        {
          "root": "pckUser",
          "name": "pckUser",
          "pages": [
            "pages/login/login",
            "pages/register/register"
          ]
        }
      ],
     "preloadRule": {
       "pages/home/home": {
         "network": "all",
         "packages": [
          "pckSearch"
         ]
       }
     },
  ...
}

整体的全局配置文件如下:

{
  "pages": [
    "pages/home/home",
    "pages/kind/kind",
    "pages/cart/cart",
    "pages/user/user",
    "pages/detail/detail",
    "pages/index/index",
    "pages/logs/logs"
  ],
  "window": {
    "navigationBarBackgroundColor": "#f66",
    "navigationBarTextStyle": "white",
    "navigationBarTitleText": "嗨购",
    "navigationStyle": "default",
    "backgroundColor": "#efefef",
    "backgroundTextStyle": "dark",
    "restartStrategy": "homePageAndLatestPage",
    "visualEffectInBackground": "hidden"
  },
  "tabBar": {
    "color": "#333",
    "selectedColor": "#f66",
    "backgroundColor": "#efefef",
    "borderStyle": "black",
    "list": [
      {
        "pagePath": "pages/home/home",
        "text": "首页",
        "iconPath": "tabBar/home.png",
        "selectedIconPath": "tabBar/home_active.png"
      },
      {
        "pagePath": "pages/kind/kind",
        "text": "分类",
        "iconPath": "tabBar/kind.png",
        "selectedIconPath": "tabBar/kind_active.png"
      },
      {
        "pagePath": "pages/cart/cart",
        "text": "购物车",
        "iconPath": "tabBar/cart.png",
        "selectedIconPath": "tabBar/cart_active.png"
      },
      {
        "pagePath": "pages/user/user",
        "text": "我的",
        "iconPath": "tabBar/user.png",
        "selectedIconPath": "tabBar/user_active.png"
      }
    ]
  },
  "networkTimeout": {
    "request": 6000,
    "connectSocket": 6000,
    "uploadFile": 60000,
    "downloadFile": 60000
  },
  "subpackages": [
    {
      "root": "packageSearch",
      "name": "packageSearch",
      "independent": true,
      "pages": [
        "pages/search/search",
        "pages/result/result"
      ]
    },
    {
      "root": "packageUser",
      "name": "packageUser",
      "pages": [
        "pages/register/register",
        "pages/login/login"
      ]
    }
  ],
  "preloadRule": {
    "pages/home/home": {
      "network": "all",
      "packages": ["packageSearch"]
    }
  },
  "debug": false,
  "style": "v2",
  "sitemapLocation": "sitemap.json"
}

8.1.2 工具配置 project.config.json

developers.weixin.qq.com/miniprogram…

8.1.3 页面配置 page.json

developers.weixin.qq.com/miniprogram…

属性类型默认值描述最低版本
navigationBarBackgroundColorHexColor#000000导航栏背景颜色,如 #000000
navigationBarTextStylestringwhite导航栏标题颜色,仅支持 black / white
navigationBarTitleTextstring导航栏标题文字内容
navigationStylestringdefault导航栏样式,仅支持以下值: default 默认样式 custom 自定义导航栏,只保留右上角胶囊按钮。iOS/Android 微信客户端 7.0.0,Windows 微信客户端不支持
backgroundColorHexColor#ffffff窗口的背景色
backgroundTextStylestringdark下拉 loading 的样式,仅支持 dark / light
backgroundColorTopstring#ffffff顶部窗口的背景色,仅 iOS 支持微信客户端 6.5.16
backgroundColorBottomstring#ffffff底部窗口的背景色,仅 iOS 支持微信客户端 6.5.16
enablePullDownRefreshbooleanfalse是否开启当前页面下拉刷新。 详见 Page.onPullDownRefresh
onReachBottomDistancenumber50页面上拉触底事件触发时距页面底部距离,单位为px。 详见 Page.onReachBottom
pageOrientationstringportrait屏幕旋转设置,支持 auto / portrait / landscape 详见 响应显示区域变化2.4.0 (auto) / 2.5.0 (landscape)
disableScrollbooleanfalse设置为 true 则页面整体不能上下滚动。 只在页面配置中有效,无法在 app.json 中设置
usingComponentsObject页面自定义组件配置1.6.3
initialRenderingCachestring页面初始渲染缓存配置,支持 static / dynamic2.11.1
stylestringdefault启用新版的组件样式2.10.2
singlePageObject单页模式相关配置2.12.0
restartStrategystringhomePage重新启动策略配置2.8.0
handleWebviewPreloadstringstatic控制预加载下个页面的时机。支持 static / manual / auto2.15.0
visualEffectInBackgroundstring切入系统后台时,隐藏页面内容,保护用户隐私。支持 hidden / none,若对页面单独设置则会覆盖全局的配置,详见 全局配置2.15.0
enablePassiveEventObject或boolean事件监听是否为 passive,若对页面单独设置则会覆盖全局的配置,详见 全局配置2.24.1

// pages/home/home.json

{
  "navigationBarTitleText": "嗨购-首页",
  "usingComponents": {}
}