当前位置:   article > 正文

基于vue3全新后台管理方案vite4+vue3+pinia2+vue-i18n_vite4-admin

vite4-admin

Vite4-Admin 基于 vue3+vite4.x+pinia2+vue-router@4 构建后台管理系统。

支持vue-i18n国际化多语言、动态路由鉴权、4种布局模板及tab页面缓存等功能。

技术框架

  • 编码器:VScode
  • 框架技术:vite4+vue3+pinia+vue-router
  • UI组件库:ve-plus (基于vue3自研ui组件库)
  • 样式处理:sass^1.58.3
  • 图表组件:echarts^5.4.2
  • 国际化方案:vue-i18n^9.2.2
  • 富文本编辑器组件:wangeditor^4.7.15
  • markdown编辑器:md-editor-v3^2.11.0

特性

  1. 最新前端技术栈vite4、vue3、pinia、vue-router、vue-i18n
  2. 支持中文/英文/繁体多语言模式切换。
  3. 支持表格单选/多选、边框/隔行换色、横向/纵向虚拟滚动条等功能。
  4. 搭配高颜值的ve-plus组件库,风格更加统一。
  5. 内置多个模板布局样式
  6. 支持动态路由权限控制、路由缓存

布局模板

项目中提供了4种布局模板。

  1. <script setup>
  2. import { computed } from 'vue'
  3. import { appStore } from '@/store/modules/app'
  4. // 引入布局模板
  5. import Classic from './layout/classic/index.vue'
  6. import Columns from './layout/columns/index.vue'
  7. import Vertical from './layout/vertical/index.vue'
  8. import Transverse from './layout/transverse/index.vue'
  9. const store = appStore()
  10. const config = computed(() => store.config)
  11. const LayoutConfig = {
  12. classic: Classic,
  13. columns: Columns,
  14. vertical: Vertical,
  15. transverse: Transverse
  16. }
  17. </script>
  18. <template>
  19. <div class="veadmin__container">
  20. <component :is="LayoutConfig[config.layout]" />
  21. </div>
  22. </template>

  1. <script setup>
  2. import { ref } from 'vue'
  3. import { useRoutes } from '@/hooks/useRoutes'
  4. import { tabsStore } from '@/store/modules/tabs'
  5. import Permission from '@/components/Permission.vue'
  6. import Forbidden from '@/views/error/forbidden.vue'
  7. const { route } = useRoutes()
  8. const store = tabsStore()
  9. </script>
  10. <template>
  11. <Scrollbar autohide gap="2">
  12. <div class="ve__layout-main__wrapper">
  13. <!-- 路由鉴权 -->
  14. <Permission :roles="route?.meta?.roles">
  15. <template #tips>
  16. <Forbidden />
  17. </template>
  18. <!-- 路由缓存 -->
  19. <router-view v-slot="{ Component }">
  20. <transition name="ve-slide-right" mode="out-in" appear>
  21. <KeepAlive :include="store.cacheViews">
  22. <component v-if="store.reload" :is="Component" :key="route.path" />
  23. </KeepAlive>
  24. </transition>
  25. </router-view>
  26. </Permission>
  27. </div>
  28. </Scrollbar>
  29. </template>

vue-i18n国际化多语言解决方案

  1. import { createI18n } from 'vue-i18n'
  2. import { appStore } from '@/store/modules/app'
  3. // 引入语言配置
  4. import enUS from './en-US'
  5. import zhCN from './zh-CN'
  6. import zhTW from './zh-TW'
  7. // 默认语言
  8. export const langVal = 'zh-CN'
  9. export default async (app) => {
  10. const store = appStore()
  11. const lang = store.lang || langVal
  12. const i18n = createI18n({
  13. legacy: false,
  14. locale: lang,
  15. messages: {
  16. 'en': enUS,
  17. 'zh-CN': zhCN,
  18. 'zh-TW': zhTW
  19. }
  20. })
  21. app.use(i18n)
  22. }

  1. <script setup>
  2. import { ref } from 'vue'
  3. import { useI18n } from 'vue-i18n'
  4. import { appStore } from '@/store/modules/app'
  5. const { locale } = useI18n()
  6. const store = appStore()
  7. const langVal = ref(locale.value)
  8. const langOptions = ref([
  9. {key: "zh-CN", label: "简体中文"},
  10. {key: "zh-TW", label: "繁体字"},
  11. {key: "en", label: "英文"},
  12. ])
  13. const changeLang = () => {
  14. // 设置locale语言
  15. locale.value = langVal.value
  16. store.lang = locale.value
  17. // store.setLang(locale.value)
  18. }
  19. </script>
  20. <template>
  21. <Dropdown v-model="langVal" :options="langOptions" placement="bottom" @change="changeLang">
  22. <div class="toolbar__item"><Icon name="ve-icon-lang" size="20" cursor /></div>
  23. <template #label="{item}">
  24. <div>
  25. {{item.label}} <span style="color: #999; font-size: 12px;">{{item.key}}</span>
  26. </div>
  27. </template>
  28. </Dropdown>
  29. </template>
预览

OK,基于vue3+vite4+pinia2开发后台管理系统模板就分享到这里。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/379263
推荐阅读