蓝戒博客

  • 首页
  • 研发说
  • 架构论
  • 效能录
  • AI谈
  • 随笔集
智构苍穹
融合 AI、架构与工程实践,沉淀方法论,构建可持续的技术价值。
  1. 首页
  2. 研发说
  3. 正文

UniApp 从入门到实战:一套代码多端运行的最佳实践

2025年10月24日 500点热度 0人点赞 0条评论

一、前言

做移动端和小程序开发时常有一个痛点:

Android、iOS、微信小程序、H5 都要分别开发一遍?

UniApp 给出的答案是:不用。
它是基于 Vue.js 的跨平台框架,一套代码就能编译到微信小程序、支付宝小程序、H5、App 等多端。
生态完善、插件丰富、官方更新活跃,适合前端工程师一站式开发。


二、环境准备与项目创建

1. 安装 HBuilderX(推荐)

下载:https://www.dcloud.io/hbuilderx.html

创建项目 → 选择 uni-app 默认模板(Hello uni-app) → 命名为 my-uni-demo。

目录结构如下:

my-uni-demo/
├── pages/
│   ├── index/
│   │   └── index.vue
├── static/
├── uni.scss
├── manifest.json
├── pages.json
└── main.js

2. 启动项目

点击 运行 → 运行到浏览器(H5) 或 运行到小程序模拟器(微信),看到默认页面即成功。


三、核心知识点

页面注册

JSON
{
  "pages": [
    {
      "path": "pages/index/index",
      "style": { "navigationBarTitleText": "首页" }
    }
  ]
}

路由跳转

JavaScript
uni.navigateTo({ url: '/pages/about/about' })
uni.navigateBack()

生命周期

JavaScript
export default {
  onLoad() {},
  onShow() {},
  onPullDownRefresh() {}
}

网络请求封装

JavaScript
export const request = (options) => {
  return new Promise((resolve, reject) => {
    uni.request({
      ...options,
      header: { Authorization: uni.getStorageSync('token') || '' },
      success: (res) => res.statusCode === 200 ? resolve(res.data) : reject(res),
      fail: reject
    })
  })
}

四、实战:开发一个待办清单(ToDo List)

pages/index/index.vue:

Vue
<template>
  <view class="container">
    <view class="header">我的待办事项</view>
    <view class="add">
      <input v-model="task" placeholder="输入任务..." />
      <button @click="addTask">添加</button>
    </view>
    <view class="list">
      <view v-for="(item, index) in list" :key="index" class="item">
        <text>{{ item }}</text>
        <button @click="removeTask(index)">删除</button>
      </view>
    </view>
  </view>
</template>

<script>
export default {
  data() {
    return { task: '', list: [] }
  },
  methods: {
    addTask() {
      if (!this.task) return uni.showToast({ title: '请输入内容', icon: 'none' })
      this.list.push(this.task)
      this.task = ''
      uni.setStorageSync('todos', this.list)
    },
    removeTask(index) {
      this.list.splice(index, 1)
      uni.setStorageSync('todos', this.list)
    }
  },
  onShow() {
    this.list = uni.getStorageSync('todos') || []
  }
}
</script>

<style>
.container { padding: 20rpx; }
.header { font-size: 40rpx; margin-bottom: 20rpx; }
.add { display: flex; }
.list .item { display: flex; justify-content: space-between; margin: 10rpx 0; }
</style>

即可在多端运行。


五、常见坑与解决方案

问题原因解决办法
页面刷新状态丢失Vue 实例重载用 uni.setStorageSync 持久化
小程序不支持部分 DOM 操作渲染层隔离用 uni.createSelectorQuery()
页面栈超限小程序限制10层使用 uni.switchTab() 或 uni.reLaunch()
图片路径差异加载机制不同放 static/ 用绝对路径

六、优化与最佳实践

✅ 封装请求层
✅ 使用 Vuex 或 Pinia 管理状态
✅ 使用 UI 框架:uView Plus / ColorUI
✅ 多端调试:微信开发者工具 / 模拟器
✅ 一键发布:

  • H5 → 网站-H5
  • 微信小程序 → 小程序发行
  • App → 原生App云打包

七、总结

UniApp 实现了真正意义上的“一次开发,多端运行”。
适合中小团队或快速验证项目。
但仍需注意平台差异与原生能力限制。
合理组件化、逻辑与视图分离,是可维护项目的关键。

标签: UniApp 跨端框架
最后更新:2025年10月25日

cywcd

我始终相信,技术不仅是解决问题的工具,更是推动思维进化和创造价值的方式。从研发到架构,追求极致效能;在随笔中沉淀思考,于 AI 中对话未来。

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

cywcd

我始终相信,技术不仅是解决问题的工具,更是推动思维进化和创造价值的方式。从研发到架构,追求极致效能;在随笔中沉淀思考,于 AI 中对话未来。

最新 热点 随机
最新 热点 随机
连加13小时班不喊累、自带300个分身?Kimi Work 开启“氛围办公”,到底谁在破防? Hermes 客户端来了:这不是聊天框,这是一个会长记性的 AI 打工人 薅秃Anthropic羊毛?Claude Code企业级免费平替来了,生产线直接省下百万Token费! 别再用VS Code插件了!GitHub狂割36K星的CodeWhale,才是终端党和DeepSeek的终极狂欢! 本地电脑能跑多大AI模型?2026本地大模型配置选型实践参考 Claude Opus 4.8 来了:这次 Anthropic 不卷嘴炮,开始卷“靠谱”了
字节把大模型装上了“手”!纯视觉接管键盘鼠标的 AI 终于来了别再为大模型 API 抓狂了!这款开源“全能型”代理神器 CCX,一站式搞定接口调度与可视化管理!程序员省钱神技:用 9Router 薅尽全网 AI 羊毛,Token 暴省 40%你的AI还在陪聊?2026超硬核多智能体(Agent)防坑与提效指南!18万星标霸榜!Anthropic黑客松冠军神作,彻底榨干Claude Code潜力的最强外脑ECC开源了!别再当Token冤大头了!3K行代码打造自我进化的极简Agent,真香!
一文掌握 nrm:Mac 与 Windows 下的安装、使用与最佳实践 Docker学习(一):入门教程从基础到实战篇 AI 智能体爆发:从会生成到会行动,2026 年普通人如何抓住 AaaS 变现红利 webApp开发基础之META标签详解 《生化危机》女主手搓AI记忆系统,48小时狂揽7千星!AI的长期记忆终于有解了? Claude Opus 4.8 来了:这次 Anthropic 不卷嘴炮,开始卷“靠谱”了
最近评论
渔夫 发布于 7 个月前(11月05日) 学到了,感谢博主分享
沙拉小王子 发布于 9 年前(11月30日) 适合vue入门者学习,赞一个
沙拉小王子 发布于 9 年前(11月30日) 适合vue入门者学习,赞一个
cywcd 发布于 9 年前(04月27日) 请参考一下这篇文章http://www.jianshu.com/p/fa4460e75cd8
cywcd 发布于 9 年前(04月27日) 请参考一下这篇文章http://www.jianshu.com/p/fa4460e75cd8

COPYRIGHT © 2025 蓝戒博客_智构苍穹-专注于大前端领域技术生态. ALL RIGHTS RESERVED.

京ICP备12026697号-2