• Svelte-Ui-Admin基于svelte-ui中后台管理系统|Svelte3+Vite3后台框架


    Svelte Ui Admin基于svelte3.x+svelteKit+svelteUI整合的中后台管理系统。

    一款基于svelte3.x+vite3+svelteKit+svelteUi+svelte-i18n等技术开发的高颜值中后台管理系统SvelteUiAdmin。包含了常用的表格/表单/编辑器/列表/权限控制/弹窗消息提示等解决方案。

     

    技术栈

    • 框架技术:svelte3.x+svelteKit+vite3
    • UI组件库:svelte-ui (基于svelte自定义pc端UI组件库)
    • 样式处理:sass^1.54.4
    • 图表组件:echarts^5.3.3
    • 编辑器组件:wangeditor^4.7.15
    • 国际化方案:svelte-i18n^3.4.0
    • 数据模拟:mockjs^1.1.0

    svelte-admin 支持动态化主题换肤国际化多语言配置(中英文/繁体),自定义侧边栏菜单。 

     

    Table表格组件支持横向/纵向滚动条,固定表头/列表,单选/多选,自定义slot插槽等功能。 

    项目结构目录 

     

     

     

     

     

     

     

     

     

     

     

     

    SvelteAdmin公共布局 

    整体布局分为顶部导航栏+左侧路由菜单+右侧主体内容区域。

    1. class="svadmin__container" style="--themeSkin: {$skin}">
    2. <div class="svadmin__wrapper-layout flexbox flex-col">
    3. <div class="sv__layout-header">
    4. <Header />
    5. div>
    6. <div class="sv__layout-body flex1 flexbox">
    7. {#if rootRouteEnable}
    8. <div class="sv__bd-sidebar">
    9. <SideMenu routes={mainRoutes} {activeRoute} />
    10. div>
    11. {/if}
    12. {#if (rootRouteEnable && route != '/') || !rootRouteEnable}
    13. <div class="sv__bd-menus" class:collapsed={collapsed&&!rootRouteEnable}>
    14. <RouteMenu
    15. routes={getAllRoutes}
    16. {activeRoute}
    17. {activeRootRoute}
    18. {rootRouteEnable}
    19. {collapsed}
    20. />
    21. div>
    22. {/if}
    23. <div class="sv__bd-main flex1 flexbox flex-col">
    24. <BreadCrumb routes={getAllRoutes} {activeRoute} {activeRootRoute} />
    25. <Scrollbar autohide gap={2}>
    26. <div class="sv__main-wrapper">
    27. <slot />
    28. div>
    29. Scrollbar>
    30. div>
    31. div>
    32. div>
  •  Svelte-UI高颜值组件库

    Svelte Ui Admin遵循Svelte Ui组件风格设计,高颜值的组件让整体风格更加规范统一。

     

    svelte-ui:基于svelte3桌面pc版组件库 

    错误页处理

     sveltekit提供了+layout.svelte公共模板及+error.svelte错误页模板。

    1. <svelte:head>
    2. <title>{$page.status} Error!title>
    3. svelte:head>
    4. <div class="svadmin__pageErr flexbox flex-col flex-alignc flex-justifyc">
    5. <div class="svadmin__pageErr-img"><i class="sv-icon-round_close_fill_light">i>div>
    6. <div class="svadmin__pageErr-content">
    7. <div class="c-red fs-18">┗| {$page.status} |┛ Page Error~~div>
    8. <div class="c-999 mt-10 mb-10">{$page.error.message}div>
    9. <Button size="small" on:click={goHome}>Go HomeButton>
    10. div>
    11. div>

    Svelte自定义路由菜单

    基于svelte-ui组件库中的Menu组件实现自定义动态路由菜单。

    1. <Menu
    2. class="svadmin__menu-list"
    3. data={getNewRoutes}
    4. active={activeRoute}
    5. trigger="click"
    6. collapse={collapsed}
    7. backgroundHover="#e2f2ff"
    8. >
    9. {#each getNewRoutes as route}
    10. <svelte:component this={routeMenuItem} item={route} {activeRootRoute} {rootRouteEnable} />
    11. {/each}
    12. Menu>
    1. <script>
    2. import { goto } from '$app/navigation'
    3. import { _ } from 'svelte-i18n'
    4. import { Menu, MenuItem, MenuSub } from '$lib/svelte-ui'
    5. import routeMenuItem from './routeMenuItem.svelte'
    6. import utils from '@/utils'
    7. import { getCurrentRootRoute, hasChildrenRoute } from '@/utils/routes'
    8. export let item = []
    9. // 根菜单
    10. export let activeRootRoute = ''
    11. // 是否开启一级路由菜单
    12. export let rootRouteEnable = true
    13. function changeRoute(path) {
    14. if(utils.isExternal(path)) {
    15. window.open(path, '_blank')
    16. }else {
    17. goto(path)
    18. }
    19. }
    20. script>
    21. {#if !item.meta.hidden}
    22. {#if activeRootRoute !== getCurrentRootRoute(item) && rootRouteEnable === true}
    23. {:else}
    24. {#if item.children && Array.isArray(item.children) && hasChildrenRoute(item.children)}
    25. <MenuSub key={item.key}>
    26. <span slot="icon"><i class={item.meta.icon}>i>span>
    27. <div slot="title">{$_(`menu.${item.meta.title}`)}div>
    28. {#each item.children || [] as route2}
    29. <svelte:component this={routeMenuItem} item={route2} {activeRootRoute} {rootRouteEnable} />
    30. {/each}
    31. MenuSub>
    32. {:else}
    33. <MenuItem key={item.key} title={$_(`menu.${item.meta.title}`)} on:click={changeRoute(item.path)}>MenuItem>
    34. {/if}
    35. {/if}
    36. {/if}

    svelte-admin国际化解决方案

    通过svelte-i18n支持中英文/繁体三种语言显示。

     

    1. import { addMessages, init, getLocaleFromNavigator } from 'svelte-i18n'
    2. import { browser } from '$app/env'
    3. import Storage from '@/utils/storage'
    4. // 引入语言配置
    5. import cn from '@/locale/zh-CN'
    6. import tw from '@/locale/zh-TW'
    7. import en from '@/locale/en-US'
    8. export const langKey = 'lang'
    9. export const langVal = 'cn'
    10. addMessages('cn', cn)
    11. addMessages('tw', tw)
    12. addMessages('en', en)
    13. const lang = getLang()
    14. console.log('当前国际化:', lang)
    15. init({
    16. fallbackLocale: lang,
    17. initialLocale: getLocaleFromNavigator()
    18. })
    19. setHtmlLang(lang)
    20. /* 获取语言 */
    21. export function getLang() {
    22. const lang = Storage.get(langKey)
    23. return lang || langVal
    24. }
    25. /* 持久化存储 */
    26. export function setLang(lang, reload = false) {
    27. if(lang != getLang()) {
    28. Storage.set(langKey, lang || '')
    29. setHtmlLang(lang)
    30. // 重载页面
    31. if(reload) {
    32. window.location.reload()
    33. }
    34. }
    35. }

     

     Endless,基于svelte.js+svelteUi开发后台管理系统就分享到这里。希望能喜欢哈!

    最后附上两个项目实例

    uniapp+uview跨端手机后台管理解决方案

    electron+vue3+elementPlus仿Macos桌面端管理后台框架

  • 相关阅读:
    车载通信架构 —— SOME/IP 协议概述
    (二)《数字电子技术基础》——数制
    【C++ 结构体的构造函数使用】
    Linux|centos二进制方式安装系统和网络监控神器prometheus+grafana(装逼神器它来了)
    【Java基础】JDK8-17新特性
    python经典百题之用*号输出字母C的图案
    【UniApp】-uni-app-项目计算功能(苹果计算器)
    进阶JAVA篇- Date 类与 SimpleDateFormat 类、Calendar 类常用的API(五)
    四轴飞行器MiniFly学习02——姿态融合算法01——获取6轴传感器数据和气压数据
    如何从存档服务器上完全删除PDM用户
  • 原文地址:https://blog.csdn.net/yanxinyun1990/article/details/126901021