PageSourceSearch

https://gowind.cloud/admin/intro.html

html gowind.cloud collected 2026-10-05 22:12:08 UTC 61,248 bytes, 131 lines download raw bytes

1<!doctype html>
2<html lang="en-US">
3  <head>
4    <meta charset="utf-8" />
5    <meta name="viewport" content="width=device-width,initial-scale=1" />
6    <meta name="generator" content="VuePress 2.0.0-rc.20" />
7    <style>
8      :root {
9        --vp-c-bg: #fff;
10      }
11
12      [data-theme='dark'] {
13        --vp-c-bg: #1b1b1f;
14      }
15
16      html,
17      body {
18        background-color: var(--vp-c-bg);
19      }
20    </style>
21    
21<script>
22      const useChoice = localStorage.getItem('vuepress-color-scheme')
23      const systemStatus =
24        'matchMedia' in window
25          ? window.matchMedia('(prefers-color-scheme: dark)').matches
26          : false
27
28      if (useChoice === 'light') {
29        document.documentElement.dataset.theme = 'light'
30      } else if (useChoice === 'dark' || systemStatus) {
31        document.documentElement.dataset.theme = 'dark'
32      }
33    </script>
33
34    <title>GoWind Admin 产品介绍 | GoWind 开源生态</title><meta name="description" content="一站式 GoWind 系列开源项目文档与使用指南">
35    <link rel="preload" href="/assets/style-Bs0G1tvg.css" as="style"><link rel="stylesheet" href="/assets/style-Bs0G1tvg.css">
36    <link rel="modulepreload" href="/assets/app-B7HVJ7q3.js"><link rel="modulepreload" href="/assets/intro.html-B0Ozup5m.js">
37    <link rel="prefetch" href="/assets/index.html-B8UAfAQs.js" as="script"><link rel="prefetch" href="/assets/backend-api.html-De6K5Ezp.js" as="script"><link rel="prefetch" href="/assets/backend-architecture.html-DFDGrCHn.js" as="script"><link rel="prefetch" href="/assets/backend-config-deploy.html-2QVCJ2LI.js" as="script"><link rel="prefetch" href="/assets/backend-extension.html-DCcFFEwJ.js" as="script"><link rel="prefetch" href="/assets/backend-modules.html-CKYR5LNG.js" as="script"><link rel="prefetch" href="/assets/backend-tutorial-new-module.html-CerawCvH.js" as="script"><link rel="prefetch" href="/assets/frontend-architecture.html-D60icPT0.js" as="script"><link rel="prefetch" href="/assets/frontend-modules.html-BbxGBSZC.js" as="script"><link rel="prefetch" href="/assets/frontend-tutorial-new-page.html-BXJ0xHF1.js" as="script"><link rel="prefetch" href="/assets/installation.html-cedrJdX2.js" as="script"><link rel="prefetch" href="/assets/tutorial-crypto-toolkit.html-Dlo3jn09.js" as="script"><link rel="prefetch" href="/assets/tutorial-eventbus-architecture.html-Dr5lFyBA.js" as="script"><link rel="prefetch" href="/assets/tutorial-file-storage.html-ZeJ3T1Ck.js" as="script"><link rel="prefetch" href="/assets/tutorial-fullstack-integration.html-1AocH_LI.js" as="script"><link rel="prefetch" href="/assets/tutorial-login-security.html-Clv68aIU.js" as="script"><link rel="prefetch" href="/assets/tutorial-lua-extension.html-DsxAHloK.js" as="script"><link rel="prefetch" href="/assets/tutorial-multi-tenancy.html-BJuUatFo.js" as="script"><link rel="prefetch" href="/assets/tutorial-performance-monitoring.html-DO5mzFqd.js" as="script"><link rel="prefetch" href="/assets/tutorial-permission-system.html-BWnHgXKT.js" as="script"><link rel="prefetch" href="/assets/tutorial-sse-push.html-V9dG7ODr.js" as="script"><link rel="prefetch" href="/assets/tutorial-task-scheduling.html-CBwlecGX.js" as="script"><link rel="prefetch" href="/assets/tutorial-theme-i18n.html-BmRHAgqX.js" as="script"><link rel="prefetch" href="/assets/installation.html-MF1JFwbt.js" as="script"><link rel="prefetch" href="/assets/intro.html-TWN-9ep4.js" as="script"><link rel="prefetch" href="/assets/installation.html-C4fvcZHH.js" as="script"><link rel="prefetch" href="/assets/intro.html-XR_nTTO7.js" as="script"><link rel="prefetch" href="/assets/contribution.html-DtEFhDqC.js" as="script"><link rel="prefetch" href="/assets/faq.html-B1niEzme.js" as="script"><link rel="prefetch" href="/assets/getting-started.html-DB6c9OOX.js" as="script"><link rel="prefetch" href="/assets/backend-api.html-CmlOOsHn.js" as="script"><link rel="prefetch" href="/assets/backend-architecture.html-DQyQRmEM.js" as="script"><link rel="prefetch" href="/assets/backend-config-deploy.html-CDIJVjzA.js" as="script"><link rel="prefetch" href="/assets/backend-extension.html-CV6uhTgh.js" as="script"><link rel="prefetch" href="/assets/backend-modules.html-BMOw9WT0.js" as="script"><link rel="prefetch" href="/assets/frontend-architecture.html-BBR4BE7M.js" as="script"><link rel="prefetch" href="/assets/frontend-modules.html-mCBhoNQI.js" as="script"><link rel="prefetch" href="/assets/installation.html-BaQEqgv6.js" as="script"><link rel="prefetch" href="/assets/intro.html-BLICZj2H.js" as="script"><link rel="prefetch" href="/assets/tutorial-codegen.html-4RYnovmS.js" as="script"><link rel="prefetch" href="/assets/tutorial-comment-system.html-DeJIq8LR.js" as="script"><link rel="prefetch" href="/assets/tutorial-content-i18n.html-uoeraLwL.js" as="script"><link rel="prefetch" href="/assets/tutorial-content-workflow.html-BHrB1fTd.js" as="script"><link rel="prefetch" href="/assets/tutorial-crypto-toolkit.html-BqwnwFXn.js" as="script"><link rel="prefetch" href="/assets/tutorial-deploy.html-DCBQHxCO.js" as="script"><link rel="prefetch" href="/assets/tutorial-dict-system.html-B3IvY6ro.js" as="script"><link rel="prefetch" href="/assets/tutorial-eventbus-architecture.html-DRXoy7nu.js" as="script"><link rel="prefetch" href="/assets/tutorial-frontend-app.html-CM91geCK.js" as="script"><link rel="prefetch" href="/assets/tutorial-fullstack-integration.html-senKeuaq.js" as="script"><link rel="prefetch" href="/assets/tutorial-headless-api.html-D2dg7wjW.js" as="script"><link rel="prefetch" href="/assets/tutorial-login-security.html-DhndKlxz.js" as="script"><link rel="prefetch" href="/assets/tutorial-lua-extension.html-nzxWXvks.js" as="script"><link rel="prefetch" href="/assets/tutorial-media-asset.html-DfXbKzpx.js" as="script"><link rel="prefetch" href="/assets/tutorial-multi-site.html-DjJKb8yV.js" as="script"><link rel="prefetch" href="/assets/tutorial-new-content.html-hCpu7FaO.js" as="script"><link rel="prefetch" href="/assets/tutorial-performance-monitoring.html-CbsQzUEi.js" as="script"><link rel="prefetch" href="/assets/tutorial-permission-system.html-Wf3tFDf2.js" as="script"><link rel="prefetch" href="/assets/tutorial-search.html-Mhw6o_-h.js" as="script"><link rel="prefetch" href="/assets/tutorial-section-editor.html-BA7L21n6.js" as="script"><link rel="prefetch" href="/assets/tutorial-sse-push.html-D2gLYbhO.js" as="script"><link rel="prefetch" href="/assets/tutorial-task-scheduling.html-CtS8Ct6x.js" as="script"><link rel="prefetch" href="/assets/architecture.html-CdvqN7ZY.js" as="script"><link rel="prefetch" href="/assets/intro.html-UXdLm_5L.js" as="script"><link rel="prefetch" href="/assets/strategies.html-CyiMI53u.js" as="script"><link rel="prefetch" href="/assets/architecture.html-BmuyxXlX.js" as="script"><link rel="prefetch" href="/assets/bootstrap-cli.html-BygfWRBx.js" as="script"><link rel="prefetch" href="/assets/bootstrap-config.html-Qp00zBVb.js" as="script"><link rel="prefetch" href="/assets/bootstrap-examples.html-DWnSCEGw.js" as="script"><link rel="prefetch" href="/assets/bootstrap-intro.html-CQrx8Cxq.js" as="script"><link rel="prefetch" href="/assets/bootstrap-middleware.html-BKb-GwEL.js" as="script"><link rel="prefetch" href="/assets/bootstrap-spi.html-DODjJ3tQ.js" as="script"><link rel="prefetch" href="/assets/core-context.html-Cu44yI-s.js" as="script"><link rel="prefetch" href="/assets/core-intro.html-cS-EQe1S.js" as="script"><link rel="prefetch" href="/assets/core-lifecycle.html-DXfRnZ1-.js" as="script"><link rel="prefetch" href="/assets/core-logging.html-DGcFSiLB.js" as="script"><link rel="prefetch" href="/assets/core-transport.html-DRZFwBFN.js" as="script"><link rel="prefetch" href="/assets/intro.html-C2z32UF3.js" as="script"><link rel="prefetch" href="/assets/plugins-ai.html-BLvKW08p.js" as="script"><link rel="prefetch" href="/assets/plugins-broker.html-DkHHwAgn.js" as="script"><link rel="prefetch" href="/assets/plugins-cache.html-BPLwQXnG.js" as="script"><link rel="prefetch" href="/assets/plugins-compress.html-JS9VzNtm.js" as="script"><link rel="prefetch" href="/assets/plugins-config.html-Bmof8l72.js" as="script"><link rel="prefetch" href="/assets/plugins-database.html-DrKqg2C7.js" as="script"><link rel="prefetch" href="/assets/plugins-encoding.html-C48laNPo.js" as="script"><link rel="prefetch" href="/assets/plugins-gateway.html-Bvz29v0J.js" as="script"><link rel="prefetch" href="/assets/plugins-intro.html-p5YHJHQ7.js" as="script"><link rel="prefetch" href="/assets/plugins-log.html-enTTS_oD.js" as="script"><link rel="prefetch" href="/assets/plugins-metrics.html-SHMgAZWu.js" as="script"><link rel="prefetch" href="/assets/plugins-oss.html-CpINy7vf.js" as="script"><link rel="prefetch" href="/assets/plugins-ratelimit.html-C83AoLZJ.js" as="script"><link rel="prefetch" href="/assets/plugins-registry.html-BZVbYbP2.js" as="script"><link rel="prefetch" href="/assets/plugins-security.html-DotqAEYp.js" as="script"><link rel="prefetch" href="/assets/plugins-template.html-BdtRMnoE.js" as="script"><link rel="prefetch" href="/assets/plugins-tracer.html-lCjLplqM.js" as="script"><link rel="prefetch" href="/assets/plugins-transport.html-CcZzjCjo.js" as="script"><link rel="prefetch" href="/assets/plugins-workflow.html-DsXIvhWp.js" as="script"><link rel="prefetch" href="/assets/tutorial-custom-plugin.html-jmaHo-Vq.js" as="script"><link rel="prefetch" href="/assets/tutorial-migration.html-CP5hm2ja.js" as="script">
37<link rel="prefetch" href="/assets/tutorial-multi-transport.html-D6nbk8-D.js" as="script"><link rel="prefetch" href="/assets/tutorial-quick-start.html-CosZ_z0p.js" as="script"><link rel="prefetch" href="/assets/backend-code-generation.html-BGKiN8ul.js" as="script"><link rel="prefetch" href="/assets/frontend-code-generation.html-DDSWydA7.js" as="script"><link rel="prefetch" href="/assets/intro.html-iqrg61p8.js" as="script"><link rel="prefetch" href="/assets/analyst-active-users.html-Baqdyf1e.js" as="script"><link rel="prefetch" href="/assets/analyst-anomaly.html-Vxir_aXD.js" as="script"><link rel="prefetch" href="/assets/analyst-attribution.html-CyB4d7OU.js" as="script"><link rel="prefetch" href="/assets/analyst-behavior-sequence.html-BI6PA_gz.js" as="script"><link rel="prefetch" href="/assets/analyst-churn.html-BXEwcsKF.js" as="script"><link rel="prefetch" href="/assets/analyst-click.html-BNz95QgP.js" as="script"><link rel="prefetch" href="/assets/analyst-distribution.html-D3dwyZRg.js" as="script"><link rel="prefetch" href="/assets/analyst-economy.html-n4aMUW4x.js" as="script"><link rel="prefetch" href="/assets/analyst-event-trend.html-g33xjtQM.js" as="script"><link rel="prefetch" href="/assets/analyst-funnel.html-B1Dl9FJq.js" as="script"><link rel="prefetch" href="/assets/analyst-getting-started.html-C41i0F1Z.js" as="script"><link rel="prefetch" href="/assets/analyst-group-by.html-CafmIOiu.js" as="script"><link rel="prefetch" href="/assets/analyst-interval.html-BvBahTqM.js" as="script"><link rel="prefetch" href="/assets/analyst-level-analysis.html-Dec8MVWk.js" as="script"><link rel="prefetch" href="/assets/analyst-lifecycle.html-CQxTglAu.js" as="script"><link rel="prefetch" href="/assets/analyst-ltv.html-BzV_dQA8.js" as="script"><link rel="prefetch" href="/assets/analyst-matrix.html-Dr30nzAx.js" as="script"><link rel="prefetch" href="/assets/analyst-new-vs-old.html-DQyJZ8sX.js" as="script"><link rel="prefetch" href="/assets/analyst-olap-cookbook.html-Bwt0bBO7.js" as="script"><link rel="prefetch" href="/assets/analyst-online-stats.html-Dxi0tJWI.js" as="script"><link rel="prefetch" href="/assets/analyst-path-sankey.html-BHX8255Z.js" as="script"><link rel="prefetch" href="/assets/analyst-retention.html-BfO_40_e.js" as="script"><link rel="prefetch" href="/assets/analyst-revenue.html-BcVJCPPH.js" as="script"><link rel="prefetch" href="/assets/analyst-segmentation.html-DGnpt6Vr.js" as="script"><link rel="prefetch" href="/assets/analyst-server-retention.html-CCMp1uBx.js" as="script"><link rel="prefetch" href="/assets/analyst-session-analysis.html-CT_bdii0.js" as="script"><link rel="prefetch" href="/assets/analyst-whale-tier.html-D7qa86Ta.js" as="script"><link rel="prefetch" href="/assets/appendix.html-VyOTnxld.js" as="script"><link rel="prefetch" href="/assets/architecture.html-CTaFLbZV.js" as="script"><link rel="prefetch" href="/assets/backend-api.html-DDXYosju.js" as="script"><link rel="prefetch" href="/assets/backend-modules.html-CANR4tLP.js" as="script"><link rel="prefetch" href="/assets/deploy-config.html-Ds_rBkwr.js" as="script"><link rel="prefetch" href="/assets/deploy-docker.html-0sPCLOIU.js" as="script"><link rel="prefetch" href="/assets/deploy-pm2.html-Dugw-ell.js" as="script"><link rel="prefetch" href="/assets/deploy-superset.html-TQIx47Ta.js" as="script"><link rel="prefetch" href="/assets/frontend-architecture.html-Bnp6N3Qt.js" as="script"><link rel="prefetch" href="/assets/installation.html-DmADfCti.js" as="script"><link rel="prefetch" href="/assets/intro.html-D-9Tim2U.js" as="script"><link rel="prefetch" href="/assets/sdk-csharp.html-BCDrMzXX.js" as="script"><link rel="prefetch" href="/assets/sdk-web.html-DlCN-pl5.js" as="script"><link rel="prefetch" href="/assets/tutorial-codegen.html-I1IQw5ib.js" as="script"><link rel="prefetch" href="/assets/tutorial-new-entity.html-B3nB6drW.js" as="script"><link rel="prefetch" href="/assets/tutorial-new-page.html-BnhgzMDd.js" as="script"><link rel="prefetch" href="/assets/tutorial-new-service.html-Dw9_276K.js" as="script"><link rel="prefetch" href="/assets/404.html-wee-Vn7-.js" as="script"><link rel="prefetch" href="/assets/mermaid.esm.min-DlmuX3-7.js" as="script">
38  </head>
39  <body>
40    <div id="app"><!--[--><div class="vp-theme-container external-link-icon" vp-container><!--[--><header class="vp-navbar" vp-navbar><div class="vp-toggle-sidebar-button" title="toggle sidebar" aria-expanded="false" role="button" tabindex="0"><div class="icon" aria-hidden="true"><span></span><span></span><span></span></div></div><span><a class="route-link" href="/">
40<img class="vp-site-logo" src="/logo.png" alt="GoWind 开源生态"><span class="vp-site-name vp-hide-mobile" aria-hidden="true">GoWind 开源生态</span></a></span><div class="vp-navbar-items-wrapper" style=""><!--[--><!--]--><nav class="vp-navbar-items vp-hide-mobile" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/framework/intro.html" aria-label="框架"><!--[--><!--[--><!--]--><!--]-->框架<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/admin/intro.html" aria-label="GoWind Admin"><!--[--><!--[--><!--]--><!--]-->GoWind Admin<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/cms/intro.html" aria-label="GoWind CMS"><!--[--><!--[--><!--]--><!--]-->GoWind CMS<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/im/intro.html" aria-label="GoWind IM"><!--[--><!--[--><!--]--><!--]-->GoWind IM<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/uba/intro.html" aria-label="GoWind UBA"><!--[--><!--[--><!--]--><!--]-->GoWind UBA<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/iot/intro.html" aria-label="GoWind IoT"><!--[--><!--[--><!--]--><!--]-->GoWind IoT<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/toolkit/intro.html" aria-label="GoWind Toolkit"><!--[--><!--[--><!--]--><!--]-->GoWind Toolkit<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/quant/intro.html" aria-label="GoWind Quant"><!--[--><!--[--><!--]--><!--]-->GoWind Quant<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://github.com/tx7do" aria-label="GitHub" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->GitHub<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><button type="button" class="vp-toggle-color-mode-button" title="toggle color mode"><svg class="light-icon" viewbox="0 0 32 32" style=""><path d="M16 12.005a4 4 0 1 1-4 4a4.005 4.005 0 0 1 4-4m0-2a6 6 0 1 0 6 6a6 6 0 0 0-6-6z" fill="currentColor"></path><path d="M5.394 6.813l1.414-1.415l3.506 3.506L8.9 10.318z" fill="currentColor"></path><path d="M2 15.005h5v2H2z" fill="currentColor"></path><path d="M5.394 25.197L8.9 21.691l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 25.005h2v5h-2z" fill="currentColor"></path><path d="M21.687 23.106l1.414-1.415l3.506 3.506l-1.414 1.414z" fill="currentColor"></path><path d="M25 15.005h5v2h-5z" fill="currentColor"></path><path d="M21.687 8.904l3.506-3.506l1.414 1.415l-3.506 3.505z" fill="currentColor"></path><path d="M15 2.005h2v5h-2z" fill="currentColor"></path></svg><svg class="dark-icon" viewbox="0 0 32 32" style="display:none;"><path d="M13.502 5.414a15.075 15.075 0 0 0 11.594 18.194a11.113 11.113 0 0 1-7.975 3.39c-.138 0-.278.005-.418 0a11.094 11.094 0 0 1-3.2-21.584M14.98 3a1.002 1.002 0 0 0-.175.016a13.096 13.096 0 0 0 1.825 25.981c.164.006.328 0 .49 0a13.072 13.072 0 0 0 10.703-5.555a1.01 1.01 0 0 0-.783-1.565A13.08 13.08 0 0 1 15.89 4.38A1.015 1.015 0 0 0 14.98 3z" fill="currentColor"></path></svg></button><form class="search-box" role="search"><input type="search" placeholder="Search" autocomplete="off" spellcheck="false" value><!----></form></div></header><!--]--><div class="vp-sidebar-mask"></div><!--[--><aside class="vp-sidebar" vp-sidebar><nav class="vp-navbar-items" aria-label="site navigation"><!--[--><div class="vp-navbar-item"><a class="route-link auto-link" href="/" aria-label="首页"><!--[--><!--[--><!--]--><!--]-->首页<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/framework/intro.html" aria-label="框架"><!--[--><!--[--><!--]--><!--]-->框架<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link route-link-active auto-link" href="/admin/intro.html" aria-label="GoWind Admin"><!--[--><!--[--><!--]--><!--]-->GoWind Admin<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/cms/intro.html" aria-label="GoWind CMS"><!--[--><!--[--><!--]--><!--]-->GoWind CMS<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/im/intro.html" aria-label="GoWind IM"><!--[--><!--[--><!--]--><!--]-->GoWind IM<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/uba/intro.html" aria-label="GoWind UBA"><!--[--><!--[--><!--]--><!--]-->GoWind UBA<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/iot/intro.html" aria-label="GoWind IoT"><!--[--><!--[--><!--]--><!--]-->GoWind IoT<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/toolkit/intro.html" aria-label="GoWind Toolkit"><!--[--><!--[--><!--]--><!--]-->GoWind Toolkit<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="route-link auto-link" href="/quant/intro.html" aria-label="GoWind Quant"><!--[--><!--[--><!--]--><!--]-->GoWind Quant<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-navbar-item"><a class="auto-link external-link" href="https://github.com/tx7do" aria-label="GitHub" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><!--]--><!--]-->GitHub<!--[--><!--[--><!--]--><!--]--></a></div><!--]--></nav><!--[--><!--]--><ul class="vp-sidebar-items"><!--[--><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading active">介绍 <!----></p><ul class="vp-sidebar-children" style=""><!--[--><li><a class="route-link route-link-active auto-link vp-sidebar-item active" href="/admin/intro.html" aria-label="GoWind Admin 产品介绍"><!--[--><!--[--><!--]--><!--]-->GoWind Admin 产品介绍<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/installation.html" aria-label="GoWind Admin 安装指南"><!--[--><!--[--><!--]--><!--]-->GoWind Admin 安装指南<!--[--><!--[--><!--]--><!--]--></a><!----></li>
40<!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading">后端文档 <!----></p><ul class="vp-sidebar-children" style=""><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/admin/backend-architecture.html" aria-label="后端架构总览"><!--[--><!--[--><!--]--><!--]-->后端架构总览<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/backend-modules.html" aria-label="后端核心模块详解"><!--[--><!--[--><!--]--><!--]-->后端核心模块详解<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/backend-api.html" aria-label="后端 API 与 Protobuf 定义"><!--[--><!--[--><!--]--><!--]-->后端 API 与 Protobuf 定义<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/backend-config-deploy.html" aria-label="后端配置与部署"><!--[--><!--[--><!--]--><!--]-->后端配置与部署<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/backend-extension.html" aria-label="后端扩展开发"><!--[--><!--[--><!--]--><!--]-->后端扩展开发<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading">前端文档 <!----></p><ul class="vp-sidebar-children" style=""><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/admin/frontend-architecture.html" aria-label="前端架构总览"><!--[--><!--[--><!--]--><!--]-->前端架构总览<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/frontend-modules.html" aria-label="前端核心功能详解"><!--[--><!--[--><!--]--><!--]-->前端核心功能详解<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading">二开教程 <!----></p><ul class="vp-sidebar-children" style=""><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/admin/backend-tutorial-new-module.html" aria-label="后端新增业务模块实战教程"><!--[--><!--[--><!--]--><!--]-->后端新增业务模块实战教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/frontend-tutorial-new-page.html" aria-label="前端新增业务页面实战教程"><!--[--><!--[--><!--]--><!--]-->前端新增业务页面实战教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-fullstack-integration.html" aria-label="前后端联调完整实战教程"><!--[--><!--[--><!--]--><!--]-->前后端联调完整实战教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><!--]--></ul></li><li><p tabindex="0" class="vp-sidebar-item vp-sidebar-heading">高级教程 <!----></p><ul class="vp-sidebar-children" style=""><!--[--><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-lua-extension.html" aria-label="Lua 脚本扩展实战教程"><!--[--><!--[--><!--]--><!--]-->Lua 脚本扩展实战教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-permission-system.html" aria-label="权限系统深度解析教程"><!--[--><!--[--><!--]--><!--]-->权限系统深度解析教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-multi-tenancy.html" aria-label="多租户架构实战教程"><!--[--><!--[--><!--]--><!--]-->多租户架构实战教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-task-scheduling.html" aria-label="任务调度与异步处理教程"><!--[--><!--[--><!--]--><!--]-->任务调度与异步处理教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-file-storage.html" aria-label="文件上传与对象存储教程"><!--[--><!--[--><!--]--><!--]-->文件上传与对象存储教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-eventbus-architecture.html" aria-label="事件总线与解耦架构教程"><!--[--><!--[--><!--]--><!--]-->事件总线与解耦架构教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-theme-i18n.html" aria-label="前端主题定制与国际化教程"><!--[--><!--[--><!--]--><!--]-->前端主题定制与国际化教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-performance-monitoring.html" aria-label="性能优化与监控教程"><!--[--><!--[--><!--]--><!--]-->性能优化与监控教程<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-sse-push.html" aria-label="SSE 实时推送"><!--[--><!--[--><!--]--><!--]-->SSE 实时推送<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-login-security.html" aria-label="登录策略与安全加固"><!--[--><!--[--><!--]--><!--]-->登录策略与安全加固<!--[--><!--[--><!--]--><!--]--></a><!----></li><li><a class="route-link auto-link vp-sidebar-item" href="/admin/tutorial-crypto-toolkit.html" aria-label="加密工具实战"><!--[--><!--[--><!--]--><!--]-->加密工具实战<!--[--><!--[--><!--]--><!--]--></a><!----></li>
40<!--]--></ul></li><!--]--></ul><!--[--><!--]--></aside><!--]--><!--[--><main class="vp-page"><!--[--><!--]--><div vp-content><!--[--><!--]--><div><h1 id="gowind-admin-产品介绍" tabindex="-1"><a class="header-anchor" href="#gowind-admin-产品介绍"><span>GoWind Admin 产品介绍</span></a></h1><p>GoWind Admin 是一套面向中大型项目的企业级中后台解决方案,基于 Go 微服务框架(Kratos)构建,<strong>采用单体架构部署</strong>,同时保持微服务级别的代码分层与模块化设计,可随业务增长平滑拆分为微服务。前端提供多套现代框架实现,具备开箱即用的后台管理能力、完善的多租户权限体系、丰富的组件库及可扩展的插件机制。</p><h2 id="一、核心特性" tabindex="-1"><a class="header-anchor" href="#一、核心特性"><span>一、核心特性</span></a></h2><h3 id="_1-技术栈" tabindex="-1"><a class="header-anchor" href="#_1-技术栈"><span>1. 技术栈</span></a></h3><table><thead><tr><th>维度</th><th>核心技术</th><th>优势说明</th></tr></thead><tbody><tr><td>后端</td><td>Go、Kratos 微服务框架、Ent ORM、Protobuf + Buf</td><td>基于微服务框架的单体架构,标准化 API 定义与代码生成,可平滑拆分为微服务</td></tr><tr><td>前端</td><td>Vue3 + Ant Design Vue (Vben)、Vue3 + Element Plus、React + Ant Design</td><td>三套前端实现,覆盖主流 UI 框架,支持主题定制、响应式布局</td></tr><tr><td>存储</td><td>PostgreSQL / MySQL、Redis、MinIO</td><td>关系型数据库 + 缓存 + 对象存储,完整的存储方案</td></tr><tr><td>任务调度</td><td>Asynq</td><td>基于 Redis 的分布式任务队列,支持定时/延迟/异步任务</td></tr><tr><td>权限</td><td>Casbin + OPA、JWT 认证</td><td>双引擎权限校验,细粒度角色权限控制,多租户数据隔离</td></tr><tr><td>工程化</td><td>Makefile、Docker Compose、Buf 代码生成、ESLint/Prettier</td><td>全流程工程化管控,一键构建部署</td></tr><tr><td>扩展能力</td><td>Lua / JavaScript 脚本引擎、自定义 API 模块、EventBus 事件总线</td><td>
40灵活扩展业务逻辑,无需修改核心代码</td></tr></tbody></table><h3 id="_2-核心功能" tabindex="-1"><a class="header-anchor" href="#_2-核心功能"><span>2. 核心功能</span></a></h3><ul><li><strong>多租户支持</strong>:支持一对一/一对多两种租户关系模型,基于 Ent Viewer 机制实现应用级数据隔离</li><li><strong>完善的权限体系</strong>:后端基于 Casbin/OPA 双引擎实现接口级权限校验,前端适配路由/组件/菜单级权限控制</li><li><strong>三套前端实现</strong>:Vue Vben (Ant Design Vue)、Vue Element (Element Plus)、React (Ant Design),按需选择</li><li><strong>标准化 API 体系</strong>:基于 Protobuf 定义接口,自动生成 Go/TypeScript 代码及 OpenAPI 文档</li><li><strong>分布式任务调度</strong>:基于 Asynq 实现定时任务、延迟任务和异步任务,支持优先级队列和重试策略</li><li><strong>文件存储服务</strong>:集成 MinIO 对象存储,支持文件上传、下载和管理</li><li><strong>脚本引擎扩展</strong>:内置 Lua/JavaScript 脚本引擎和 EventBus,支持自定义 API 模块开发</li><li><strong>富文本编辑器</strong>:集成 TipTap 富文本编辑器,支持表格、代码块、图片上传等</li><li><strong>多环境适配</strong>:开发/测试/生产环境配置隔离,Docker Compose 一键启动依赖服务</li></ul><h2 id="二、架构设计" tabindex="-1"><a class="header-anchor" href="#二、架构设计"><span>二、架构设计</span></a></h2><h3 id="_1-整体架构" tabindex="-1"><a class="header-anchor" href="#_1-整体架构"><span>1. 整体架构</span></a></h3><p>GoWind Admin 采用前后端分离架构,核心分为三层:</p><!--[--><div class="mermaid-actions"><button class="preview-button" title="preview"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1316 1024" fill="currentColor"><path d="M658.286 0C415.89 0 0 297.106 0 512c0 214.82 415.89 512 658.286 512 242.322 0 658.285-294.839 658.285-512S900.608 0 658.286 0zm0 877.714c-161.573 0-512-221.769-512-365.714 0-144.018 350.427-365.714 512-365.714 161.572 0 512 217.16 512 365.714s-350.428 365.714-512 365.714z"/><path d="M658.286 292.571a219.429 219.429 0 1 0 0 438.858 219.429 219.429 0 0 0 0-438.858zm0 292.572a73.143 73.143 0 1 1 0-146.286 73.143 73.143 0 0 1 0 146.286z"/></svg></button><button class="download-button" title="download"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path d="M828.976 894.125H190.189c-70.55 0-127.754-57.185-127.754-127.753V606.674c0-17.634 14.31-31.933 31.933-31.933h63.889c17.634 0 31.932 14.299 31.932 31.933v95.822c0 35.282 28.596 63.877 63.877 63.877h511.033c35.281 0 63.877-28.595 63.877-63.877v-95.822c0-17.634 14.298-31.933 31.943-31.933h63.878c17.635 0 31.933 14.299 31.933 31.933v159.7c0 70.566-57.191 127.751-127.754 127.751zM249.939 267.51c12.921-12.92 33.885-12.92 46.807 0l148.97 148.972V94.893c0-17.634 14.302-31.947 31.934-31.947h63.876c17.638 0 31.946 14.313 31.946 31.947v321.589l148.97-148.972c12.922-12.92 33.876-12.92 46.797 0l46.814 46.818c12.922 12.922 12.922 33.874 0 46.807L552.261 624.93c-1.14 1.138-21.664 13.684-42.315 13.693-20.877.01-41.88-12.542-43.021-13.693L203.122 361.135c-12.923-12.934-12.923-33.885 0-46.807l46.817-46.818z"/></svg></button></div><div class="mermaid-wrapper"><div style="display:flex;align-items:center;justify-content:center;height:96px;" class="mermaid-loading"><span style="--loading-icon: url(&quot;data:image/svg+xml;utf8,%3Csvg xmlns=&#39;http://www.w3.org/2000/svg&#39; preserveAspectRatio=&#39;xMidYMid&#39; viewBox=&#39;25 25 50 50&#39;%3E%3CanimateTransform attributeName=&#39;transform&#39; type=&#39;rotate&#39; dur=&#39;2s&#39; keyTimes=&#39;0;1&#39; repeatCount=&#39;indefinite&#39; values=&#39;0;360&#39;%3E%3C/animateTransform%3E%3Ccircle cx=&#39;50&#39; cy=&#39;50&#39; r=&#39;20&#39; fill=&#39;none&#39; stroke=&#39;currentColor&#39; stroke-width=&#39;4&#39; stroke-linecap=&#39;round&#39;%3E%3Canimate attributeName=&#39;stroke-dasharray&#39; dur=&#39;1.5s&#39; keyTimes=&#39;0;0.5;1&#39; repeatCount=&#39;indefinite&#39; values=&#39;1,200;90,200;1,200&#39;%3E%3C/animate%3E%3Canimate attributeName=&#39;stroke-dashoffset&#39; dur=&#39;1.5s&#39; keyTimes=&#39;0;0.5;1&#39; repeatCount=&#39;indefinite&#39; values=&#39;0;
40-35px;-125px&#39;%3E%3C/animate%3E%3C/circle%3E%3C/svg%3E&quot;);--icon-size: 48px;display: inline-block;width: var(--icon-size);height: var(--icon-size);background-color: currentcolor;-webkit-mask-image: var(--loading-icon);mask-image: var(--loading-icon)"></span></div></div><!--]--><ul><li><strong>前端层</strong>:三套独立前端实现(Vue Vben / Vue Element / React),按需选择</li><li><strong>API 层</strong>:基于 Kratos 框架构建的单体服务,内部保持微服务级别的分层架构,支持 HTTP REST + SSE 推送 + Asynq 任务调度,未来可平滑拆分为独立微服务</li><li><strong>数据层</strong>:PostgreSQL/MySQL 主数据库 + Redis 缓存/消息队列 + MinIO 对象存储</li></ul><h3 id="_2-后端项目结构" tabindex="-1"><a class="header-anchor" href="#_2-后端项目结构"><span>2. 后端项目结构</span></a></h3><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code><span class="line">backend/</span>
41<span class="line">├── api/                    # Protobuf API 定义与自动生成代码</span>
42<span class="line">│   └── gen/                # 自动生成的 Go / TypeScript 代码</span>
43<span class="line">├── app/                    # 应用服务代码</span>
44<span class="line">│   └── admin/service/      # Admin 服务</span>
45<span class="line">│       ├── cmd/server/     # 服务入口</span>
46<span class="line">│       ├── configs/        # 服务配置(数据库、Redis、OSS、服务器等)</span>
47<span class="line">│       └── internal/       # 内部逻辑(data/ent/schema、service、server)</span>
48<span class="line">├── pkg/                    # 通用工具包</span>
49<span class="line">│   ├── authorizer/         # Casbin/OPA 权限引擎</span>
50<span class="line">│   ├── constants/          # 常量(权限、角色、租户类型)</span>
51<span class="line">│   ├── crypto/             # 加密工具(AES-GCM)</span>
52<span class="line">│   ├── entgo/              # Ent ORM 扩展</span>
53<span class="line">│   ├── eventbus/           # 事件总线</span>
54<span class="line">│   ├── jwt/                # JWT 工具</span>
55<span class="line">│   ├── lua/                # Lua 脚本引擎</span>
56<span class="line">│   ├── middleware/         # 中间件(auth、ent viewer)</span>
57<span class="line">│   ├── oss/                # 对象存储(MinIO)</span>
58<span class="line">│   └── task/               # 任务类型定义</span>
59<span class="line">├── scripts/                # 自动化脚本</span>
60<span class="line">│   ├── env/                # 环境安装脚本(Windows/Unix)</span>
61<span class="line">│   ├── docker/             # Docker 部署脚本</span>
62<span class="line">│   └── deploy/             # PM2 部署脚本</span>
63<span class="line">├── sql/                    # 数据库初始化脚本</span>
64<span class="line">├── docker-compose.yaml     # 全量部署(应用 + 依赖)</span>
65<span class="line">├── docker-compose.libs.yaml # 仅依赖服务</span>
66<span class="line">├── Makefile                # 自动化构建指令</span>
67<span class="line">
67└── Dockerfile              # Docker 镜像构建(多阶段)</span>
68<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_3-前端项目结构" tabindex="-1"><a class="header-anchor" href="#_3-前端项目结构"><span>3. 前端项目结构</span></a></h3><p>GoWind Admin 提供三套前端实现,均位于 <code>frontend/admin/</code> 目录:</p><table><thead><tr><th>前端版本</th><th>目录</th><th>UI 框架</th><th>开发端口</th></tr></thead><tbody><tr><td>Vue Vben</td><td><code>vue-vben/</code></td><td>Ant Design Vue</td><td>5666</td></tr><tr><td>Vue Element</td><td><code>vue-element/</code></td><td>Element Plus</td><td>3000</td></tr><tr><td>React</td><td><code>react/</code></td><td>Ant Design</td><td>7000</td></tr></tbody></table><div class="language-text line-numbers-mode" data-highlighter="prismjs" data-ext="text"><pre><code><span class="line">frontend/admin/</span>
69<span class="line">├── vue-vben/               # Vue Vben 版(Monorepo)</span>
70<span class="line">│   ├── apps/admin/         # 管理端应用</span>
71<span class="line">│   ├── packages/           # 通用包(组件库、工具、国际化)</span>
72<span class="line">│   └── scripts/deploy/     # Docker 部署脚本</span>
73<span class="line">├── vue-element/            # Vue Element 版</span>
74<span class="line">│   ├── src/pages/          # 业务页面</span>
75<span class="line">│   ├── src/core/           # 核心逻辑(偏好、i18n、路由)</span>
76<span class="line">│   └── src/utils/          # 工具函数</span>
77<span class="line">└── react/                  # React 版</span>
78<span class="line">    ├── src/pages/          # 业务页面</span>
79<span class="line">    ├── src/core/           # 核心逻辑(偏好、i18n)</span>
80<span class="line">    └── src/locales/        # 国际化资源</span>
81<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="三、快速体验" tabindex="-1"><a class="header-anchor" href="#三、快速体验"><span>三、快速体验</span></a></h2><h3 id="_1-环境准备" tabindex="-1"><a class="header-anchor" href="#_1-环境准备"><span>1. 环境准备</span></a></h3><ul><li><strong>后端</strong>:安装 Go、Docker、Buf、Make</li><li><strong>前端</strong>:安装 Node.js 16+、pnpm</li></ul><p>详细安装步骤请参考 <a class="route-link" href="/admin/installation.html">安装指南</a>。</p><h3 id="_2-在线演示" tabindex="-1"><a class="header-anchor" href="#_2-在线演示"><span>2. 在线演示</span></a></h3><p>无需部署,直接体验完整功能:</p><ul><li><strong>前端管理页面</strong>:<a href="https://demo.admin.gowind.cloud" target="_blank" rel="noopener noreferrer">https://demo.admin.gowind.cloud</a></li><li><strong>后端 API 文档(Swagger)</strong>:<a href="https://api.demo.admin.gowind.cloud/docs/" target="_blank" rel="noopener noreferrer">https://api.demo.admin.gowind.cloud/docs/</a></li><li><strong>默认账号密码</strong>:<code>admin</code> / <code>admin</code></li></ul><h3 id="_3-一键启动" tabindex="-1"><a class="header-anchor" href="#_3-一键启动"><span>3. 一键启动</span></a></h3><h4 id="后端启动" tabindex="-1"><a class="header-anchor" href="#后端启动"><span>后端启动</span></a></h4><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh"><pre><code><span class="line"><span class="token function">git</span> clone https://github.com/tx7do/go-wind-admin.git</span>
82<span class="line"></span>
83<span class="line"><span class="token builtin class-name">cd</span> go-wind-admin/backend</span>
84<span class="line"></span>
85<span class="line"><span class="token comment"># 安装依赖插件和 CLI 工具</span></span>
86<span class="line"><span class="token function">make</span> init</span>
87<span class="line"></span>
88<span class="line"><span class="token comment"># 启动依赖服务(PostgreSQL / Redis / MinIO)</span></span>
89<span class="line"><span class="token function">make</span> docker-libs</span>
90<span class="line"></span>
91<span class="line"><span class="token comment"># 启动后端服务</span></span>
92<span class="line">gow run admin</span>
93<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h4 id="前端启动" tabindex="-1"><a class="header-anchor" href="#前端启动"><span>前端启动</span></a></h4><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh"><pre><code><span class="line"><span class="token builtin class-name">cd</span> go-wind-admin/frontend/admin</span>
94<span class="line"></span>
95<span class="line"><span class="token comment"># Vue Vben 版本</span></span>
96<span class="line"></span>
97<span class="line"><span class="token builtin class-name">cd</span> vue-vben</span>
98<span class="line"><span class="token function">pnpm</span> <span class="token function">install</span></span>
99<span class="line"><span class="token function">pnpm</span> dev:antd</span>
100<span class="line"></span>
101<span class="line"><span class="token comment"># Vue Element 版本</span></span>
102<span class="line"><span class="token builtin class-name">cd</span> <span class="token punctuation">..</span>/vue-element</span>
103<span class="line"><span class="token function">pnpm</span> <span class="token function">install</span></span>
104<span class="line"><span class="token function">pnpm</span> dev</span>
105<span class="line"></span>
106<span class="line"><span class="token comment"># React 版本</span></span>
107<span class="line"><span class="token builtin class-name">cd</span> <span class="token punctuation">..</span>/react</span>
108<span class="line"><span class="token function">pnpm</span> <span class="token function">install</span></span>
109<span class="line"><span class="token function">pnpm</span> dev</span>
110<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_4-访问地址" tabindex="-1"><a class="header-anchor" href="#_4-访问地址"><span>4. 访问地址</span></a></h3><table><thead><tr><th>
110服务</th><th>地址</th></tr></thead><tbody><tr><td>Vue Vben 前端</td><td><a href="http://localhost:5666" target="_blank" rel="noopener noreferrer">http://localhost:5666</a></td></tr><tr><td>Vue Element 前端</td><td><a href="http://localhost:3000" target="_blank" rel="noopener noreferrer">http://localhost:3000</a></td></tr><tr><td>React 前端</td><td><a href="http://localhost:7000" target="_blank" rel="noopener noreferrer">http://localhost:7000</a></td></tr><tr><td>后端 REST API</td><td><a href="http://localhost:7788" target="_blank" rel="noopener noreferrer">http://localhost:7788</a></td></tr><tr><td>后端 Swagger 文档</td><td><a href="http://localhost:7788/docs/" target="_blank" rel="noopener noreferrer">http://localhost:7788/docs/</a></td></tr><tr><td>后端 SSE 服务</td><td><a href="http://localhost:7789/events" target="_blank" rel="noopener noreferrer">http://localhost:7789/events</a></td></tr><tr><td>MinIO 控制台</td><td><a href="http://localhost:9001" target="_blank" rel="noopener noreferrer">http://localhost:9001</a></td></tr></tbody></table><h2 id="四、核心能力详解" tabindex="-1"><a class="header-anchor" href="#四、核心能力详解"><span>四、核心能力详解</span></a></h2><h3 id="_1-多租户与权限体系" tabindex="-1"><a class="header-anchor" href="#_1-多租户与权限体系"><span>1. 多租户与权限体系</span></a></h3><p>GoWind Admin 内置多租户支持,提供两种租户关系模型:</p><ul><li><strong>一对一</strong>:每个用户只属于一个租户,通过 <code>user_role</code> 关联角色</li><li><strong>一对多</strong>:每个用户可属于多个租户,通过 <code>membership</code> 表管理身份</li></ul><p>权限体系基于双引擎架构:</p><ul><li><strong>认证(Authentication)</strong>:JWT Token 内嵌用户 ID、租户 ID、角色、数据权限范围</li><li><strong>授权(Authorization)</strong>:Casbin + OPA 双引擎,支持 RBAC / ABAC 权限模型</li><li><strong>数据隔离</strong>:通过 Ent Viewer 机制自动注入租户过滤,无需手动添加 WHERE 条件</li><li><strong>前端适配</strong>:路由守卫、组件级权限、菜单可见性控制</li></ul><p>详见 <a class="route-link" href="/admin/tutorial-permission-system.html">权限系统深度解析</a> 和 <a class="route-link" href="/admin/tutorial-multi-tenancy.html">多租户架构实战</a>。</p><h3 id="_2-标准化-api-开发" tabindex="-1"><a class="header-anchor" href="#_2-标准化-api-开发"><span>2. 标准化 API 开发</span></a></h3><p>基于 Protobuf 定义接口,通过 Buf 自动生成:</p><div class="language-bash line-numbers-mode" data-highlighter="prismjs" data-ext="sh"><pre><code><span class="line"><span class="token comment"># 生成 Go 服务端代码</span></span>
111<span class="line"><span class="token function">make</span> api</span>
112<span class="line"></span>
113<span class="line"><span class="token comment"># 生成 OpenAPI 文档</span></span>
114<span class="line"><span class="token function">make</span> openapi</span>
115<span class="line"></span>
116<span class="line"><span class="token comment"># 生成 TypeScript 前端请求代码</span></span>
117<span class="line"><span class="token function">make</span> ts</span>
118<span class="line"></span>
119<span class="line"><span class="token comment"># 一键生成所有(Ent + Wire + API + OpenAPI)</span></span>
120<span class="line"><span class="token function">make</span> gen</span>
121<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h3 id="_3-任务调度" tabindex="-1"><a class="header-anchor" href="#_3-任务调度"><span>3. 任务调度</span></a></h3><p>基于 Asynq 实现分布式任务队列:</p><ul><li><strong>立即任务</strong>
121:发送邮件、短信通知</li><li><strong>延迟任务</strong>:订单超时自动取消</li><li><strong>定时任务</strong>:每日数据报表、定期数据清理</li><li>支持优先级队列(critical / default / low)和自动重试</li><li>提供 Asynqmon Web UI 监控任务状态</li></ul><p>详见 <a class="route-link" href="/admin/tutorial-task-scheduling.html">任务调度与异步处理教程</a>。</p><h3 id="_4-扩展开发" tabindex="-1"><a class="header-anchor" href="#_4-扩展开发"><span>4. 扩展开发</span></a></h3><h4 id="后端扩展-脚本引擎" tabindex="-1"><a class="header-anchor" href="#后端扩展-脚本引擎"><span>后端扩展(脚本引擎)</span></a></h4><p>内置 Lua/JavaScript 脚本引擎和 EventBus 事件总线,支持无需编译的业务逻辑扩展:</p><div class="language-lua line-numbers-mode" data-highlighter="prismjs" data-ext="lua"><pre><code><span class="line"><span class="token comment">-- 监听用户创建事件,自动投递欢迎邮件任务</span></span>
122<span class="line">eventbus<span class="token punctuation">.</span><span class="token function">subscribe</span><span class="token punctuation">(</span><span class="token string">&quot;user.created&quot;</span><span class="token punctuation">,</span> <span class="token keyword">function</span><span class="token punctuation">(</span>event<span class="token punctuation">)</span></span>
123<span class="line">    task<span class="token punctuation">.</span><span class="token function">enqueue</span><span class="token punctuation">(</span><span class="token string">&quot;send_welcome_email&quot;</span><span class="token punctuation">,</span> <span class="token punctuation">{</span></span>
124<span class="line">        user_id <span class="token operator">=</span> event<span class="token punctuation">.</span>user_id<span class="token punctuation">,</span></span>
125<span class="line">        email <span class="token operator">=</span> event<span class="token punctuation">.</span>email</span>
126<span class="line">    <span class="token punctuation">}</span><span class="token punctuation">)</span></span>
127<span class="line"><span class="token keyword">end</span><span class="token punctuation">)</span></span>
128<span class="line"></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><p>详见 <a class="route-link" href="/admin/tutorial-lua-extension.html">Lua 脚本扩展实战</a> 和 <a class="route-link" href="/admin/tutorial-eventbus-architecture.html">事件总线架构</a>。</p><h4 id="前端扩展-组件开发" tabindex="-1"><a class="header-anchor" href="#前端扩展-组件开发"><span>前端扩展(组件开发)</span></a></h4><p>复用通用组件库快速开发业务页面,三套前端均支持自定义组件扩展。</p><h3 id="_5-文件存储" tabindex="-1"><a class="header-anchor" href="#_5-文件存储"><span>5. 文件存储</span></a></h3><p>集成 MinIO 对象存储服务,支持文件上传、下载和管理,配置化的存储桶策略。</p><p>详见 <a class="route-link" href="/admin/tutorial-file-storage.html">文件存储服务教程</a>。</p><h3 id="_6-富文本编辑器" tabindex="-1"><a class="header-anchor" href="#_6-富文本编辑器"><span>6. 富文本编辑器</span></a></h3><p>Vue Element 和 React 版本集成 TipTap 富文本编辑器,支持:</p><ul><li>格式化文本、表格、代码块、公式</li><li>图片上传</li><li>颜色、高亮、标题等富文本样式</li></ul><h2 id="五、工程化与规范" tabindex="-1"><a class="header-anchor" href="#五、工程化与规范"><span>五、工程化与规范</span></a></h2><h3 id="_1-代码规范" tabindex="-1"><a class="header-anchor" href="#_1-代码规范"><span>1. 代码规范</span></a></h3><ul><li><strong>后端</strong>:Go 代码遵循 golangci-lint 规范,通过 <code>make lint</code> 自动校验</li><li><strong>前端</strong>:ESLint + Prettier 规范,保障代码风格一致</li><li><strong>API 定义</strong>:Protobuf 接口定义标准化,Buf 格式化和 lint 检查</li></ul><h3 id="_2-构建与部署" tabindex="-1"><a class="header-anchor" href="#_2-构建与部署"><span>2. 构建与部署</span></a></h3><!--[--><div class="mermaid-actions"><button class="preview-button" title="preview"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1316 1024" fill="currentColor"><path d="M658.286 0C415.89 0 0 297.106 0 512c0 214.82 415.89 512 658.286 512 242.322 0 658.285-294.839 658.285-512S900.608 0 658.286 0zm0 877.714c-161.573 0-512-221.769-512-365.714 0-144.018 350.427-365.714 512-365.714 161.572 0 512 217.16 512 365.714s-350.428 365.714-512 365.714z"/><path d="M658.286 292.571a219.429 219.429 0 1 0 0 438.858 219.429 219.429 0 0 0 0-438.858zm0 292.572a73.143 73.143 0 1 1 0-146.286 73.143 73.143 0 0 1 0 146.286z"/></svg></button><button class="download-button" title="download"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1024 1024" fill="currentColor"><path d="M828.976 894.125H190.189c-70.55 0-127.754-57.185-127.754-127.753V606.674c0-17.634 14.31-31.933 31.933-31.933h63.889c17.634 0 31.932 14.299 31.932 31.933v95.822c0 35.282 28.596 63.877 63.877 63.877h511.033c35.281 0 63.877-28.595 63.877-63.877v-95.822c0-17.634 14.298-31.933 31.943-31.933h63.878c17.635 0 31.933 14.299 31.933 31.933v159.7c0 70.566-57.191 127.751-127.754 127.751zM249.939 267.51c12.921-12.92 33.885-12.92 46.807 0l148.97 148.972V94.893c0-17.634 14.302-31.947 31.934-31.947h63.876c17.638 0 31.946 14.313 31.946 31.947v321.589l148.97-148.972c12.922-12.92 33.876-12.92 46.797 0l46.814 46.818c12.922 12.922 12.922 33.874 0 46.807L552.261 624.93c-1.14 1.138-21.664 13.684-42.3
12815 13.693-20.877.01-41.88-12.542-43.021-13.693L203.122 361.135c-12.923-12.934-12.923-33.885 0-46.807l46.817-46.818z"/></svg></button></div><div class="mermaid-wrapper"><div style="display:flex;align-items:center;justify-content:center;height:96px;" class="mermaid-loading"><span style="--loading-icon: url(&quot;data:image/svg+xml;utf8,%3Csvg xmlns=&#39;http://www.w3.org/2000/svg&#39; preserveAspectRatio=&#39;xMidYMid&#39; viewBox=&#39;25 25 50 50&#39;%3E%3CanimateTransform attributeName=&#39;transform&#39; type=&#39;rotate&#39; dur=&#39;2s&#39; keyTimes=&#39;0;1&#39; repeatCount=&#39;indefinite&#39; values=&#39;0;360&#39;%3E%3C/animateTransform%3E%3Ccircle cx=&#39;50&#39; cy=&#39;50&#39; r=&#39;20&#39; fill=&#39;none&#39; stroke=&#39;currentColor&#39; stroke-width=&#39;4&#39; stroke-linecap=&#39;round&#39;%3E%3Canimate attributeName=&#39;stroke-dasharray&#39; dur=&#39;1.5s&#39; keyTimes=&#39;0;0.5;1&#39; repeatCount=&#39;indefinite&#39; values=&#39;1,200;90,200;1,200&#39;%3E%3C/animate%3E%3Canimate attributeName=&#39;stroke-dashoffset&#39; dur=&#39;1.5s&#39; keyTimes=&#39;0;0.5;1&#39; repeatCount=&#39;indefinite&#39; values=&#39;0;-35px;-125px&#39;%3E%3C/animate%3E%3C/circle%3E%3C/svg%3E&quot;);--icon-size: 48px;display: inline-block;width: var(--icon-size);height: var(--icon-size);background-color: currentcolor;-webkit-mask-image: var(--loading-icon);mask-image: var(--loading-icon)"></span></div></div><!--]--><ul><li><strong>全 Docker 部署</strong>:<code>make docker-up</code>,三方中间件和微服务均运行在 Docker 容器中</li><li><strong>混合部署</strong>:Docker 运行中间件 + PM2 管理宿主机微服务</li><li><strong>前端部署</strong>:静态资源构建(<code>pnpm build</code>)或 Docker 镜像</li></ul><p>详见 <a class="route-link" href="/admin/installation.html">安装指南</a>。</p><h2 id="六、开源协议与生态" tabindex="-1"><a class="header-anchor" href="#六、开源协议与生态"><span>六、开源协议与生态</span></a></h2><p>GoWind Admin 基于 MIT 协议开源,可自由用于商业项目。</p><p>核心生态依赖:</p><ul><li><strong>后端框架</strong>:<a href="https://go-kratos.dev/docs/" target="_blank" rel="noopener noreferrer">Kratos</a> 微服务框架、<a href="https://entgo.io/" target="_blank" rel="noopener noreferrer">Ent</a> ORM、<a href="https://buf.build/" target="_blank" rel="noopener noreferrer">Buf</a> 工具链</li><li><strong>前端框架</strong>:<a href="https://doc.vben.pro" target="_blank" rel="noopener noreferrer">Vben Admin</a>、<a href="https://antdv.com/" target="_blank" rel="noopener noreferrer">Ant Design Vue</a>、<a href="https://element-plus.org/" target="_blank" rel="noopener noreferrer">Element Plus</a>、<a href="https://ant.design/" target="_blank" rel="noopener noreferrer">Ant Design</a></li><li><strong>基础设施</strong>:<a href="https://github.com/hibiken/asynq" target="_blank" rel="noopener noreferrer">Asynq</a> 任务队列、<a href="https://casbin.org/" target="_blank" rel="noopener noreferrer">Casbin</a> 权限引擎、<a href="https://min.io/" target="_blank" rel="noopener noreferrer">MinIO</a> 对象存储</li></ul><h2 id="七、适用场景" tabindex="-1"><a class="header-anchor" href="#七、适用场景"><span>七、适用场景</span></a></h2><ul><li>企业级中后台系统开发</li><li>SaaS 多租户平台建设</li><li>基于微服务框架的单体架构管理平台</li><li>需要快速交付、易扩展的后台项目</li><li>对权限管控、工程化有高要求的团队</li></ul><h2 id="八、相关资源" tabindex="-1"><a class="header-anchor" href="#八、相关资源"><span>八、相关资源</span></a></h2><ul><li>源码仓库:<a href="https://github.com/tx7do/go-wind-admin" target="_blank" rel="noopener noreferrer">GitHub</a>、<a href="https://gitee.com/tx7do/go-wind-admin" target="_blank" rel="noopener noreferrer">Gitee</a></li><li>技术站点:<a href="https://www.gowind.cloud" target="_blank" rel="noopener noreferrer">https://www.gowind.cloud</a></li><li><a class="route-link" href="/admin/installation.html">安装指南</a></li><li><a class="route-link" href="/admin/backend-architecture.html">后端架构设计</a></li><li><a class="route-link" href="/admin/frontend-architecture.html">前端架构设计</a></li></ul></div><!--[--><!--]--></div><footer class="vp-page-meta"><div class="vp-meta-item edit-link"><a class="auto-link external-link label" href="https://github.com/tx7do/edit/main/admin/intro.md" aria-label="Edit this page" rel="noopener noreferrer" target="_blank"><!--[--><!--[--><svg class="edit-icon" viewbox="0 0 1024 1024"><g fill="currentColor"><path d="M430.818 653.65a60.46 60.46 0 0 1-50.96-93.281l71.69-114.012 7.773-10.365L816.038 80.138A60.46 60.46 0 0 1 859.225 62a60.46 60.46 0 0 1 43.186 18.138l43.186 43.186a60.46 60.46 0 0 1 0 8
1286.373L588.879 565.55l-8.637 8.637-117.466 68.234a60.46 60.46 0 0 1-31.958 11.229z"></path><path d="M728.802 962H252.891A190.883 190.883 0 0 1 62.008 771.98V296.934a190.883 190.883 0 0 1 190.883-192.61h267.754a60.46 60.46 0 0 1 0 120.92H252.891a69.962 69.962 0 0 0-69.098 69.099V771.98a69.962 69.962 0 0 0 69.098 69.098h475.911A69.962 69.962 0 0 0 797.9 771.98V503.363a60.46 60.46 0 1 1 120.922 0V771.98A190.883 190.883 0 0 1 728.802 962z"></path></g></svg><!--]--><!--]-->Edit this page<!--[--><!--[--><!--]--><!--]--></a></div><div class="vp-meta-item git-info"><div class="vp-meta-item last-updated"><span class="meta-item-label">Last Updated:: </span><time class="meta-item-info" datetime="2026-06-05T04:42:07.000Z" data-allow-mismatch>6/5/26, 12:42 PM</time></div><div class="vp-meta-item contributors"><span class="meta-item-label">Contributors: </span><span class="meta-item-info"><!--[--><!--[--><span class="contributor" title="email: [email protected]">Bobo</span><!----><!--]--><!--]--></span></div></div></footer><nav class="vp-page-nav" aria-label="page navigation"><!----><a class="route-link auto-link next" href="/admin/installation.html" aria-label="GoWind Admin 安装指南"><!--[--><div class="hint">Next <span class="arrow right"></span></div><div class="link"><span class="external-link">GoWind Admin 安装指南</span></div><!--]--></a></nav><!--[--><!--]--></main><!--]--></div><!--[--><!----><!--]--><!--]--></div>
129    
129<script type="module" src="/assets/app-B7HVJ7q3.js" defer></script>
129
130  </body>
131</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.