![]()
做 uni-app 的人大多绕不开同一个吐槽:HBuilderX 编码体验一般、pages.json 要手写、Webpack 冷启慢、跨端兼容一堆坑。unibest 就是冲着这些痛点去的——由开发者"菲鸽"维护,MIT 协议,GitHub 已 2.8k+ Star,定位不是"又一个模板",而是uni-app + Vue3 + Vite5 + TypeScript + UnoCSS + Pnpm这条现代技术栈的"最佳实践打包版",名字也直白:uni + best。
它把原生 uni-app 的哪些短扳补上了
原生 uni-app 走的是 HBuilderX + Webpack + 手写 pages.json 的老路子,unibest 一条条对账:
维度
原生 uni-app
unibest
构建
Webpack
Vite5
,冷启官方宣称提速约 83%
编辑器
强绑 HBuilderX
VS Code 全流程
(仅 App 打包需 HBuilderX 辅助)
路由
手写 pages.json
约定式路由
,文件即页面
样式
原生 CSS / Scss
UnoCSS
原子化 + 10 万+ 图标
状态
Vuex
Pinia
+ persistedstate
请求
uni.Request 裸调
内置简单 http / Alova / vue-query三选一
规范
从零配
ESLint + Prettier + Husky + commitlint 齐了
技术栈表里还有几个关键角色:
@uni-helper/vite-plugin-uni-pages
(路由)、vite-plugin-uni-layouts(布局)、vite-plugin-uni-components(组件自动导入)、unplugin-auto-import(API 自动导入)——整套 uni-helper 生态是 unibest 体验升级的真正底座。
三个能直接抄走的实用例子例 1:新建页面,不用碰 pages.json
原生写法要在pages.json里加一段{ path, style },多人协作还容易合并冲突。unibest 里你只管在src/pages/下建.vue文件,插件自动生成pages.json。
{
style: {
navigationBarTitleText: '订单',
navigationStyle: 'custom'
}
}
route>订单页view>
template>
全局配置(tabBar / 窗口样式)统一收在pages.config.ts,页面级配置丢进 代码块,手动改 pages.json 反而会被覆盖——这是新手最容易踩的坑。 设首页只要在 里加type="home",整个项目保证只有一个,否则按字母排第一个不一定是你想设的那个。
分包也一样,vite.config.ts里配:
UniPages({
exclude: ['**/components/**/**.*'],
subPackages: ['src/pages-sub'],
})
例 2:Alova 一行请求 + useRequestunibest 内置三种请求方案,简单项目用自带http就够,复杂交互换 Alova 或 vue-query。Alova 的写法:
// src/api/foo-alova.ts
import { alovaInstance } from '@/http/request/alova'
export interface IFooItem { id: string; name: string }export const getFooAPI = (name: string) =>
alovaInstance.Get('/foo', { params: { name } })
页面里消费:
import { getFooAPI } from '@/api/foo-alova'const { loading, data, error, run } = useRequest( =>
getFooAPI('菲鸽')
)
拦截器统一在src/http/interceptor.ts里处理 token 注入、401 刷新、错误弹 toast,业务页不用管。 接口按模块塞src/api/,比散在页面里好维护。
例 3:Layout 一行切换
src/layouts/default.vue是默认布局,要做"带底部 tab 的页面""纯空白页""特殊活动页"几种形态,不用每页复制粘贴结构:
{
layout: 'special',
style: { navigationBarTitleText: '大转盘' }
}
route>
框架会拿src/layouts/special.vue把页面包一层, 的位置就是你这页的内容。默认没写layout就走default。 对"首页带 tab / 详情页不带 tab / 活动页全屏"这种多布局场景,省掉大量重复引入。
快速起手(3 条命令)
pnpm create unibest my-app
cd my-app && pnpm i
pnpm dev:h5 # H5 → localhost:9000
pnpm dev:mp-weixin # 微信小程序 → 丢微信开发者工具
pnpm dev:app # App → 仍要 HBuilderX 接一下打包
Node ≥ 18,pnpm ≥ 7.30,preinstall脚本会强锁 pnpm,用 npm/yarn 直接拦。
客观说几句短板
App 打包仍绕不开 HBuilderX,只是开发和构建 H5/小程序可以纯 CLI——宣传语"告别 HBuilderX"略夸张,准确说是"告别它的编辑器部分"
文档里 Vite 版本一会儿 Vite4 一会儿 Vite5,不同出处不一致,按最新 release 的package.json为准
技术栈密度偏高(Vite 插件链 + uni-helper 三件套 + Alova 三选一),刚从原生 uni-app 过来的人需要半天左右磨合
部分高级功能(大转盘、微信一键登录、分享朋友圈)在附属的hello-unibestdemo 项目里,主文档点到为止
适合谁
中大型 uni-app 项目(小程序 + H5 + App 都要)、追求 TS + 工程化规范的团队、受够了 HBuilderX 想切 VS Code 的人——这三类是直接受众。如果是两三页的小程序 demo,原生uni create反而更轻。
一句话判断:你上次改 pages.json 合并冲突是哪天?如果答案是"上周",unibest 就该进书签了。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.