# uni-app-x-joke
**Repository Path**: Megasu/uni-app-x-joke
## Basic Information
- **Project Name**: uni-app-x-joke
- **Description**: 这是一个基于 uni-app x 开发的随机笑话应用,用户可以通过点击按钮获取随机笑话,界面简洁美观,支持多端原生打包运行。
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 2
- **Created**: 2025-05-16
- **Last Updated**: 2025-08-23
## Categories & Tags
**Categories**: mobile-app
**Tags**: None
## README
# uni-app x 跨平台入门与实战:从 0 到 1 开发 HarmonyOS 5 鸿蒙原生应用
## 课程介绍
### 你将收获
+ uni-app x 开发原生鸿蒙核心逻辑
+ 多端界面适配思维和代码兼容实战
+ 从 0 到 1 完成可上线的跨平台应用
+ 具备多端应用的开发能力(HarmonyOS Next/Android/iOS/微信小程序/Web)
### 适用人群
+ 鸿蒙应用开发工程师,想切入跨平台领域;
+ 想学习鸿蒙、小程序开发但缺乏实战案例的技术爱好者;
+ 已学过 uni-app,想要进阶下一代 uni-app x 技术栈的小伙伴;
+ 想要一套代码,同时覆盖多端的移动端开发工程师;
+ 需快速开发多端应用的企业开发者或创业团队。
### 课程简介

本课程以「随机笑话」为实战案例,全面解析基于 uni-app x 的跨平台开发流程。通过从环境搭建、功能开发到多端适配的全链路实践,学员将掌握 uni-app x 的核心语法、跨平台组件调用、屏幕适配技巧及多端(HarmonyOS Next/Android/iOS/微信小程序/Web)打包部署能力。课程结合华为折叠屏适配、云打包等真实开发场景,侧重实战落地与前沿技术覆盖,助力开发者快速上手跨平台应用开发并积累项目经验。
### 课程亮点
1. **实战驱动,即学即用:** 以完整开源项目为载体,涵盖从需求分析到上线部署的全流程,避免纯理论堆砌,侧重代码实操与问题解决(如折叠屏适配、多端样式兼容)。
2. **多端适配核心技术拆解:** 深度解析 uni-app x 跨平台原理,通过华为折叠屏适配、鸿蒙平台签名配置、兼容性处理等实操,掌握不同设备与平台的差异化适配策略。
3. **前沿技术与生态覆盖:** 结合鸿蒙(HarmonyOS Next)开发、Uni TypeScript 语法、SCSS 样式预处理等技术,适配当前跨平台开发趋势。
### 平台兼容性
+ HarmonyOS NEXT(鸿蒙) ✅
+ Android(安卓) ✅
+ iOS(苹果) ✅
+ 微信小程序 ✅
+ Web(浏览器) ✅
### 运行效果
+ iPhone 、Android、鸿蒙阔折叠(展开)、微信小程序

+ iPhone 、Android、鸿蒙阔折叠(折叠)、微信小程序

### 技术栈
+ UniApp X
+ Uni TypeScript
+ Vue 3
### 开发工具
+ 操作系统:MacOS 15.4.1
+ 编辑器:HBuilder X 4.65
+ 鸿蒙开发环境:DevEco Studio 5.0.4 Release
+ 安卓开发环境:Android Studio (version 2024.2)
+ 苹果开发环境:Xcode Version 16.1 (16B40)
+ 浏览器:Chrome 135.0.7049.85
## uni-app x
### uni-app x 简介
uni-app x,是下一代 uni-app,是一个跨平台应用开发引擎,现已支持编译成 HarmonyOS Next 原生应用(4.61+)
uni-app x 包括 uvue 渲染引擎、uts 语言、uni的组件和API、以及扩展机制。
### uvue 渲染引擎
用 vue3 框架快速编写页面,最终编译为不同平台的、高性能的纯原生界面。
1. 模板式写法
2. 数据双向绑定
3. 组件机制
在 HarmonyOS Next 平台,uni-app x 的工程被整体编译为 ArkTS + ArkUI 代码,本质上是换了 vue 写法的原生鸿蒙应用。
### uts 语言
uts 全称 uni typescript,是一门强类型的现代编程语言。支持跨平台,最终会被编译为不同平台的 native语言,如:
+ `web/小程序`平台,编译为JavaScript
+ `鸿蒙next`平台,编译为ArkTS
+ `Android`平台,编译为Kotlin
+ `iOS`平台,编译Swift
uts 和 ts 很相似,但为了跨端,uts 进行了一些约束和特定平台的增补。详见 [uts语言介绍](https://doc.dcloud.net.cn/uni-app-x/uts/index.html)
注意:在 ts 中,常通过 interface 或 type 定义对象类型,但在 uts 中,需使用 type 定义对象类型。因为 interface 在 kotlin 和 swift 中有差异。
### uni 组件
ni-app x 的组件主要分三类:
+ `内置基础组件`:如 view、text、image、scroll-view、input... 等,详见[组件清单](https://doc.dcloud.net.cn/uni-app-x/component/index.html)
+ `自定义组件`:开发者自己通过 vue 语法封装的组件。
+ `uts组件插件`:第三方组件,可通过[插件市场](https://ext.dcloud.net.cn/)下载。
## 准备工作
### 开发环境准备
+ 下载安装 HBuilderX 编辑器
+ 通过 HbuilderX 创建 uni-app x 项目
### 项目目录结构
```shell
├─pages 业务页面文件存放的目录
│ └─index
│ └─index.uvue index页面
├─static 存放应用引用的本地静态资源的目录(注意:静态资源只能存放于此)
├─unpackage 非工程代码,一般存放运行或发行的编译结果
├─index.html H5端页面
├─main.uts Vue初始化入口文件
├─App.uvue 应用配置,用来配置App全局样式以及监听
├─pages.json 配置页面路由、导航条、选项卡等页面类信息
├─manifest.json 配置应用名称、appid、logo、版本等打包信息
└─uni.scss uni-app内置的常用样式变量
```
### 编译运行
+ 安装 uni-app x 编译器插件
+ 编译并运行鸿蒙原生应用
## 项目实战
### 效果预览


### 素材下载
[项目图片素材.zip](https://www.yuque.com/attachments/yuque/0/2025/zip/2735051/1747623334802-848b63f4-0fd7-4578-ad63-0125237a305d.zip)
### 结构和样式
使用 uni-app x 组件库实现项目基本布局。
布局注意点:
+ view 组件默认是 flex 模式且方向是垂直 column
+ uni-app x 样式不会继承,文字需要用 text 包裹并单独设置字体样式
参考代码:
```vue
笑话加载中...
```
### 业务逻辑
+ 笑话接口:[https://hmajax.itheima.net/api/randjoke](https://hmajax.itheima.net/api/randjoke)
+ 网络请求API:[https://doc.dcloud.net.cn/uni-app-x/api/request.html](https://doc.dcloud.net.cn/uni-app-x/api/request.html)
+ request联网教程:[https://doc.dcloud.net.cn/uni-app-x/tutorial/request.html](https://doc.dcloud.net.cn/uni-app-x/tutorial/request.html)
参考代码:
```vue
{{ jokeText }}
```
### 生命周期
## 页面生命周期
页面生命周期:[https://doc.dcloud.net.cn/uni-app-x/page.html#lifecycle](https://doc.dcloud.net.cn/uni-app-x/page.html#lifecycle)
| 组合式 | 选项式 | 描述 |
| :--- | :--- | :--- |
| onLoad | onLoad | 生命周期回调 监听页面加载 页面加载时触发。一个页面只会调用一次,可以在 onLoad 的参数中获取打开当前页面路径中的参数。 |
| onPageShow | onShow | 生命周期回调 监听页面显示 页面显示/切入前台时触发。 |
| onReady | onReady | 生命周期回调 监听页面初次渲染完成 页面初次渲染完成时触发。一个页面只会调用一次,代表页面已经准备妥当,可以和视图层进行交互。 |
| onPageHide | onHide | 生命周期回调 监听页面隐藏 页面隐藏/切入后台时触发。 如 `navigateTo`或底部 `tab`切换到其他页面,应用切入后台等。 |
| onUnload | onUnload | 生命周期回调 监听页面卸载 页面卸载时触发。如 `redirectTo`或 `navigateBack`到其他页面时。 |
| onResize | onResize | 页面尺寸改变时触发 |
| onBackPress | onBackPress | 监听页面返回 |
参考代码:
```vue
```
### 阔折叠屏适配
+ 获取窗口信息:[https://doc.dcloud.net.cn/uni-app-x/api/get-window-info.html](https://doc.dcloud.net.cn/uni-app-x/api/get-window-info.html)
注意事项:
+ `vh` 单位只能用于 微信小程序端 和 Web 端,HarmonyOS、Android、iOS 端均不支持
+ `max-height`、`min-height` 等属性兼容多端只能使用 数字 或 px 单位
效果预览:

参考代码:
```vue
{{ jokeText }}
```
## 鸿蒙应用签名证书
+ 鸿蒙调试证书,用于真机调试
+ 鸿蒙发布证书,用于发布上架
+ AGC 平台创建项目和应用
+ HBuilderX 配置鸿蒙调试证书
### 鸿蒙签名证书
| DevEco Studio | Hbuilder | 备注 |
| --- | --- | --- |
| storeFile | 私钥库文件 | .p12 |
| storePassword | 私钥库密码 | ······· |
| keyAlias | 私钥别名 | **debugKey** / **releaseKey** |
| keyPassword | 私钥密码 | ······· |
| profile | 签名描述文件 | .p7b |
| certpath | 证书文件 | .cer |
### AGC 平台创建项目和应用
> 这里步骤较多,请耐心检查每个步骤,直到完成应用创建。
1. 登录[AppGallery Connect](https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/),点击"开发与服务"。
2. 在项目页面中点击"添加项目"。

3. 在"创建项目"页面中输入项目名称后,点击"完成"。

4. 选择"证书、APP ID和Profile",在左侧导航栏选择"APP ID",进入页面后,点击右上角"新建"。

### 鸿蒙调试证书
1. 打开 `manifest.json` 文件,选择"鸿蒙App配置"菜单后,点击调试证书的"配置"按钮。

2. 在配置调试证书中,检查"应用包名","运行设备"无误后,点击 "自动申请调试证书" 按钮。

### 鸿蒙发布证书
鸿蒙发布证书不能自动生成,步骤流程较多,请参考视频讲解,耐心检查每个步骤,直到完成配置。
+ 发布证书文件

+ 配置发布证书

+ 发布证书说明
签名描述文件 `.p7b` 因包含包名信息不能复用,其他证书文件均可在多个项目复用,请牢记私钥别名和密码。
| DevEco Studio | Hbuilder | 备注 |
| --- | --- | --- |
| storeFile | 私钥库文件 | .p12 |
| storePassword | 私钥库密码 | ······· |
| keyAlias | 私钥别名 | **debugKey** / **releaseKey** |
| keyPassword | 私钥密码 | ······· |
| profile | 签名描述文件 | .p7b |
| certpath | 证书文件 | .cer |
## 鸿蒙应用打包和发行
### 鸿蒙应用本地打包
在**配置鸿蒙发布证书**后,就可以进行**鸿蒙应用本地打包**,最终生成一个携带签名信息的 `.app` 安装包。

### 鸿蒙应用上架
在 AGC 平台上传携带签名信息的 `.app` 安装包,请参加视频讲解或者查看官方文档:[发布HarmonyOS应用(HarmonyOS NEXT)](https://developer.huawei.com/consumer/cn/doc/app/agc-help-harmonyos-releaseapp-0000001914554900)

### 安卓应用云打包(补充)
安卓应用可直接使用云证书完成打包,最终生成一个携带签名信息的 `.apk` 安装包。
用户可把 `apk` 上架到各个安卓应用商店。
