为什么要做跨端
同一款小程序往往要上微信、支付宝、抖音、百度多个平台,每个平台的开发语法相近但细节不同。手写四套代码维护成本翻倍,跨端框架用一套代码编译到多个平台,从源头消掉重复。
跨端不是银弹:框架抽象掉共性,平台特有能力仍要自己适配。选型前先列清目标平台与必须用到的原生能力,再决定用 Taro 还是 uni-app。
跨端的价值不是「一套代码打天下」,而是「共性逻辑写一遍」。
- 平台微信加哪几个端。。
- 组件三方库兼容性。。
- 原生哪些能力必须直连。。
- 团队熟悉 React 还是 Vue。。
Taro 上手与工程结构
Taro 是京东开源的多端框架,语法贴近 React,生态里 React 组件可直接复用。通过脚手架创建项目,开发时写 TSX,构建时编译成各平台代码。
# 创建 Taro 项目
npx @tarojs/cli init my-app
# 构建微信小程序
taro build --type weapp
# 构建支付宝小程序
taro build --type alipay工程内 pages 目录放页面,components 放自定义组件,app.config 统一配置全局页面路由与窗口样式。改动一套源码,各平台产物同时产出。
uni-app 上手与差异
uni-app 是 DCloud 出品,语法贴近 Vue。写法上单文件组件加 pages.json 配置,一套代码可发布到小程序、App、H5。Vue 团队上手快,社区插件丰富。
跨端欢迎语
Taro 偏 React 阵营、uni-app 偏 Vue 阵营,先看团队主技术栈再选。两者都活跃维护,中小项目任选一个都能落地。选型时把组件生态、周边工具链和招聘难度一起评估,别只看框架热度,多端开发才能真正省钱省力。
条件编译与平台差异
平台差异集中在:导航栏样式、支付调用、登录授权、分享参数。跨端框架提供条件编译注释,只让特定平台执行特定代码块。
// Taro 条件编译:仅微信端执行
// #ifdef weapp
Taro.login({ provider: 'weixin' })
// #endif
// #ifdef alipay
my.getAuthCode()
// #endif原则是平台能力差异尽量收敛到一层适配模块,页面里不散落条件编译,便于测试与维护。
组件与 API 适配
第三方组件要确认支持目标平台:有的组件只出微信版,跨端项目里要么找替代、要么包一层平台分支。API 同理,支付、订阅消息、模板消息在各端行为不同。
写一个平台服务层,把 login、pay、share 封装成统一接口,内部按平台分发实现。业务代码只依赖服务层,换端只改一处。
发布与持续集成
各平台产物分别上传各自的开发者工具,提交审核。构建流水线里配置多平台构建任务:一次代码提交,产出 weapp、alipay、swan 多份产物并打上版本号。
版本同步要约定策略:功能一致时同版本发布,平台差异大时各自版本。灰度发布按平台分别控制,回滚也要能按平台独立执行。
小结与延伸阅读
跨端开发用「一份业务逻辑 + 一层平台适配」的架构,把重复代码消灭在编译期。选 Taro 还是 uni-app 看团队语言偏好,落地时重点管好条件编译与平台服务层。多端不是目标,维护成本可控才是。
- 自定义组件体系读《小程序自定义组件与组件库开发实战》。
- 插件生态读《小程序插件开发实战》。
- 菜单与接口读《公众号菜单与自定义接口实战》。