国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

這篇具有很好參考價值的文章主要介紹了Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

基于tauri+vite4+pinia2跨端后臺管理系統(tǒng)應(yīng)用實例TauriAdmin。

tauri-admin 基于最新跨端技術(shù)?Tauri Rust webview2?整合?Vite4?構(gòu)建桌面端通用后臺管理解決方案。搭載輕量級ve-plus組件庫、支持多窗口切換管理、vue-i18n多語言包、動態(tài)路由權(quán)限、常用業(yè)務(wù)功能模塊、3種布局模板及動態(tài)路由緩存等功能。

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

使用技術(shù)

  • 編碼工具:vscode
  • 框架技術(shù):tauri+vite^4.2.1+vue^3.2.45+pinia+vue-router
  • UI組件庫:ve-plus (基于vue3輕量級UI組件庫)
  • 樣式處理:sass^1.63.6
  • 圖表組件:echarts^5.4.2
  • 國際化方案:vue-i18n^9.2.2
  • 編輯器組件:wangeditor^4.7.15
  • 持久化緩存:pinia-plugin-persistedstate^3.1.0

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

目前tauri已經(jīng)迭代到1.4,如果大家對tauri+vue3創(chuàng)建多窗口項目感興趣,可以去看看之前的這篇分享文章。

https://www.cnblogs.com/xiaoyan2017/p/16812092.html

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

功能特性

  1. 使用跨端技術(shù)tauri1.4
  2. 最新前端技術(shù)棧vite4、vue3、pinia、vue-router、vue-i18n
  3. 支持中文/英文/繁體多語言解決方案
  4. 支持動態(tài)路由權(quán)限驗證
  5. 支持路由緩存功能/tabs控制切換路由頁面
  6. 內(nèi)置多個模板布局風格
  7. 搭配輕量級vue3組件庫veplus
  8. 高效開發(fā),支持增刪定制化頁面模塊

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

項目結(jié)構(gòu)

使用tauri腳手架搭配vite4構(gòu)建項目,整體采用vue3 setup語法編碼開發(fā)。

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

主入口main.js

import { createApp } from "vue"
import "./styles.scss"
import App from "./App.vue"

// 引入路由及狀態(tài)管理
import Router from './router'
import Pinia from './pinia'

// 引入插件配置
import Libs from './libs'

const app = createApp(App)

app
.use(Router)
.use(Pinia)
.use(Libs)
.mount("#app")

Tauri-Admin布局模板

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

提供了三種常見的布局模板,大家也可以定制喜歡的模板樣式。

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

<script setup>
    import { computed } from 'vue'
    import { appStore } from '@/pinia/modules/app'

    // 引入布局模板
    import Columns from './template/columns/index.vue'
    import Vertical from './template/vertical/index.vue'
    import Transverse from './template/transverse/index.vue'

    const store = appStore()
    const config = computed(() => store.config)

    const LayoutConfig = {
        columns: Columns,
        vertical: Vertical,
        transverse: Transverse
    }
</script>

<template>
    <div class="veadmin__container" :style="{'--themeSkin': store.config.skin}">
        <component :is="LayoutConfig[config.layout]" />
    </div>
</template>

路由/pinia狀態(tài)管理

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

如上圖:配置router路由信息。

/**
 * 路由配置
 * @author YXY    Q:282310962
 */

import { appWindow } from '@tauri-apps/api/window'
import { createRouter, createWebHistory } from 'vue-router'
import { appStore } from '@/pinia/modules/app'
import { hasPermission } from '@/hooks/usePermission'
import { loginWin } from '@/multiwins/actions'

// 批量導入modules路由
const modules = import.meta.glob('./modules/*.js', { eager: true })
const patchRoutes = Object.keys(modules).map(key => modules[key].default).flat()

/**
 * @description 動態(tài)路由參數(shù)配置
 * @param path ==> 菜單路徑
 * @param redirect ==> 重定向地址
 * @param component ==> 視圖文件路徑
 * 菜單信息(meta)
 * @param meta.icon ==> 菜單圖標
 * @param meta.title ==> 菜單標題
 * @param meta.activeRoute ==> 路由選中(默認空 route.path)
 * @param meta.rootRoute ==> 所屬根路由選中(默認空)
 * @param meta.roles ==> 頁面權(quán)限 ['admin', 'dev', 'test']
 * @param meta.breadcrumb ==> 自定義面包屑導航 [{meta:{...}, path: '...'}]
 * @param meta.isAuth ==> 是否需要驗證
 * @param meta.isHidden ==> 是否隱藏頁面
 * @param meta.isFull ==> 是否全屏頁面
 * @param meta.isKeepAlive ==> 是否緩存頁面
 * @param meta.isAffix ==> 是否固定標簽(tabs標簽欄不能關(guān)閉)
 * */
const routes = [
    // 首頁
    {
        path: '/',
        redirect: '/home'
    },
    // 錯誤模塊
    {
        path: '/:pathMatch(.*)*',
        component: () => import('@views/error/404.vue'),
        meta: {
            title: 'page__error-notfound'
        }
    },
    ...patchRoutes
]

const router = createRouter({
    history: createWebHistory(),
    routes
})

// 全局鉤子攔截
router.beforeEach((to, from, next) => {
    // 開啟加載提示
    loading({
        text: 'Loading...',
        background: 'rgba(70, 255, 170, .1)',
        onOpen: () => {
            console.log('開啟loading')
        },
        onClose: () => {
            console.log('關(guān)閉loading')
        }
    })
    
    const store = appStore()
    if(to?.meta?.isAuth && !store.isLogged) {
        loginWin()
        loading.close()
    }else if(!hasPermission(store.roles, to?.meta?.roles)) {
        // 路由鑒權(quán)
        appWindow?.show()
        next('/error/forbidden')
        loading.close()
        Notify({
            title: '訪問限制!',
            description: `<span style="color: #999;">當前登錄角色 ${store.roles} 沒有操作權(quán)限,請聯(lián)系管理員授權(quán)后再操作。</div>`,
            type: 'danger',
            icon: 've-icon-unlock',
            time: 10
        })
    }else {
        appWindow?.show()
        next()
    }
})

router.afterEach(() => {
    loading.close()
})

router.onError(error => {
    loading.close()
    console.warn('Router Error》》', error.message);
})

export default router

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

如上圖:vue3項目搭配pinia進行狀態(tài)管理。

/**
 * 狀態(tài)管理 Pinia util
 * @author YXY
 */

import { createPinia } from 'pinia'
// 引入pinia本地持久化存儲
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'

const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)

export default pinia

自定義路由菜單

項目中的三種模板提供了不同的路由菜單。均是基于Menu組件封裝的RouteMenu菜單。

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

<script setup>
  import { ref, computed, h, watch, nextTick } from 'vue'
  import { useI18n } from 'vue-i18n'
  import { Icon, useLink } from 've-plus'
  import { useRoutes } from '@/hooks/useRoutes'
  import { appStore } from '@/pinia/modules/app'

  // 引入路由集合
  import mainRoutes from '@/router/modules/main.js'

  const props = defineProps({
    // 菜單模式(vertical|horizontal)
    mode: { type: String, default: 'vertical' },
    // 是否開啟一級路由菜單
    rootRouteEnable: { type: Boolean, default: true },
    // 是否要收縮
    collapsed: { type: Boolean, default: false },

    // 菜單背景色
    background: { type: String, default: 'transparent' },
    // 滑過背景色
    backgroundHover: String,
    // 菜單文字顏色
    color: String,
    // 菜單激活顏色
    activeColor: String
  })

  const { t } = useI18n()
  const { jumpTo } = useLink()
  const { route, getActiveRoute, getCurrentRootRoute, getTreeRoutes } = useRoutes()
  const store = appStore()

  const rootRoute = computed(() => getCurrentRootRoute(route))
  const activeKey = ref(getActiveRoute(route))
  const menuOptions = ref(getTreeRoutes(mainRoutes))
  const menuFilterOptions = computed(() => {
    if(props.rootRouteEnable) {
      return menuOptions.value
    }
    // 過濾掉一級菜單
    return menuOptions.value.find(item => item.path == rootRoute.value && item.children)?.children
  })

  watch(() => route.path, () => {
    nextTick(() => {
      activeKey.value = getActiveRoute(route)
    })
  })

  // 批量渲染圖標
  const batchRenderIcon = (option) => {
    return h(Icon, {name: option?.meta?.icon ?? 've-icon-verticleleft'})
  }

  // 批量渲染標題
  const batchRenderLabel = (option) => {
    return t(option?.meta?.title)
  }

  // 路由菜單更新
  const handleUpdate = ({key}) => {
    jumpTo(key)
  }
</script>

<template>
  <Menu
    class="veadmin__menus"
    v-model="activeKey"
    :options="menuFilterOptions"
    :mode="mode"
    :collapsed="collapsed && store.config.collapse"
    iconSize="18"
    key-field="path"
    :renderIcon="batchRenderIcon"
    :renderLabel="batchRenderLabel"
    :background="background"
    :backgroundHover="backgroundHover"
    :color="color"
    :activeColor="activeColor"
    @change="handleUpdate"
    style="border: 0;"
  />
</template>

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE?Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Menu組件支持橫向/豎向排列,調(diào)用非常簡單。

<RouteMenu
    :rootRouteEnable="false"
    backgroundHover="#f1f8fb"
    activeColor="#24c8db"
/>

<RouteMenu
    rootRouteEnable
    collapsed
    background="#193c47"
    backgroundHover="#1a5162"
    color="rgba(235,235,235,.7)"
    activeColor="#24c8db"
    :collapsedIconSize="20"
/>

<RouteMenu
    mode="horizontal"
    background="#193c47"
    backgroundHover="#1a5162"
    color="rgba(235,235,235,.7)"
    activeColor="#24c8db"
    arrowIcon="ve-icon-caretright"
/>

tauri-admin多語言配置

tauri-vue3-admin項目使用vue-i18n進行多語言處理。

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

import { createI18n } from 'vue-i18n'
import { appStore } from '@/pinia/modules/app'

// 引入語言配置
import enUS from './en-US'
import zhCN from './zh-CN'
import zhTW from './zh-TW'

// 默認語言
export const langVal = 'zh-CN'

export default async (app) => {
    const store = appStore()
    const lang = store.lang || langVal

    const i18n = createI18n({
        legacy: false,
        locale: lang,
        messages: {
            'en': enUS,
            'zh-CN': zhCN,
            'zh-TW': zhTW
        }
    })
    
    app.use(i18n)
}

路由緩存功能

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

項目支持配置路由頁面緩存功能??梢栽谌謕inia/modules/app.js中配置,也可以在router配置項meta中配置isKeepAlive: true。

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

<template>
  <div v-if="app.config.tabsview" class="veadmin__tabsview">
    <Scrollbar ref="scrollbarRef" mousewheel>
      <ul class="tabview__wrap">
        <li
          v-for="(tab,index) in tabOptions" :key="index"
          :class="{'actived': tabKey == tab.path}"
          @click="changeTab(tab)"
          @contextmenu.prevent="openContextMenu(tab, $event)"
        >
          <Icon class="tab-icon" :name="tab.meta?.icon" />
          <span class="tab-title">{{$t(tab.meta?.title)}}</span>
          <Icon v-if="!tab.meta?.isAffix" class="tab-close" name="ve-icon-close" size="12" @click.prevent.stop="closeTab(tab)" />
        </li>
      </ul>
    </Scrollbar>
  </div>
  <!-- 右鍵菜單 -->
  <Dropdown
    ref="contextmenuRef"
    trigger="manual"
    :options="contextmenuOptions"
    fixed="true"
    :render-label="handleRenderLabel"
    @change="changeContextMenu"
    style="height: 0;"
  />
</template>

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

import { ref, nextTick } from 'vue'
import { useRoute } from 'vue-router'
import { defineStore } from 'pinia'
import { appStore } from '@/pinia/modules/app'

export const tabsStore = defineStore('tabs', () => {
        const currentRoute = useRoute()
        const store = appStore()

        /*state*/
        const tabViews = ref([]) // 標簽欄列表
        const cacheViews = ref([]) // 緩存列表
        const reload = ref(true) // 刷新標識

        // 判斷tabViews某個路由是否存在
        const tabIndex = (route) => {
            return tabViews.value.findIndex(item => item?.path === route?.path)
        }

        /*actions*/
        // 新增標簽
        const addTabs = (route) => {
            const index = tabIndex(route)
            if(index > -1) {
                tabViews.value.map(item => {
                    if(item.path == route.path) {
                        // 當前路由緩存
                        return Object.assign(item, route)
                    }
                })
            }else {
                tabViews.value.push(route)
            }

            // 更新keep-alive緩存
            updateCacheViews()
        }

        // 移除標簽
        const removeTabs = (route) => {
            const index = tabIndex(route)
            if(index > -1) {
                tabViews.value.splice(index, 1)
            }

            // 更新keep-alive緩存
            updateCacheViews()
        }

        // 移除左側(cè)標簽
        const removeLeftTabs = (route) => {
            const index = tabIndex(route)
            if(index > -1) {
                tabViews.value = tabViews.value.filter((item, i) => item?.meta?.isAffix || i >= index)
            }

            // 更新keep-alive緩存
            updateCacheViews()
        }

        // 移除右側(cè)標簽
        const removeRightTabs = (route) => {
            const index = tabIndex(route)
            if(index > -1) {
                tabViews.value = tabViews.value.filter((item, i) => item?.meta?.isAffix || i <= index)
            }

            // 更新keep-alive緩存
            updateCacheViews()
        }

        // 移除其它標簽
        const removeOtherTabs = (route) => {
            tabViews.value = tabViews.value.filter(item => item?.meta?.isAffix || item?.path === route?.path)

            // 更新keep-alive緩存
            updateCacheViews()
        }

        // 移除所有標簽
        const clearTabs = () => {
            tabViews.value = tabViews.value.filter(item => item?.meta?.isAffix)

            // 更新keep-alive緩存
            updateCacheViews()
        }

        // 更新keep-alive緩存
        const updateCacheViews = () => {
            cacheViews.value = tabViews.value.filter(item => store.config.keepAlive || item?.meta?.isKeepAlive).map(item => item.name)
            console.log('cacheViews緩存路由>>:', cacheViews.value)
        }

        // 移除keep-alive緩存
        const removeCacheViews = (route) => {
            cacheViews.value = cacheViews.value.filter(item => item !== route?.name)
        }

        // 刷新路由
        const reloadTabs = () => {
            removeCacheViews(currentRoute)
            reload.value = false
            nextTick(() => {
                updateCacheViews()
                reload.value = true
                document.documentElement.scrollTo({ left: 0, top: 0 })
            })
        }

        // 清空緩存
        const clear = () => {
            tabViews.value = []
            cacheViews.value = []
        }

        return {
            tabViews,
            cacheViews,
            reload,

            addTabs,
            removeTabs,
            removeLeftTabs,
            removeRightTabs,
            removeOtherTabs,
            clearTabs,
            reloadTabs,
            clear
        }
    },
    // 本地持久化存儲(默認存儲localStorage)
    {
        // persist: true
        persist: {
            // key: 'tabsState',
            storage: localStorage,
            paths: ['tabViews', 'cacheViews']
        }
    }
)

tauri.conf.json配置

{
  "build": {
    "beforeDevCommand": "yarn dev",
    "beforeBuildCommand": "yarn build",
    "devPath": "http://localhost:1420",
    "distDir": "../dist",
    "withGlobalTauri": false
  },
  "package": {
    "productName": "tauri-admin",
    "version": "0.0.0"
  },
  "tauri": {
    "allowlist": {
      "all": true,
      "shell": {
        "all": false,
        "open": true
      }
    },
    "bundle": {
      "active": true,
      "targets": "all",
      "identifier": "com.tauri.admin",
      "icon": [
        "icons/32x32.png",
        "icons/128x128.png",
        "icons/128x128@2x.png",
        "icons/icon.icns",
        "icons/icon.ico"
      ]
    },
    "security": {
      "csp": null
    },
    "windows": [
      {
        "fullscreen": false,
        "resizable": true,
        "title": "tauri-admin",
        "width": 1000,
        "height": 640,
        "center": true,
        "decorations": false,
        "fileDropEnabled": false,
        "visible": false
      }
    ],
    "systemTray": {
      "iconPath": "icons/icon.ico",
      "iconAsTemplate": true,
      "menuOnLeftClick": false
    }
  }
}

Cargo.toml配置

[package]
name = "tauri-admin"
version = "0.0.0"
description = "基于tauri+vue3+vite4+pinia輕量級桌面端后臺管理Tauri-Admin"
authors = "andy <282310962@qq.com>"
license = ""
repository = ""
edition = "2023"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[build-dependencies]
tauri-build = { version = "1.4", features = [] }

[dependencies]
tauri = { version = "1.4", features = ["api-all", "icon-ico", "icon-png", "system-tray"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"

[features]
# this feature is used for production builds or when `devPath` points to the filesystem
# DO NOT REMOVE!!
custom-protocol = ["tauri/custom-protocol"]

OK,基于tauri+vue3跨端后臺管理系統(tǒng)就分享到這里。希望對大家有所幫助哈~~

最后附上兩個最新開發(fā)的Electron和uniapp跨端項目實例

https://www.cnblogs.com/xiaoyan2017/p/17468074.html

https://www.cnblogs.com/xiaoyan2017/p/17507581.html

Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE

?文章來源地址http://www.zghlxwxcb.cn/news/detail-556595.html

到了這里,關(guān)于Tauri-Admin通用后臺管理系統(tǒng)|tauri+vue3+pinia桌面端后臺EXE的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Vite-Admin后臺管理系統(tǒng)|vite4+vue3+pinia前端后臺框架實例

    Vite-Admin后臺管理系統(tǒng)|vite4+vue3+pinia前端后臺框架實例

    基于 vite4.x+vue3+pinia 前端后臺管理系統(tǒng)解決方案 ViteAdmin 。 前段時間分享了一篇vue3自研pc端UI組件庫VEPlus。這次帶來最新開發(fā)的基于 vite4+vue3+pinia 技術(shù)棧搭配ve-plus組件庫構(gòu)建的中后臺權(quán)限管理系統(tǒng)框架。 支持vue-i18n國際化多語言、動態(tài)路由鑒權(quán)、4種布局模板及tab頁面緩存 等功

    2023年04月13日
    瀏覽(27)
  • Axure RP中后臺管理系統(tǒng)通用原型模板

    Axure RP中后臺管理系統(tǒng)通用原型模板

    Axure RP中后臺管理系統(tǒng)通用原型方案 v2是一套通用型的中后臺信息系統(tǒng)原型方案,可以快速擴展并輸出標準美觀的中后臺產(chǎn)品原型,極大的提升輸出效率和節(jié)省協(xié)作成本。方案中提供了幾十套不同風格和結(jié)構(gòu)的系統(tǒng)框架,并涵蓋了大量的常用組件和通用頁面模板,可以滿足各

    2024年02月11日
    瀏覽(16)
  • 從0到1:通用后臺管理系統(tǒng)(二)環(huán)境配置

    項目的接口文檔 https://apifox.com/apidoc/shared-5a53a935-41de-43d0-9bd7-272baf4f7fc6 下面是安裝后端基本環(huán)境 一、安裝node https://nodejs.cn/download/ 點擊下載對應(yīng)的版本 安裝完后在控制臺輸入node - v可查看是否安裝成功 二、下載hbuilderX編輯器 https://www.dcloud.io/hbuilderx.html 三、安裝node項目 hbui

    2024年02月11日
    瀏覽(14)
  • 【vue后臺管理系統(tǒng)】基于Vue+Element-UI+ECharts開發(fā)通用管理后臺(中)

    【vue后臺管理系統(tǒng)】基于Vue+Element-UI+ECharts開發(fā)通用管理后臺(中)

    點擊菜單圖標之前: 點擊菜單圖標之后: 首先我們要知道菜單欄的收縮,由el-menu的collapse屬性控制: 我們通過分析可以知道: 菜單按鈕的點擊是在CommonHeader.vue組件中,而我們修改的collapse屬性卻在CommonAside.vue中,這是兩個不同的組件。很明顯這涉及到了組件間的通信問題,

    2024年02月03日
    瀏覽(62)
  • vue-element-admin:基于element-ui 的一套后臺管理系統(tǒng)集成方案

    vue-element-admin:基于element-ui 的一套后臺管理系統(tǒng)集成方案

    1.1簡介 vue-element-admin是基于element-ui 的一套后臺管理系統(tǒng)集成方案。 GitHub地址:https://github.com/PanJiaChen/vue-element-admin 項目在線預(yù)覽:https://panjiachen.gitee.io/vue-element-admin 1.2安裝 如果上面的install報錯 則先執(zhí)行下面的命令,再install 2.1簡介 vueAdmin-template是基于vue-element-admin的一套

    2023年04月16日
    瀏覽(31)
  • ELADMIN - 免費開源 admin 后臺管理系統(tǒng),基于 Spring Boot 和 Vue ,包含前端和后端源碼

    ELADMIN - 免費開源 admin 后臺管理系統(tǒng),基于 Spring Boot 和 Vue ,包含前端和后端源碼

    一款簡單好用、功能強大的 admin 管理系統(tǒng),包含前端和后端源碼,分享給大家。 ELADMIN?是一款基于 Spring Boot、Jpa 或 Mybatis-Plus、 Spring Security、Redis、Vue 的前后端分離的后臺管理系統(tǒng)。 ELADMIN 的作者在 Github 和 Gitee 上看了很多的項目,發(fā)現(xiàn)大多數(shù)都是基于 Mybatis , 而基于 Sp

    2024年02月04日
    瀏覽(29)
  • 基于VUE3+Layui從頭搭建通用后臺管理系統(tǒng)(前端篇)十一:通用表單組件封裝實現(xiàn)

    基于VUE3+Layui從頭搭建通用后臺管理系統(tǒng)(前端篇)十一:通用表單組件封裝實現(xiàn)

    ??本章實現(xiàn)通用表單組件,根據(jù)實體配置識別實體屬性,并自動生成編輯組件,實現(xiàn)對應(yīng)數(shù)據(jù)填充、校驗及保存等邏輯。 1. 詳細課程地址: https://edu.csdn.net/course/detail/38183 2. 源碼下載地址: 點擊下載

    2024年02月10日
    瀏覽(29)
  • 從零開發(fā)一個自己的Shiro+Vue通用后臺管理系統(tǒng)(附源碼)

    從零開發(fā)一個自己的Shiro+Vue通用后臺管理系統(tǒng)(附源碼)

    分享一個基于Shiro和Vue構(gòu)建的通用后臺管理系統(tǒng)項目,該項目實現(xiàn)了jwt無狀態(tài)登錄、redis緩存、token續(xù)期和可控權(quán)限管理。

    2024年02月06日
    瀏覽(20)
  • Adobe Axure RP中后臺管理系統(tǒng)全套通用交互原型設(shè)計模板

    Adobe Axure RP中后臺管理系統(tǒng)全套通用交互原型設(shè)計模板

    最近一直很多中后臺模板解決方案,但他們都是怎么做的呢,一般是先用Axure RP做成原形交互,保存后臺交互UI統(tǒng)一性和交互一致性,再前端工程師,特別是Vue中后臺很多開源的,如果你也是一位產(chǎn)品經(jīng)理或交互設(shè)計師,這套Axure RP中后臺管理系統(tǒng)全套通用原型模板很適合,可

    2024年02月15日
    瀏覽(23)
  • 【前端】Vue+Element UI案例:通用后臺管理系統(tǒng)-面包屑、tag欄

    【前端】Vue+Element UI案例:通用后臺管理系統(tǒng)-面包屑、tag欄

    參考視頻: VUE項目,VUE項目實戰(zhàn),vue后臺管理系統(tǒng),前端面試,前端面試項目 案例 鏈接 【前端】Vue+Element UI案例:通用后臺管理系統(tǒng)-導航欄(視頻p1-16) https://blog.csdn.net/karshey/article/details/127640658 【前端】Vue+Element UI案例:通用后臺管理系統(tǒng)-Header+導航欄折疊(p17-19) http

    2024年02月09日
    瀏覽(63)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包