You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
3.7 KiB
3.7 KiB
unibest 项目概览
这是一个基于 uniapp + Vue3 + TypeScript + Vite5 + UnoCSS 的跨平台开发框架。
项目特点
- 支持 H5、小程序、APP 多平台开发
- 使用最新的前端技术栈
- 内置约定式路由、layout布局、请求封装等功能
- 无需依赖 HBuilderX,支持命令行开发
核心配置文件
- package.json - 项目依赖和脚本配置
- vite.config.ts - Vite 构建配置
- pages.config.ts - 页面路由配置
- manifest.config.ts - 应用清单配置
- uno.config.ts - UnoCSS 配置
主要目录结构
src/pages/- 页面文件src/components/- 组件文件src/layouts/- 布局文件src/api/- API 接口src/http/- HTTP 请求封装src/store/- 状态管理src/tabbar/- 底部导航栏src/App.ku.vue- 全局根组件(类似 App.vue 里面的 template作用)
开发命令
pnpm dev- 开发 H5 版本pnpm dev:mp- 开发微信小程序pnpm dev:mp-alipay- 开发支付宝小程序(含钉钉)pnpm dev:app- 开发 APP 版本pnpm build- 构建生产版本
Vue 组件规范
- 使用 Composition API 和
<script setup>语法 - 组件文件使用 PascalCase 命名
- 页面文件放在
src/pages/目录下 - 全局组件文件放在
src/components/目录下 - 局部组件文件放在页面的
/components/目录下
TypeScript 规范
- 严格使用 TypeScript,避免使用
any类型 - 为 API 响应数据定义接口类型
- 使用
interface定义对象类型,type定义联合类型 - 导入类型时使用
import type语法
状态管理
- 使用 Pinia 进行状态管理
- Store 文件放在
src/store/目录下 - 使用
defineStore定义 store - 支持持久化存储
UnoCSS 原子化 CSS
- 项目使用 UnoCSS 作为原子化 CSS 框架
- 配置在 [uno.config.ts]
- 支持预设和自定义规则
- 优先使用原子化类名,减少自定义 CSS
Vue SFC 组件规范
<script setup lang="ts">标签必须是第一个子元素<template>标签必须是第二个子元素<style scoped>标签必须是最后一个子元素(因为推荐使用原子化类名,所以很可能没有)
页面开发
- 页面文件放在 [src/pages/]目录下
- 使用约定式路由,文件名即路由路径
- 页面配置在仅需要在 宏
definePage中配置标题等内容即可,会自动生成到pages.json中
组件开发
- 全局组件文件放在
src/components/目录下 - 局部组件文件放在页面的
/components/目录下 - 使用 uni-app 内置组件和第三方组件库
- 支持 wot-ui\uview-pro\uv-ui\sard-ui\uview-plus 等多种第三方组件库 和 z-paging 组件
- 自定义组件遵循 uni-app 组件规范
平台适配
- 使用条件编译处理平台差异
- 支持 H5、小程序、APP 多平台
- 注意各平台的 API 差异
- 使用 uni.xxx API 替代原生 API
示例代码结构
<script setup lang="ts">
// #ifdef H5
import { h5Api } from '@/utils/h5'
// #endif
// #ifdef MP-WEIXIN
import { mpApi } from '@/utils/mp'
// #endif
const handleClick = () => {
// #ifdef H5
h5Api.showToast('H5 平台')
// #endif
// #ifdef MP-WEIXIN
mpApi.showToast('微信小程序')
// #endif
}
</script>
<template>
<view class="page">
<!-- uni-app 组件 -->
<button @click="handleClick">点击</button>
<!-- 条件渲染 -->
<!-- #ifdef H5 -->
<view>H5 特有内容</view>
<!-- #endif -->
</view>
</template>
生命周期
- 使用 uni-app 页面生命周期
- onLoad、onShow、onReady、onHide、onUnload
- 组件生命周期遵循 Vue3 规范
- 注意页面栈和导航管理