vite-uniapp-template 3.0 正式发布:以实用为先的 uni-app 项目模板

4,949 阅读4分钟

🎉 概述

vite-uniapp-template V3.0 版本现已正式发布!本次更新对项目结构进行了全面优化,新增了多个实用功能,并提供了更好的开发体验。这是一个专注于实用性的 uni-app 项目模板,旨在帮助开发者快速构建高质量的跨平台应用。

🚀 V3.0 版本更新亮点

  1. UI 界面全面优化

    • 重新设计的演示页面,展示更直观
    • 全新改版的登录页面,提升用户体验
    • 新增通用列表页面演示,便于快速开发
  2. 架构升级

    • 优化分包目录结构,提升应用性能
    • 重构项目整体架构,提高可维护性
    • 完善路由系统,支持更灵活的页面导航
  3. 小程序适配增强

    • 修复小程序环境下 UnoCSS 的兼容性问题
    • 全面优化小程序端的性能表现
    • 改进生产环境的构建配置

💡 核心特性详解

1. 创新的分包结构

传统分包 vs 新型分包

传统分包结构:

src/
├── pages/           # 主包页面
│   └── index.vue
├── pages-user/      # 用户相关分包
│   ├── profile.vue
│   └── settings.vue
└── pages-shop/      # 商城相关分包
    ├── list.vue
    └── detail.vue

vite-uniapp-template 的创新分包结构:

src/
└── pages/
    ├── index/           # 主包页面(必需)
    │   ├── index.vue    # 首页(必需)
    │   ├── category.vue # Tab页面
    │   └── mine.vue     # Tab页面
    ├── user/            # 用户分包
    │   ├── login.vue
    │   └── profile.vue
    └── shop/            # 商城分包
        ├── list.vue
        └── detail.vue

分包配置示例:

// pages.config.js
export default {
  // 主包配置
  pages: [
    {
      path: 'pages/index/index',
      style: {
        navigationBarTitleText: '首页'
      }
    },
    {
      path: 'pages/index/category',
      style: {
        navigationBarTitleText: '分类'
      }
    }
  ],
  
  // 分包配置
  subPackages: [
    {
      root: 'pages/user',
      pages: [
        {
          path: 'login',
          style: { navigationBarTitleText: '登录' }
        }
      ]
    }
  ]
}

2. 路由权限管理

// src/permission/login/index.js
export default function login(router) {
  const homePath = '/pages/index/index'
  const loginPath = '/pages/login/index'
  
  // 白名单路由配置
  const whiteList = [
    loginPath, 
    '/pages/common/rich-view/index', 
    '/pages/common/web-view/index'
  ]

  router.beforeEach((to, from, next) => {
    const userStore = useUserStore()
    const token = userStore.token

    if (token) {
      if (to.path === loginPath) {
        next(homePath)
      }
      else if (userStore.userId) {
        next()
      }
      else {
        userStore.getUserData()
          .then(() => next())
          .catch(() => {
            userStore.logout()
            next({ path: loginPath })
          })
      }
    }
    else if (whiteList.includes(to.path)) {
      next()
    }
    else {
      next({ path: loginPath })
    }
  })
}

3. 智能路由导航

// 组件中使用
this.$Router.push({
  path: '/pages/user/profile',
  query: { id: 123 }
})

// 组合式 API 方式
const router = useRouter()
const route = useRoute()

// 页面导航
router.push('/pages/settings')

// 获取参数
console.log(route.query.id)

// 替换当前页面
router.replace('/pages/dashboard')

// 关闭所有页面并跳转
router.replaceAll('/pages/home')

4. 静态资源智能管理

# 本地开发模式 (.env.dev)
VITE_ASSETS_MODE=local

# 生产环境 (.env.prod)
VITE_ASSETS_MODE=remote
VITE_ASSETS_CDN=https://your-cdn.com/assets

使用示例:

<image src="~@assets/images/logo.png" />
<!-- 开发环境: /src/assets/images/logo.png -->
<!-- 生产环境: https://your-cdn.com/assets/images/logo.png -->

📦 快速开始

# 克隆项目
git clone https://github.com/viarotel-org/vite-uniapp-template.git

# 安装依赖(推荐使用 pnpm)
pnpm install

# 启动项目
pnpm dev:h5        # H5 平台
pnpm dev:mp-weixin # 微信小程序
pnpm dev:app       # App 平台

💡 最佳实践建议

  1. 分包处理

    • 遵循 pages/index 作为主包的约定
    • 合理规划主包与分包的内容分布
    • 使用预加载机制优化性能
    • 根据业务逻辑合理划分分包边界
  2. 路由管理

    • 使用实际路径而非别名进行程序化跳转
    • 保持路由守卫逻辑简洁清晰
    • 善用中间件分离业务逻辑
  3. 资源管理

    • 开发环境使用本地资源模式
    • 生产环境合理配置 CDN 地址
    • 注意控制主包大小,合理使用分包
  4. 状态管理

    • 使用 Pinia 进行状态管理,按模块拆分
    • 配合组合式 API,提高代码可维护性
  5. 样式处理

    • 充分利用 UnoCSS 的原子化 CSS 能力
    • 注意处理小程序端的样式兼容性
    • 使用主题变量统一管理配色方案

🎯 适用场景

  • 需要快速启动的企业级 uni-app 项目
  • 重视开发体验和工程化的团队
  • 需要跨平台(H5、小程序、App)统一解决方案的应用
  • 注重性能优化和代码质量的项目

🔗 相关链接

🤝 支持与贡献

这是一个由社区驱动的开源项目,我们欢迎任何形式的贡献,包括但不限于:

  • 提交问题和建议
  • 完善文档内容
  • 提交代码改进
  • 分享使用经验

如果您觉得这个项目对您有帮助,欢迎给项目点个 Star ⭐️

📬 联系方式


vite-uniapp-template 3.0 的发布标志着项目迈向了一个新的台阶。创新的分包结构设计和全面的功能优化,将为开发者提供更好的开发体验。感谢社区的支持与反馈,这是我们持续进步的动力!