程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 原生微信小程序

  • uniapp多端开发

    • 快速入门

      • 环境搭建和介绍
        • 一、介绍
          • 1.1 Uniapp 是什么?
          • 1.2 多端开发使用uni调用
          • 什么时候使用 uni提供的API?
          • 常见的 uni API 使用案例
        • 二、环境搭建(hello world)
          • 2.1 下载HBuilderX
          • 2.2 下载微信开发者工具
          • 2.3 创建uniapp项目
          • 2.4 在浏览器运行
          • 2.5 在微信开发者工具运行
          • 2.6 在手机上运行
        • 三、项目基本目录结构
        • 四、开发规范概述
        • 五、uniapp的生命周期
          • 应用的生命周期
          • 页面的生命周期
      • 全局配置文件(pages.json)
      • 创建新页面和页面路由跳转
      • 配置底部导航栏(tabBar)
      • 文本和图标组件
      • uni-row 快速布局
      • 页面样式设计
      • 下拉刷新和上拉加载
      • 发送网络请求
      • 数据的缓存
      • 图片的上传
    • 内置组件

    • 扩展组件

  • 小程序开发
  • uniapp多端开发
  • 快速入门
scholar
2024-10-21
目录

环境搭建和介绍

# 环境搭建和介绍

# 一、介绍

对于刚接触小程序开发的人来说,可能会有一些疑惑,比如:

  • 什么是 Uniapp?它与原生微信小程序有什么异同之处?
  • 为什么要推荐使用 Uniapp 开发?

官方文档:https://uniapp.dcloud.net.cn/ (opens new window)

# 1.1 Uniapp 是什么?

Uniapp 是一个基于 Vue.js 的前端框架,支持一次性开发多端应用。使用 Uniapp 开发的应用不仅可以在微信小程序中运行,还可以发布到 H5、App、支付宝小程序、钉钉小程序等多个平台。

相比于原生微信小程序,Uniapp 有以下显著优点:

  1. 跨平台开发:你只需要编写一套代码,Uniapp 就能够生成适配不同平台的代码,减少开发工作量。
  2. 基于 Vue.js:Uniapp 使用 Vue.js 语法开发,开发体验和生态支持更完善,适合 Web 前端开发者。
  3. 丰富的插件支持:Uniapp 提供大量的内置 API 和插件,可以快速集成丰富的功能。
  4. 官方开发工具支持:Uniapp 推荐使用 HBuilderX 作为开发工具,支持代码高亮、智能提示等,极大提升开发效率。

详细对比 Uniapp 和原生小程序的优缺点,建议观看此视频:

开发微信小程序使用原生开发还是uniapp开发,详细介绍原生小程序与uni-app开发的优缺点_哔哩哔哩 (opens new window)

# 1.2 多端开发使用uni调用

在 Uniapp 中,所有跨平台相关的 API 都是以 uni 开头的,这是因为 Uniapp 的核心目标是实现一次开发,多端运行,即通过一个统一的代码框架,能够在多端(如微信小程序、支付宝小程序、百度小程序、H5、App 等)运行。uni 前缀正是 Uniapp 提供的统一接口,确保开发者使用相同的代码逻辑来兼容各个平台。

为什么使用 uni 开头?

  • uni 开头的 API 是 Uniapp 提供的一组跨平台 API,统一了不同平台的 API 接口。这样开发者只需要学习和使用一套 API,就可以让项目兼容多端,而不用分别学习和适配各个平台特定的 API。例如,微信小程序中的 wx.request、支付宝小程序中的 my.request,都可以在 Uniapp 中通过 uni.request 来统一使用。
  • uni 前缀的 API 封装了平台差异,开发者调用 uni 提供的 API 时,Uniapp 会在底层进行平台适配,确保在不同的平台上运行相同的逻辑。

# 什么时候使用 uni提供的API?

  1. 跨平台开发:如果你希望你的应用能够在多个平台上运行(例如微信小程序、支付宝小程序、H5、App等),那么使用 uni API 能确保代码的跨平台兼容性。

  2. 需要调用原生功能时:Uniapp 提供了大量原生功能的封装,例如网络请求、文件操作、媒体操作等。使用 uni API 可以轻松调用这些功能,而无需关心平台差异。

  3. 跨平台 API 的替代:许多原生小程序的 API 都是特定平台的,例如微信小程序的 wx. 系列 API,支付宝小程序的 my. 系列 API 等。如果你想在多个平台上运行这些功能,就需要用 uni API 来替代这些平台特定的 API。

# 常见的 uni API 使用案例

1. 网络请求(uni.request)

不同平台的原生请求 API 各不相同,例如微信小程序的 wx.request 和支付宝小程序的 my.request,而 Uniapp 使用 uni.request 来统一网络请求:

uni.request({
  url: 'https://example.com/api',
  method: 'GET',
  success: (res) => {
    console.log(res.data);
  }
});
1
2
3
4
5
6
7

2. 获取设备信息(uni.getSystemInfo)

在微信小程序中,获取设备信息使用 wx.getSystemInfo,而在 Uniapp 中可以使用 uni.getSystemInfo,它能够兼容多个平台:

uni.getSystemInfo({
  success: (res) => {
    console.log(res);
  }
});
1
2
3
4
5

3. 文件上传(uni.uploadFile)

Uniapp 提供了 uni.uploadFile 来实现跨平台的文件上传,无需分别调用各个平台的文件上传 API。

uni.uploadFile({
  url: 'https://example.com/upload',
  filePath: file,
  name: 'file',
  success: (res) => {
    console.log('Upload success:', res);
  }
});
1
2
3
4
5
6
7
8

# 二、环境搭建(hello world)

# 2.1 下载HBuilderX

HBuilderX-高效极客技巧 (opens new window)

当然你可以选择其他IDE,但是官网推荐HBuilderX,天然整合uniapp。

# 2.2 下载微信开发者工具

我们要最终打包成微信小程序就必须在微信开发者工具去预览,那么需要下载微信开发者工具了。

微信开发者工具下载地址与更新日志 | 微信开放文档 (opens new window)

# 2.3 创建uniapp项目

HBuilderX下载下来后,直接双击运行HBuilderX.exe文件即可,它是免安装的。

然后我们新建一个uniapp项目,按照下图操作即可。

然后它会默认生成项目的基本结构。

# 2.4 在浏览器运行

img

然后第一次运行时,控制台会提示自动去下载相关的插件,下载完成后需要你再次重新运行。

# 2.5 在微信开发者工具运行

然后启动测试一下,发现失败了。经过检查它报错的这两项,也没问题啊。

那么问题可能是出在微信开发者,我们需要进入微信开发者工具->设置->安全,然后把服务的端口号打开。

接着重新运行即可。

# 2.6 在手机上运行

安卓、ios同理,不过需要用数据线连接上。

操作类似,感兴趣的可以去试试,这里不再演示了。不过要注意的是ios端麻烦点,好像现在不支持直接运行了。

# 三、项目基本目录结构

当你创建一个 Uniapp 项目时,HBuilderX 会自动生成一个标准的项目目录结构。每个文件和文件夹都有特定的用途,以支持跨平台开发。下图展示了 Uniapp 项目的基本目录结构:

项目基本目录结构

目录结构说明:

  1. pages 文件夹:存放应用的各个页面。每个页面都由 .vue 文件组成,可以使用 Vue.js 的语法进行开发。

  2. components 文件夹:用于存放可复用的 Vue 组件。你可以将一些通用的组件放在这里,以便在多个页面中使用。

  3. static 文件夹:静态资源文件夹,用于存放图片、字体、样式等不会动态变化的资源。所有静态资源在打包时会原样保留。

  4. unpackage 文件夹:这是 HBuilderX 的输出文件夹,存放的是编译后的文件。当你运行项目或打包时,生成的文件会存放在这个文件夹中。

  5. App.vue 文件:项目的根组件。这里可以定义全局的页面布局、样式以及应用入口的基本结构。

  6. main.js 文件:项目的入口文件,负责初始化应用和绑定页面的根组件。

  7. manifest.json 文件:全局配置文件,用于配置应用的名称、图标、版本号、平台兼容性等。

  8. pages.json 文件:用于配置应用的页面路径、导航栏样式等,是页面路由的核心配置文件。

  9. uni.scss 文件:用于存放全局的样式文件,可以在这里定义全局的样式变量和通用样式。

# 四、开发规范概述

为了确保项目在多个平台上都能流畅运行,并且在编译速度和性能上达到最佳,Uniapp 规定了一些开发规范。了解这些规范有助于更好地进行开发,特别是在需要兼容多个平台时。

1. 页面文件遵循 Vue 单文件组件规范

每个页面文件都遵循 Vue 的单文件组件结构,包含 template(模板)、script(逻辑)和 style(样式)三部分。这种结构让页面代码模块化,便于维护。

2. 组件标签靠近小程序规范

Uniapp 的组件标签语法和微信小程序非常相似,但有一些特定的约定。Uniapp 提供了多种内置组件,这些组件在不同平台上会自动进行适配。有关具体组件标签的使用方式可以参考 Uniapp 组件规范 (opens new window)。

3. 接口能力(JS API)靠近微信小程序规范

Uniapp 的接口(即 JS API)与微信小程序的接口非常相似,最大的区别在于,Uniapp 的接口前缀是 uni,而不是微信小程序的 wx。例如,调用微信小程序中的 wx.request 在 Uniapp 中写作 uni.request。其他 API 调用方式基本保持一致,详情可查看 Uniapp 接口规范 (opens new window)。

4. 数据绑定及事件处理遵循 Vue.js 规范

Uniapp 在数据绑定和事件处理上与 Vue.js 完全一致,支持双向数据绑定、事件监听等 Vue 的常规功能。同时,Uniapp 还增加了 App 和页面的生命周期钩子,以便你可以控制应用在不同阶段的行为。

5. 建议使用 Flex 布局

为了确保应用在不同设备上的兼容性,建议在开发中使用 CSS 的 Flex 布局。Flex 布局能够适应多种屏幕尺寸,尤其适合响应式设计。Uniapp 在 H5、App、小程序等多平台上都支持 Flex 布局,这样可以保证应用在不同设备上的布局一致性。

# 五、uniapp的生命周期

# 应用的生命周期

App.vue/App.uvue | uni-app官网 (opens new window)

生命周期的概念

一个对象从创建、运行、销毁的整个过程。

生命周期函数

在生命周期中每个阶段会伴随着函数的触发,这些函数被称为生命周期函数。

uni-app支持如下应用生命周期函数

函数名 说明
onLauch 当uni-app初始化完成时触发(全局只触发一次)
onShow 当uni-app启动,或从后台进入前台显示
onHide 当uni-app从前台进入后台
onError 当uni-app报错时触发

# 页面的生命周期

页面简介 | uni-app官网 (opens new window)

uni-app 支持如下页面生命周期函数:

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

我们最小化页面,然后打开

我们从tabBar切换,也是一样的道理。

编辑此页 (opens new window)
上次更新: 2025/02/01, 02:18:15
Behaviors
全局配置文件(pages.json)

← Behaviors 全局配置文件(pages.json)→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式