uni-app + 小程序开发流程

196 阅读5分钟

一、 命令行创建 uni-app 项目 vue3 + ts 版

npx degit dcloudio/uni-preset-vue#vite-ts 项目名称

创建其他版本可查看:uni-app 官网

二、编译和运行 uni-app 项目

  1. 安装依赖 pnpm install
  2. 编译成微信小程序 pnpm dev:mp-weixin
  3. 导入微信开发者工具

温馨提示: 在 manifest.json 文件添加小程序 appid 方便真机预览

三、用 VS Code 开发 uni-app 项目

四、为什么选择 VS Code?

  • VS Code 对 TS 类型支持友好,前端开发者熟悉的编辑器 👍
  • HbuilderX 对 TS 类型支持暂不完善,期待官方完善 👀

五、用 VS Code 开发配置

安装 uni-app 插件

  • uni-create-view :快速创建 uni-app 页面
  • uni-helper uni-app :代码提示
  • uniapp 小程序扩展 :鼠标悬停查文档

TS 类型校验

  • 安装类型声明文件 pnpm i -D @types/wechat-miniprogram @uni-helper/uni-app-types
  • 配置 tsconfig.json

JSON 注释问题

  • 设置文件关联,把 manifest.json 和 pages.json 设置为 jsonc
// tsconfig.json
{
  "extends": "@vue/tsconfig/tsconfig.json",
  "compilerOptions": {
    "sourceMap": true,
    "baseUrl": ".",
    "paths": {
      "@/*": ["./src/*"]
    },
    "lib": ["esnext", "dom"],
    "types": [
      "@dcloudio/types",
+      "@types/wechat-miniprogram",
+      "@uni-helper/uni-app-types"
    ]
  },
  "include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
}

注意:原配置 experimentalRuntimeMode 现无需添加。

六、开发规范

  • 页面文件遵从Vue单文件规范
  • 组件标签靠近小程序规范
  • 数据绑定及事件处理同Vue.js规范,同时补充了App以及页面的生命周期
  • 为兼容多端运行,建议使用flex布局进行开发

七、全局配置文件

pages.json 文件用来对 uni-app 进行全局配置,决定页面文件的路径、窗口样式、原生的导航栏、底部的原生tabbar

5.1 globalStyle(全局样式)
属性类型默认值描述平台差异说明
navigationBarBackgroundColorHexColor#F8F8F8导航栏背景颜色(同状态栏背景色)APP与H5为#F8F8F8,小程序平台请参考相应小程序文档
navigationBarTextStyleStringblack导航栏标题颜色及状态栏前景颜色,仅支持 black/white支付宝小程序不支持,请使用 my.setNavigationBar
navigationBarTitleTextString导航栏标题文字内容
navigationStyleStringdefault导航栏样式,仅支持 default/custom微信小程序 7.0+、百度小程序、H5、App(2.0.3+)

导航栏:开启下拉刷新、下拉背景、下拉样式

下拉背景: backgroundColor

开启下拉刷新: enablePullDownRefresh: true|false

下拉样式: backgroundTextStyle

七、配置 tabBar

属性类型必填默认值描述平台差异说明
colorHexColortab 上的文字默认颜色)
selectedColorHexColortab 上的文字选中时的颜色
backgroundColorHexColortab 的背景色
borderStyleStringblacktabbar 上边框的颜色,可选值 black/white,也支持其他颜色值App 2.3.4+ 、H5 3.0.0+
listArraytab 的列表,详见 list 属性说明,最少2个、最多5个 tab
positionStringbottom可选值 bottom、toptop仅微信小程序

八、页面布局以及样式

  1. 尺寸单位:px、rpx

    rpx即响应式px,一种根据屏幕宽度自适应的动态单位,以750宽的品目为基准,750rpx恰好为屏幕宽度,屏幕变宽,rpx实际显示效果会等比放大

  2. 在 uni-app 中不能使用 * 选择器

  3. 使用 sass ;插件 uni-scss

九、生命周期

  1. 应用生命周期函数
函数名说明
onLauch当uni-app初始化完成时触发(全局只触发一次)
onShow当uni-app启动,或从后台进入前台显示
onHide当uni-app从前台进入后台
onError当uni-app报错时触发
  1. 页面生命周期
函数名说明
onInit监听页面初始化,其参数同 onLoad 参数,为上个页面传递的数据,参数类型为 Object(用于页面传参),触发时机早于 onLoad
onLoad监听页面加载,其参数为上个页面传递的数据,参数类型为 Object(用于页面传参
onShow监听页面显示。页面每次出现在屏幕上都触发,包括从下级页面点返回露出当前页面
onReady监听页面初次渲染完成。注意如果渲染速度快,会在页面进入动画完成前触发
onHide监听页面隐藏
onUnload监听页面卸载
onResize监听窗口尺寸变化(App、微信小程序、快手小程序)
onPullDownRefresh监听用户下拉动作,一般用于下拉刷新
onReachBottom页面滚动到底部的事件(不是scroll-view滚到底),常用于下拉下一页数据
onTabItemTap点击 tab 时触发,参数为Object,具体见下方注意事项(微信小程序、QQ小程序、支付宝小程序、百度小程序、H5、App、快手小程序、京东小程序)

十、下拉刷新

onPullDownRefresh

关闭: uni.stopPullDownRefresh()

十一、上拉加载

onReachBottom函数可以监听是否到底部

在 pages 里面设置 onReachBottomDistance: 0,默认触底距离

十二、数据缓存

  1. setStorage
  2. setStorageSync
  3. getStorage
  4. getStorageSync
  5. getStorageInfo
  6. getStorageInfoSync
  7. removeStorage
  8. removeStorageSync
  9. clearStorage
  10. clearStorageSync

十三、图片上传预览

chooseImage(object)

微信小程序从基础库 2.21.0 开始,wx.chooseImage 停止维护,请使用 uni.chooseMedia
参数名类型必填说明
countNumber最多可以选择的图片张数,默认9
sizeTypeArrayoriginal 原图,compressed 压缩图,默认二者都有
extensionArray根据文件拓展名过滤,每一项都不能是空字符串。默认不过滤
sourceTypeArrayalbum 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项
cropObject图像裁剪参数,设置后 sizeType 失效
successFunction成功则返回图片的本地文件路径列表 tempFilePaths
failFunction接口调用失败的回调函数
completeFunction接口调用结束的回调函数(调用成功、失败都会执行