Uniapp 多端开发经验整理

本文详细阐述了小程序开发中涉及的资质申请、服务器配置、页面结构、分包管理、生命周期管理、跨平台技术选型、SEO优化及权限设置等内容,为开发者提供了全面的实践指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

开发准备

小程序

后台配置

  • 小程序个别类目需要行业资质,需要一定时间来申请,根据项目自身情况尽早进行 服务类目 的设置以免影响上线时间。
  • 必须在后台进行 服务器域名配置,域名必须 为 https 。否则无法进行网络请求。注意 每月只有 5 次修改机会

在开发工具中可配置不验证 https,这样可以临时使用非 https 接口进行开发。非 https 真机预览时需要从右上角打开调试功能。

  • 如果有 webview 需求,必须在小程序管理后台配置域名白名单。

开发工具

  • 下载 微信开发者工具
  • 设置 → 安全 → 打开“服务端口”。打开后方可用 HbuilderX 运行并更新到微信开发者工具。

APP

证书文件

  • 准备苹果开发账号
  • ios 证书、描述文件 申请方法

证书和描述文件分为开发(Development)和发布(Distribution)两种,Distribution 用来打正式包,Development 用来打自定义基座包。

ios 测试手机需要在苹果开发后台添加手机登录的 Apple 账号,且仅限邮箱方式注册的账号,否则无法添加。

Uniapp

创建 Uni-app 项目

根据 文档 操作即可,新建时建议先不选择模板,因为模板后期也可以作为插件导入。这里推荐一个 UI 框架 uView,兼容 Nvue 的 Uniapp 生态框架。

路由

  1. 配置: 路由的开发方式与 Vue 不同,不再是 router,而是参照小程序原生开发规则在 pages.json 中进行 配置,注意 path 前面不加"/"。

  2. 跳转: 路由的 跳转方式,同样参照了小程序 有 navigator 标签 和 API 两种。

    需注意:

  • tabBar 页面 仅能通过 uni.switchTab 、</n avigator>方法进行跳转。
  • 如需求特殊可以自定义开发 tabBar,即 pages.json 中不要设置 tabBar,这样也就不需要使用 uni.switchTab 了。
  • url 前面需要加"/"
  • navigator 标签: 推荐使用 有助于 SEO(搜索引擎优化)。
  • API: 常用跳转方式 uni.navigateTo()、uni.redirectTo() 、uni.switchTab(),即可处理大部分路由情况。

**问题点:**小程序页面栈最多 10 层。也就是说使用 uni.navigateTo 最多只能跳转 9 层页面。

解决: 这里不推荐直接使用 uni.redirectTo 取代来处理,会影响用户体验,除非产品设计如此。建议在会出现同页面跳转的页面(例:产品详情 → 点击底部更多产品 → 产品详情 →…),封装一下页面跳转方法,使用 getCurrentPages() 方法获取当前页面栈的列表,根据列表长度去判断使用什么路由方法。路由方法的选择根据实际情况决定 官方文档。

//页面跳转
toPage(url){
   
 let pages=getCurrentPages()
 if(pages.length<9){
   
   uni.navigateTo({
   url})
 }else{
   
   uni.redirectTo({
   url})//根据实际情况选择路由方法
 }
}

分包加载

提前规划好分包,使代码文件更加规整,全局思路更加清晰。可以根据业务流程或者业务类型来设计分包。官方文档

  • 分包加载的使用场景:
  1. 主包大小超过 2m。
  2. 访问落地页启动较慢(因为需要下载整个主包)。
  • 分包优化:
  1. 除页面可以分包配置,静态文件、js 也可以配置分包。可以进一步优化落地页加载速度。
  2. 在 manifest.json 中对应平台下配置 “optimization”:{“subPackages”:true} 来开启分包优化。开启后分包目录下可以放置 static 内容。
    //manifest.json源码
    {
         
       "mp-weixin" : {
         //这里以微信为例,如有其他平台需要分别添加
           "optimization" : {
         
               "subPackages" : true
           }
       }
    }
    
  • 分包预载

通过分包进入落地页后,可能会有跳转其他分包页面的需求。开启分包预载,在落地页分包数据加载完后,提前加载后续分包页面,详见 官方文档

生命周期

  • Uniapp 的页面生命周期建议使用 onLoad、onShow、onReady、onHide 等,也可以使用 vue 生命周期 created、mounted 等,但是组件的生命周期仅支持vue 生命周期的写法。

easycom 组件模式

  • 说明: 只要组件安装在项目的 components 目录下或 uni_modules 目录下,并符合 components/组件名称/组件名称.vue 的目录结构,就可以不用引用、注册,直接在页面中使用。easycom 为默认开启状态,可关闭。可以根据需求配置其他路径规则。详见 官方文档
  • 代码举例:

非 easycom 模式

<template>
 <view>
   <goods-list></goods-list>
 </view>
</template>
<script>
import goodsList from '@/component/goods-list'; //引用组件
export default {
     
 components: {
     
   goodsList //注册组件
 }
};
</script>

使用 easycom 模式

<template>
 
<think>好的,我现在需要处理用户关于UniApp开发的查询。用户要求了解UniApp的使用指南和功能介绍,并参考了提供的四个引用内容。首先,我要确保回答结构清晰,符合用户可见层的指示,同时遵循系统级指令,比如正确使用LaTeX格式和生成相关问题。 首先,我需要整理UniApp的基本信息,包括它的定义、核心优势以及跨平台能力。根据引用[1],UniApp使用Vue.js语法,支持多平台开发。这里要强调一次开发多端部署,并提到DCloud的小程序引擎,如引用[4]所述。 接下来是使用指南部分。需要分步骤说明,从环境搭建到调试和发布。根据引用[2],官方文档是重要资源,所以需要推荐用户查阅,并提及HBuilderX工具。生命周期和事件处理可以参考引用[3],比如页面生命周期函数onLoad、onShow等。 功能介绍部分要涵盖跨平台兼容性、丰富的组件和API、插件生态以及性能优化。引用[3]提到生命周期和事件处理,可以举例说明。同时,引用[4]提到的原生渲染机制需要解释,说明其如何保持各平台的一致性。 最后生成相关问题,确保问题与UniApp开发相关,覆盖性能优化、原生功能调用、兼容性处理、学习资源等,参考已有的引用内容来设计。 需要检查LaTeX的使用是否正确,比如行内公式用$...$,独立公式用$$...$$,不过当前内容可能不涉及数学表达式,但需留意。另外,引用标识要正确对应,比如[^1]对应引用[1]的内容,避免错误。 确保语言口语化,避免使用Markdown格式,分点说明,每个部分清晰明了。最后验证所有引用是否准确,没有遗漏或错误链接。</think>以下为关于UniApp开发的指南与功能介绍,内容结合官方文档及技术实践: ### 一、UniApp开发核心指南 1. **环境搭建** - 安装HBuilderX(官方推荐IDE),支持Vue.js语法高亮与一键编译[^2] - 创建项目时选择UniApp模板,支持自定义初始配置(如Vue2/Vue3版本) 2. **跨平台开发流程** - 使用**条件编译**实现平台差异化代码,例如: ```javascript // #ifdef H5 console.log("仅H5平台执行"); // #endif ``` - 通过`uni-app`内置API(如`uni.request`)调用统一接口,减少平台适配成本[^4] 3. **调试与发布** - 实时预览:HBuilderX支持真机调试、模拟器运行及浏览器热更新 - 一键生成多端包:iOS/Android APP包、微信/支付宝小程序等 ### 二、核心功能特性 1. **跨平台兼容性** - 基于DCloud引擎实现原生渲染,性能接近原生应用 - 支持10+平台,包括APP、小程序、H5、快应用等 2. **组件与API体系** - 内置**uni-ui组件库**(如`<uni-list>`、`<uni-swipe-action>`) - 封装统一API(如网络请求、本地存储、相机调用),例如: ```javascript uni.chooseImage({ count: 1, success: (res) => { console.log(res.tempFilePaths) } }) ``` 3. **扩展能力** - 插件市场提供3000+插件(如支付SDK、地图组件) - 支持原生模块集成(通过Android Studio/Xcode扩展功能) ### 三、生命周期管理 - **应用生命周期**:`onLaunch`, `onShow`, `onHide` - **页面生命周期**:`onLoad`, `onReady`, `onUnload`[^3] - 组件生命周期与Vue组件一致(如`created`, `mounted`)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值