2 Star 2 Fork 2

江阳小道/uniapp-vue3-template

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

uniapp 团队协作开发实践模板(Vue3)

GitHub Repo stars GitHub forks node version pnpm version GitHub package.json version (subfolder of monorepo) GitHub License

使用uniapp+vite+vue3+typescript+uview-plus+unocss 搭建的适合团队协作的快速开发模版

uview-plus官方文档

本项目集众多项目的优点,打造最适合团队协作开发的项目模板。

在线预览地址:https://oyjt.github.io/uniapp-vue3-template/

特性

  • 集成uview-plus3.0 ui
  • 支持多环境打包构建
  • 使用pinia状态管理
  • 封装网络请求,并支持Typescript
  • 支持路径别名
  • 支持自动加载组件和API
  • 自动校验git提交代码格式
  • 集成ESLintStyleLintEditorConfig代码格式规范
  • Typescript支持
  • 集成UnoCSS
  • 集成iconify图标库
  • 集成z-paging下拉刷新功能
  • 添加页面跳转拦截,登录权限校验
  • 支持token无感刷新
  • 项目分包
  • 集成小程序隐私协议授权组件
  • 项目构建自动删除本地图片并替换本地图片路径为线上图片
  • 集成包体积视图分析插件
  • 支持国际化
  • 集成alova网络请求(具体使用请切换到 feature/alova 分支)
  • 集成axios网络请求(具体使用请切换到 feature/axios 分支)
  • 支持新的wot-design-uni库(具体使用请切换到feature/wot-design-uni分支),wot-design-uni官方文档

uniapp插件推荐

目录结构

项目中采用目前最新的技术方案来实现,目录结构清晰。

uniapp-vue3-project
├ build                 vite配置统一管理
│  ├ config
│  └ plugins
├ env                   环境变量
├ scripts               一些脚本
│  ├ post-upgrade.js     依赖库清理
│  └ verify-commit.js    git提交检验
├ src
│  ├ api                接口管理
│  ├ components         公共组件
│  ├ hooks              常用hooks封装
│  ├ locale             国际化语言管理
│  ├ pages              页面管理
│  ├ plugins            插件管理
│  ├ router             路由管理
│  ├ static             静态资源
│  ├ store              状态管理
│  ├ utils              一些工具
│  ├ App.vue
│  ├ main.ts
│  ├ manifest.json      项目配置
│  ├ pages.json         页面配置
│  └ uni.scss           全局scss变量
├ types                 全局typescript类型文件
│  ├ auto-imports.d.ts
│  ├ components.d.ts
│  ├ global.d.ts
│  └ module.d.ts
├ LICENSE
├ README.md
├ cz.config.js          cz-git配置
├ eslint.config.js      eslint配置
├ index.html
├ package.json
├ pnpm-lock.yaml
├ stylelint.config.js   stylelint配置
├ tsconfig.json
├ uno.config.ts         unocss配置
└ vite.config.ts        vite配置

vite插件管理

build
├ config            vite配置
│  ├ index.ts       入口文件
│  └ proxy.ts       跨域代理配置
└ plugins           vite插件
   ├ autoImport.ts  自动导入api
   ├ cleanImage.ts  自动清理图片文件
   ├ component.ts   自动导入组件
   ├ index.ts       入口文件
   ├ replaceUrl.ts  自动替换图片地址为CDN地址
   ├ unocss.ts      unocss配置
   └ visualizer.ts  包体积视图分析

接口管理

api
├ common       通用api
│  ├ index.ts
│  └ types.ts
├ user         用户相关api
│  ├ index.ts
│  └ types.ts
└ index.ts     入口文件

hooks管理

hooks
├ use-clipboard  剪切板
│  └ index.ts
├ use-loading    loading
│  └ index.ts
├ use-modal      模态框
│  └ index.ts
├ use-permission 校验权限
│  └ index.ts
├ use-share      分享
│  └ index.ts
└ index.ts       入口文件

页面管理

pages
├ common           公共页面(分包common)
│  ├ login
│  │  └ index.vue
│  └ webview
│     └ index.vue
└ tab              主页面(主包)
   ├ home
   │  └ index.vue
   ├ list
   │  └ index.vue
   └ user
      └ index.vue

状态管理

store
├ modules
│  ├ app          app状态
│  │  ├ index.ts
│  │  └ types.ts
│  └ user         用户状态
│     ├ index.ts
│     └ types.ts
└ index.ts        入口文件

工具方法

utils
├ auth                token相关方法
│  └ index.ts
├ common              通用方法
│  └ index.ts
├ modals              弹窗相关方法
│  └ index.ts
├ request             网络请求相关方法
│  ├ index.ts
│  ├ interceptors.ts
│  ├ status.ts
│  └ types.ts
└ index.ts            入口文件

使用方法

# 安装依赖
pnpm install

# 启动H5
pnpm dev:h5

# 启动微信小程序
pnpm dev:mp-weixin

发布

# 构建开发环境
pnpm build:h5
pnpm build:mp-weixin

# 构建测试环境
pnpm build:h5-test
pnpm build:mp-weixin-test

# 构建生产环境
pnpm build:h5-prod
pnpm build:mp-weixin-prod

代码提交

pnpm cz

更新uniapp版本

更新uniapp相关依赖到最新正式版

npx @dcloudio/uvm@latest

或者执行下面的命令

pnpm uvm

在升级完后,会自动添加很多无用依赖,执行下面的代码减小保体积

pnpm uvm-rm

v3 代码块

vue 文件中,输入 v3tab 即可快速生成页面模板,可以大大加快页面生成。

原理:基于 VSCode 代码块生成。

登录鉴权

  1. 页面如果需要登录才能访问,只需在 pages.json 文件中需要鉴权的页面下设置 needLogin 属性设置为 true 即可,比如
{
  "pages": [
    {
      "path": "pages/test/test",
      "needLogin": true,
      "style": {
        "navigationBarTitleText": "",
      },
    }
  ]
}
  1. 如果有tab页面需要登录才能访问,上面的设置在小程序中点击tabbar时无效,因为在小程序中点击tabbar不会触发uni.switchTab方法,下面是官方给出的回复及解决方案。

拦截uni.switchTab本身没有问题。但是在微信小程序端点击tabbar的底层逻辑并不是触发uni.switchTab。所以误认为拦截无效,此类场景的解决方案是在tabbar页面的页面生命周期onShow中处理。

可参考pages/tab/user/index.vue中的代码,核心代码如下:

<script setup lang="ts">
// 引入鉴权hooks
import { usePermission } from "@/hooks";

onShow(async () => {
  console.log("tabbar page onShow");
  const hasPermission = await usePermission();
  console.log(hasPermission ? "已登录" : "未登录,拦截跳转");
});
</script>

注意事项

  1. 微信小程序开发者工具中内置的打包分析不准确,本项目使用了rollup-plugin-visualizer来分析小程序包体积,默认不开启,有需要的移除相关注释即可

  2. 自动构建处理本地图片资源,使用了vite-plugin-clean-buildvite-plugin-replace-image-url这两个插件,默认不开启相关功能,如果需要使用再build/vite/plugins/index.ts文件中移除相关注释即可

  3. 使用vite-plugin-replace-image-url插件,想要图片自动替换生效,需要在项目中使用绝对路径引入图片资源,如下示例所示。

    示例一:style中的图片使用

    <template>
      <view :style="`background-image: url('${bgImg}')`">
        ...
      </view>
    </template>
    <script setup lang="ts">
    import bgImg from '@/static/images/bg_img.png';
    </script>
    

    示例二:js中的图片使用

    <script setup lang="ts">
    import walletIcon from '@/static/images/icon_wallet.png';
    const menuList = [
      {
        name: 'wallet',
        title: '钱包',
        icon: walletIcon,
      },
      ...
    ];
    </script>
    

    示例二:css中的图片使用

    <style lang="scss">
    .icon {
      background-image: url('@/static/images/icon.png')
    }
    </style>
    
  4. 部分用户构建微信小程序如下错误,原因是微信开发者工具缺失了对应的依赖。

This @babel/plugin-proposal-private-property-in-object version is not meant to
be imported.

此时升级微信开发者工具,或者安装@babel/plugin-proposal-private-property-in-object依赖即可解决问题。

捐赠

如果你觉得这个项目对你有帮助,你可以请作者喝饮料🍹

微信收款码

MIT License Copyright (c) 2024 江阳小道 Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

使用uniapp+vite+vue3+uview-plus3.0 搭建的搭建的适合团队协作的快速开发模版 展开 收起
README
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

2个月前同步了仓库
3个月前同步了仓库
4个月前同步了仓库
7个月前同步了仓库
8个月前同步了仓库
加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
TypeScript
1
https://gitee.com/ouyang/uniapp-vue3-template.git
git@gitee.com:ouyang/uniapp-vue3-template.git
ouyang
uniapp-vue3-template
uniapp-vue3-template
main

搜索帮助