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公共布局 

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

<div class="svadmin__container" style="--themeSkin: {$skin}">
    <div class="svadmin__wrapper-layout flexbox flex-col">
        <div class="sv__layout-header">
            <Header />
        </div>
        
        <div class="sv__layout-body flex1 flexbox">
            <!-- //侧边栏 -->
            {#if rootRouteEnable}
            <div class="sv__bd-sidebar">
                <SideMenu routes={mainRoutes} {activeRoute} />
            </div>
            {/if}

            {#if (rootRouteEnable && route != '/') || !rootRouteEnable}
            <div class="sv__bd-menus" class:collapsed={collapsed&&!rootRouteEnable}>
                <RouteMenu
                    routes={getAllRoutes}
                    {activeRoute}
                    {activeRootRoute}
                    {rootRouteEnable}
                    {collapsed}
                />
            </div>
            {/if}

            <div class="sv__bd-main flex1 flexbox flex-col">
                <!-- 面包屑导航 -->
                <BreadCrumb routes={getAllRoutes} {activeRoute} {activeRootRoute} />
                
                <!-- 主内容区 -->
                <Scrollbar autohide gap={2}>
                    <div class="sv__main-wrapper">
                        <slot />
                    </div>
                </Scrollbar>
            </div>
        </div>
    </div>
</div>

 Svelte-UI高颜值组件库

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

 

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

错误页处理

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

<script>
    import { page } from '$app/stores'
    import { goto } from '$app/navigation'
    import { Button } from '$lib/svelte-ui'

    function goHome() {
        goto('/home/index')
    }
</script>

<svelte:head>
    <title>{$page.status} Error!</title>
</svelte:head>

<div class="svadmin__pageErr flexbox flex-col flex-alignc flex-justifyc">
    <div class="svadmin__pageErr-img"><i class="sv-icon-round_close_fill_light"></i></div>
    <div class="svadmin__pageErr-content">
        <div class="c-red fs-18">┗| {$page.status} |┛  Page Error~~</div>
        <div class="c-999 mt-10 mb-10">{$page.error.message}</div>
        <Button size="small" on:click={goHome}>Go Home</Button>
    </div>
</div>

Svelte自定义路由菜单

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

<Menu
    class="svadmin__menu-list"
    data={getNewRoutes}
    active={activeRoute}
    trigger="click"
    collapse={collapsed}
    backgroundHover="#e2f2ff"
>
    {#each getNewRoutes as route}
        <svelte:component this={routeMenuItem} item={route} {activeRootRoute} {rootRouteEnable} />
    {/each}
</Menu>
<!-- 二级菜单 -->
<script>
    import { goto } from '$app/navigation'
    import { _ } from 'svelte-i18n'

    import { Menu, MenuItem, MenuSub } from '$lib/svelte-ui'
    import routeMenuItem from './routeMenuItem.svelte'

    import utils from '@/utils'
    import { getCurrentRootRoute, hasChildrenRoute } from '@/utils/routes'

    export let item = []
    // 根菜单
    export let activeRootRoute = ''
    // 是否开启一级路由菜单
    export let rootRouteEnable = true

    function changeRoute(path) {
        if(utils.isExternal(path)) {
            window.open(path, '_blank')
        }else {
            goto(path)
        }
    }
</script>

{#if !item.meta.hidden}
    {#if activeRootRoute !== getCurrentRootRoute(item) && rootRouteEnable === true}
    <div></div>
    {:else}
        {#if item.children && Array.isArray(item.children) && hasChildrenRoute(item.children)}
            <MenuSub key={item.key}>
                <span slot="icon"><i class={item.meta.icon}></i></span>
                <div slot="title">{$_(`menu.${item.meta.title}`)}</div>

                {#each item.children || [] as route2}
                <svelte:component this={routeMenuItem} item={route2} {activeRootRoute} {rootRouteEnable} />
                {/each}
            </MenuSub>
        {:else}
            <MenuItem key={item.key} title={$_(`menu.${item.meta.title}`)} on:click={changeRoute(item.path)}></MenuItem>
        {/if}
    {/if}
{/if}

svelte-admin国际化解决方案

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

 

import { addMessages, init, getLocaleFromNavigator } from 'svelte-i18n'
import { browser } from '$app/env'
import Storage from '@/utils/storage'

// 引入语言配置
import cn from '@/locale/zh-CN'
import tw from '@/locale/zh-TW'
import en from '@/locale/en-US'

export const langKey = 'lang'
export const langVal = 'cn'

addMessages('cn', cn)
addMessages('tw', tw)
addMessages('en', en)

const lang = getLang()
console.log('当前国际化:', lang)
init({
    fallbackLocale: lang,
    initialLocale: getLocaleFromNavigator()
})
setHtmlLang(lang)

/* 获取语言 */
export function getLang() {
    const lang = Storage.get(langKey)
    return lang || langVal
}

/* 持久化存储 */
export function setLang(lang, reload = false) {
    if(lang != getLang()) {
        Storage.set(langKey, lang || '')
        setHtmlLang(lang)

        // 重载页面
        if(reload) {
            window.location.reload()
        }
    }
}

 

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

最后附上两个项目实例

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

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

Svelte-routing 是一个基于 Svelte 的轻量级路由库,它提供了基本的路由功能,包括路由参数、嵌套路由、重定向等特性。使用 Svelte-routing 非常简单,你可以按照以下步骤进行配置: 1. 安装 Svelte-routing 你可以使用 npm 或 yarn 安装 Svelte-routing: ``` npm install --save svelte-routing ``` 或 ``` yarn add svelte-routing ``` 2. 导入 Router 和 Route 组件 在 Svelte 应用,你需要使用 Router 和 Route 组件来定义路由规则。你可以在需要使用路由的组件导入这两个组件: ```js import { Router, Route } from 'svelte-routing'; ``` 3. 定义路由规则 使用 Router 和 Route 组件,你可以定义应用的路由规则。例如,你可以在 App.svelte 文件定义两个路由规则,分别对应着应用的 / 和 /about 路径: ```html <Router> <Route path="/" component={Home} /> <Route path="/about" component={About} /> </Router> ``` 在这个例子,Home 和 About 分别是两个 Svelte 组件,它们会在对应的路由被匹配时被渲染。 4. 使用路由参数 Svelte-routing 支持路由参数,你可以在路由规则使用冒号(:)来定义动态参数。例如,你可以定义一个 /user/:id 路径,其 :id 表示一个动态参数。当用户访问 /user/123 时,Svelte-routing 会自动将参数传递给对应的组件。你可以在组件使用 $routeParams.id 来获取该参数。例如: ```html <!-- 定义路由规则 --> <Route path="/user/:id" component={User} /> <!-- User 组件获取参数 --> <script> export let $routeParams; console.log($routeParams.id); </script> ``` 5. 使用重定向 Svelte-routing 还支持重定向功能,你可以在路由规则使用 redirect 属性来实现重定向。例如,你可以将 /about 路径重定向到 /about-us 路径: ```html <Route path="/about" redirect="/about-us" /> ``` 以上就是使用 Svelte-routing 实现基本路由功能的步骤。Svelte-routing 还支持嵌套路由、路由守卫等高级功能,你可以查阅官方文档来学习更多内容。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoyan_2018

你的鼓励将是我持续作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值