按面试考点重新整理:跨端原理、生命周期与路由、条件编译、样式适配、请求与存储、性能、App / 小程序 / H5 专题、工程化与发布。以 Vue 3 + Vite 版 uni-app 为主,涉及 Vue 2 版差异时单独说明。

# 1 基础与跨端原理

# uni-app 是什么?和原生小程序开发、Taro 相比,你会怎么选?

⚡ 30 秒速记

  • uni-app = DCloud 出的跨端框架,用 Vue 语法写一套代码,编译到微信 / 支付宝 / 抖音等小程序、H5、App(iOS / Android / 鸿蒙 HarmonyOS Next)
  • 选型看三件事:要覆盖几个端、团队是 Vue 还是 React 栈、对单端深度能力和性能有多敏感
  • 只做微信一个端、重度依赖微信能力(直播、插件、分包极致调优)→ 原生小程序最稳
  • React 团队、主要做多家小程序和 H5 → Taro;Vue 团队、还要出 App → uni-app
  • 跨端不等于零成本:每个端都有差异,条件编译和多端回归测试是固定开销

uni-app 是一个用 Vue 写、编译到小程序、H5 和 App 的跨端框架,选它还是原生还是 Taro,主要看端的数量和团队技术栈。 说白了它解决的是「同一个业务要在五六个端各写一遍」的问题。如果只做微信小程序,而且要用很深的微信能力,我会直接写原生,少一层编译就少一层坑;如果是 React 团队做多家小程序,Taro 上手更顺;如果是 Vue 团队,还要顺带出一个 App,uni-app 最省事,它的 App 端是自己的运行时,Taro 在这块没那么完整。不管选哪个,平台差异都躲不掉,只是集中在少量条件编译里处理。

先用一句大白话理解:原生小程序是给每家平台各写一份方言,uni-app 是你写普通话,它帮你翻译成各家方言。翻译能覆盖 90% 的日常对话,剩下 10% 的地方话(某个平台独有的 API、组件、审核规则)还是得你自己加注释说明,也就是条件编译。

# 三种方案放一起看

维度 原生小程序 uni-app Taro
语法 各平台自己的 WXML / AXML + JS Vue 2 / Vue 3(主推 Vue 3 + Vite) React 为主,也支持 Vue 3
覆盖端 只有本平台 小程序、H5、App、鸿蒙 小程序、H5,App 走 React Native,鸿蒙在 Taro 4 里支持
App 能力 无 自带运行时 + 原生插件 / UTS 插件 依赖 RN 生态,要另外调一套
新能力跟进 第一时间可用 要等框架适配,或者条件编译里直接调 wx.xxx 同左
生态 平台官方组件 插件市场、uni-ui、uni_modules npm 生态、NutUI 等
工具 平台开发者工具 HBuilderX 或 CLI + VS Code CLI + VS Code

Taro 3 之后走的是「重运行时」路线:在小程序里跑一个精简的 DOM / BOM 模拟层,React 照常渲染出虚拟树,再通过一个递归模板把它画到小程序上。好处是 React 写法几乎不受限,代价是运行时体积和 setData 数据量偏大。uni-app 在小程序端更偏「编译时」:模板在构建时就转成了 WXML,运行时只负责 Vue 响应式和数据同步,所以产物更贴近原生。

webapp
公众号
开发者导航
切换夜间模式
点击侧边栏上一篇
点击侧边栏下一篇
折叠侧边栏
收起全部