This commit is contained in:
taylor
2024-10-16 17:02:47 +08:00
commit dc507d2a0b
266 changed files with 62650 additions and 0 deletions

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-14e1a5c4",
"path": "/intro/1.html",
"title": "原型图",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/1.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,4 @@
<template><h1 id="原型图" tabindex="-1"><a class="header-anchor" href="#原型图" aria-hidden="true">#</a> 原型图</h1>
<p>我们以写好项目为例来查看项目功能&amp;效果</p>
<p>详见<code>syt-admin-final</code></p>
</template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-16967e63",
"path": "/intro/2.html",
"title": "接口文档",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/2.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,17 @@
<template><h1 id="接口文档" tabindex="-1"><a class="header-anchor" href="#接口文档" aria-hidden="true">#</a> 接口文档</h1>
<p>我们提供了在线访问接口文档地址如下</p>
<ul>
<li>
<p><a href="http://139.198.34.216:8201/swagger-ui.html" target="_blank" rel="noopener noreferrer">医院管理接口文档<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="http://139.198.34.216:8202/swagger-ui.html" target="_blank" rel="noopener noreferrer">数据字典接口文档<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="http://139.198.34.216:8203/swagger-ui.html" target="_blank" rel="noopener noreferrer">用户管理接口文档<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="http://139.198.34.216:8206/swagger-ui.html" target="_blank" rel="noopener noreferrer">订单管理接口文档<ExternalLinkIcon/></a></p>
</li>
</ul>
</template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-184b5702",
"path": "/intro/3.html",
"title": "技术选型",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/3.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,15 @@
<template><h1 id="技术选型" tabindex="-1"><a class="header-anchor" href="#技术选型" aria-hidden="true">#</a> 技术选型</h1>
<ul>
<li>react@18 框架</li>
<li>react-router-dom@6 前端路由</li>
<li>redux 集中状态管理方案</li>
<li>axios 发送请求函数</li>
<li>antd UI库</li>
<li>nprogress 进度条</li>
<li>typescript</li>
<li>echarts 数据可视化</li>
<li>create-react-app 脚手架</li>
<li>craco 修改脚手架配置</li>
<li>...</li>
</ul>
</template>

View File

@@ -0,0 +1,37 @@
export const data = {
"key": "v-1a002fa1",
"path": "/intro/4.html",
"title": "项目代码",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [
{
"level": 2,
"title": "项目基础模板",
"slug": "项目基础模板",
"children": []
},
{
"level": 2,
"title": "项目目录文件介绍",
"slug": "项目目录文件介绍",
"children": []
}
],
"git": {},
"filePathRelative": "intro/4.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,42 @@
<template><h1 id="项目代码" tabindex="-1"><a class="header-anchor" href="#项目代码" aria-hidden="true">#</a> 项目代码</h1>
<h2 id="项目基础模板" tabindex="-1"><a class="header-anchor" href="#项目基础模板" aria-hidden="true">#</a> 项目基础模板</h2>
<p>详见<code>syt-admin-base</code>项目</p>
<h2 id="项目目录文件介绍" tabindex="-1"><a class="header-anchor" href="#项目目录文件介绍" aria-hidden="true">#</a> 项目目录文件介绍</h2>
<div class="language-text ext-text line-numbers-mode"><pre v-pre class="language-text"><code> mock # 模拟请求返回数据的文件夹
index.js # 配置文件
user.js # 模拟登录请求的文件
public # 公共静态资源目录
favicon.ico # 网站图标
index.html # 主页面
logo192.png # app图标
logo512.png # app图标
manifest.json # app配置文件
robots.txt # 网站跟爬虫间的协议
src # 主目录
api # 接口文件
app # redux配置文件
components # 公共组件
Loading # loading组件
Redirect # 重定向组件
withAuthorization # 权限认证组件
layouts # 主要布局组件
pages # 路由组件
routes # 路由配置
styles # 全局/公共样式
utils # 工具函数
http # 封装请求函数
App.tsx # App组件
index.ts # 主入口
react-app-env.d.ts # 类型文件在编译时会引入额外文件
reportWebVitals.ts # 基于Google的网站性能分析文件
setupTests.ts # 安装测试
.env.development # 开发环境加载的环境变量配置
.env.production # 生产环境加载的环境变量配置
.gitignore # git忽略文件
craco.config.js # react脚手架配置文件
package.json # 包文件
README.MD # 项目说明文件
tsconfig.extend.json # 路径别名配置文件
tsconfig.json # ts配置文件
yarn.lock # yarn下载包的缓存文件
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br></div></div></template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-7e7b467b",
"path": "/intro/api.html",
"title": "接口文档",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/api.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,17 @@
<template><h1 id="接口文档" tabindex="-1"><a class="header-anchor" href="#接口文档" aria-hidden="true">#</a> 接口文档</h1>
<p>我们提供了在线访问接口文档地址如下</p>
<ul>
<li>
<p><a href="http://139.198.34.216:8201/swagger-ui.html" target="_blank" rel="noopener noreferrer">医院管理接口文档<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="http://139.198.34.216:8202/swagger-ui.html" target="_blank" rel="noopener noreferrer">数据字典接口文档<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="http://139.198.34.216:8203/swagger-ui.html" target="_blank" rel="noopener noreferrer">用户管理接口文档<ExternalLinkIcon/></a></p>
</li>
<li>
<p><a href="http://139.198.34.216:8206/swagger-ui.html" target="_blank" rel="noopener noreferrer">订单管理接口文档<ExternalLinkIcon/></a></p>
</li>
</ul>
</template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-0670fc65",
"path": "/intro/asset.html",
"title": "学习资料",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/asset.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,5 @@
<template><h1 id="学习资料" tabindex="-1"><a class="header-anchor" href="#学习资料" aria-hidden="true">#</a> 学习资料</h1>
<ul>
<li>打开 <a href="http://www.bilibili.com/" target="_blank" rel="noopener noreferrer">哔哩哔哩<ExternalLinkIcon/></a> 视频网站搜索尚硅谷</li>
</ul>
</template>

View File

@@ -0,0 +1,37 @@
export const data = {
"key": "v-63b9ef10",
"path": "/intro/code.html",
"title": "项目代码",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [
{
"level": 2,
"title": "项目基础模板",
"slug": "项目基础模板",
"children": []
},
{
"level": 2,
"title": "项目目录文件介绍",
"slug": "项目目录文件介绍",
"children": []
}
],
"git": {},
"filePathRelative": "intro/code.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,42 @@
<template><h1 id="项目代码" tabindex="-1"><a class="header-anchor" href="#项目代码" aria-hidden="true">#</a> 项目代码</h1>
<h2 id="项目基础模板" tabindex="-1"><a class="header-anchor" href="#项目基础模板" aria-hidden="true">#</a> 项目基础模板</h2>
<p>详见<code>syt-admin-base</code>项目</p>
<h2 id="项目目录文件介绍" tabindex="-1"><a class="header-anchor" href="#项目目录文件介绍" aria-hidden="true">#</a> 项目目录文件介绍</h2>
<div class="language-text ext-text line-numbers-mode"><pre v-pre class="language-text"><code> mock # 模拟请求返回数据的文件夹
index.js # 配置文件
user.js # 模拟登录请求的文件
public # 公共静态资源目录
favicon.ico # 网站图标
index.html # 主页面
logo192.png # app图标
logo512.png # app图标
manifest.json # app配置文件
robots.txt # 网站跟爬虫间的协议
src # 主目录
api # 接口文件
app # redux配置文件
components # 公共组件
Loading # loading组件
Redirect # 重定向组件
withAuthorization # 权限认证组件
layouts # 主要布局组件
pages # 路由组件
routes # 路由配置
styles # 全局/公共样式
utils # 工具函数
http # 封装请求函数
App.tsx # App组件
index.ts # 主入口
react-app-env.d.ts # 类型文件在编译时会引入额外文件
reportWebVitals.ts # 基于Google的网站性能分析文件
setupTests.ts # 安装测试
.env.development # 开发环境加载的环境变量配置
.env.production # 生产环境加载的环境变量配置
.gitignore # git忽略文件
craco.config.js # react脚手架配置文件
package.json # 包文件
README.MD # 项目说明文件
tsconfig.extend.json # 路径别名配置文件
tsconfig.json # ts配置文件
yarn.lock # yarn下载包的缓存文件
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br></div></div></template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-581e5b94",
"path": "/intro/group.html",
"title": "适合群体",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/group.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,7 @@
<template><h1 id="适合群体" tabindex="-1"><a class="header-anchor" href="#适合群体" aria-hidden="true">#</a> 适合群体</h1>
<ul>
<li><code>Webpack</code> 零基础想从事项目脚手架研发的人</li>
<li>具备 <code>Webpack</code> 开发经验想要提升更多的人</li>
<li>不是很了解 <code>Webpack</code>但是想提升工资的人</li>
</ul>
</template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-f9e30908",
"path": "/intro/",
"title": "依赖环境",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/README.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,5 @@
<template><h1 id="依赖环境" tabindex="-1"><a class="header-anchor" href="#依赖环境" aria-hidden="true">#</a> 依赖环境</h1>
<ul>
<li>Nodejs 16+</li>
</ul>
</template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-7d0ce4de",
"path": "/intro/learn.html",
"title": "我能学到什么",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/learn.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,8 @@
<template><h1 id="我能学到什么" tabindex="-1"><a class="header-anchor" href="#我能学到什么" aria-hidden="true">#</a> 我能学到什么</h1>
<ul>
<li>青铜我们会学习 <code>Webpack</code> 基础包含是什么有什么用如何使用这是最重要的</li>
<li>黄金我们会学习 <code>Webpack</code> 高级优化配置提升项目打包和运行时性能这也是面试中最常问的点</li>
<li>钻石我们会学习如何从零开始搭建一个项目脚手架并进行优化包含 <code>React</code> <code>Vue</code></li>
<li>王者我们可以学习 <code>Webpack</code> 的原理这也是迈向大神必备一条路</li>
</ul>
</template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-10b408dc",
"path": "/intro/pre.html",
"title": "前置知识",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/pre.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,16 @@
<template><h1 id="前置知识" tabindex="-1"><a class="header-anchor" href="#前置知识" aria-hidden="true">#</a> 前置知识</h1>
<ul>
<li>
<p> <code>Nodejs</code> 各个核心模块操作有一定认识</p>
<ul>
<li>比如<code>fs</code><code>path</code><code>os</code> </li>
</ul>
</li>
<li>
<p> <code>React</code> <code>Vue</code> 有一定认识并且开发过项目</p>
<ul>
<li>这对于学习项目部分内容非常有帮助</li>
</ul>
</li>
</ul>
</template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-33eab86d",
"path": "/intro/proto.html",
"title": "原型图",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/proto.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,4 @@
<template><h1 id="原型图" tabindex="-1"><a class="header-anchor" href="#原型图" aria-hidden="true">#</a> 原型图</h1>
<p>我们以写好项目为例来查看项目功能&amp;效果</p>
<p>详见<code>syt-admin-final</code></p>
</template>

View File

@@ -0,0 +1,69 @@
export const data = {
"key": "v-3444b09a",
"path": "/intro/settings.html",
"title": "项目配置",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [
{
"level": 2,
"title": "路径别名",
"slug": "路径别名",
"children": [
{
"level": 3,
"title": "概述",
"slug": "概述",
"children": []
},
{
"level": 3,
"title": "配置",
"slug": "配置",
"children": []
}
]
},
{
"level": 2,
"title": "代理服务器",
"slug": "代理服务器",
"children": [
{
"level": 3,
"title": "概述",
"slug": "概述-1",
"children": []
},
{
"level": 3,
"title": "原理图",
"slug": "原理图",
"children": []
},
{
"level": 3,
"title": "配置",
"slug": "配置-1",
"children": []
}
]
}
],
"git": {},
"filePathRelative": "intro/settings.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,84 @@
<template><h1 id="项目配置" tabindex="-1"><a class="header-anchor" href="#项目配置" aria-hidden="true">#</a> 项目配置</h1>
<h2 id="路径别名" tabindex="-1"><a class="header-anchor" href="#路径别名" aria-hidden="true">#</a> 路径别名</h2>
<h3 id="概述" tabindex="-1"><a class="header-anchor" href="#概述" aria-hidden="true">#</a> 概述</h3>
<p>开发时当组件层级太深时我们引入其他目录下文件需要回退很多层目录很麻烦</p>
<p>路径别名则提供另外一种写路径的方式或者说路径简写让我们可以从根路径出发直接写路径简单方便</p>
<h3 id="配置" tabindex="-1"><a class="header-anchor" href="#配置" aria-hidden="true">#</a> 配置</h3>
<div class="language-json ext-json line-numbers-mode"><pre v-pre class="language-json"><code><span class="token comment">// tsconfig.extend.json</span>
<span class="token punctuation">{</span>
<span class="token property">"compilerOptions"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"baseUrl"</span><span class="token operator">:</span> <span class="token string">"."</span><span class="token punctuation">,</span>
<span class="token property">"paths"</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token property">"@/*"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"./src/*"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"@api/*"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"./src/api/*"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"@assets/*"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"./src/assets/*"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"@comps/*"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"./src/components/*"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"@utils/*"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"./src/utils/*"</span><span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token property">"@pages/*"</span><span class="token operator">:</span> <span class="token punctuation">[</span><span class="token string">"./src/pages/*"</span><span class="token punctuation">]</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
<span class="token punctuation">}</span>
</code></pre><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br></div></div><p>内部还做了两件事</p>
<ol>
<li>实现功能通过插件将上述配置加载到 <code>craco.config.js</code> , 最终会修改 <code>React</code> 脚手架配置所以就可以项目中使用上述路径别名</li>
<li>路径提示通过extends将上述配置加载到 <code>tsconfig.json</code> 此时在 <code>VSCode</code> 写代码才会有路径提示</li>
</ol>
<p>我们将来如果要添加新的路径别名只需要修改 <code>tsconfig.extend.json</code> 即可</p>
<h2 id="代理服务器" tabindex="-1"><a class="header-anchor" href="#代理服务器" aria-hidden="true">#</a> 代理服务器</h2>
<h3 id="概述-1" tabindex="-1"><a class="header-anchor" href="#概述-1" aria-hidden="true">#</a> 概述</h3>
<p>代理服务器可以解决开发时的跨域问题</p>
<h3 id="原理图" tabindex="-1"><a class="header-anchor" href="#原理图" aria-hidden="true">#</a> 原理图</h3>
<p><img src="/imgs/intro/proxy.png" alt="代理服务器"></p>
<h3 id="配置-1" tabindex="-1"><a class="header-anchor" href="#配置-1" aria-hidden="true">#</a> 配置</h3>
<p>激活开发服务器代理功能就要进行代理服务武配置</p>
<div class="language-javascript ext-js line-numbers-mode"><pre v-pre class="language-javascript"><code><span class="token comment">// craco.config.js</span>
<span class="token keyword">const</span> CracoLessPlugin <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">"craco-less"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> CracoAlias <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">"craco-alias"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token keyword">const</span> mock <span class="token operator">=</span> <span class="token function">require</span><span class="token punctuation">(</span><span class="token string">"./mock"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
module<span class="token punctuation">.</span>exports <span class="token operator">=</span> <span class="token punctuation">{</span>
<span class="token literal-property property">plugins</span><span class="token operator">:</span> <span class="token punctuation">[</span>
<span class="token comment">// 自定义主题</span>
<span class="token punctuation">{</span>
<span class="token literal-property property">plugin</span><span class="token operator">:</span> CracoLessPlugin<span class="token punctuation">,</span>
<span class="token literal-property property">options</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">lessLoaderOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">lessOptions</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token comment">// modifyVars: { "@primary-color": "#1DA57A" },</span>
<span class="token literal-property property">javascriptEnabled</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token comment">// 路径别名</span>
<span class="token punctuation">{</span>
<span class="token literal-property property">plugin</span><span class="token operator">:</span> CracoAlias<span class="token punctuation">,</span>
<span class="token literal-property property">options</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token literal-property property">source</span><span class="token operator">:</span> <span class="token string">"tsconfig"</span><span class="token punctuation">,</span>
<span class="token literal-property property">baseUrl</span><span class="token operator">:</span> <span class="token string">"./"</span><span class="token punctuation">,</span>
<span class="token literal-property property">tsConfigPath</span><span class="token operator">:</span> <span class="token string">"./tsconfig.extend.json"</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">]</span><span class="token punctuation">,</span>
<span class="token comment">// 开发服务器配置</span>
<span class="token literal-property property">devServer</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token comment">// 激活代理服务器</span>
<span class="token literal-property property">proxy</span><span class="token operator">:</span> <span class="token punctuation">{</span>
<span class="token comment">// 将来以/dev-api开头的请求就会被开发服务器转发到目标服务器去。</span>
<span class="token string-property property">"/dev-api"</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token comment">// 需要转发的请求前缀</span>
<span class="token literal-property property">target</span><span class="token operator">:</span> <span class="token string">"http://syt-api.atguigu.cn"</span><span class="token punctuation">,</span> <span class="token comment">// 目标服务器地址 </span>
<span class="token literal-property property">changeOrigin</span><span class="token operator">:</span> <span class="token boolean">true</span><span class="token punctuation">,</span> <span class="token comment">// 允许跨域</span>
<span class="token literal-property property">pathRewrite</span><span class="token operator">:</span> <span class="token punctuation">{</span> <span class="token comment">// 路径重写</span>
<span class="token string-property property">"^/dev-api"</span><span class="token operator">:</span> <span class="token string">""</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token comment">// mock服务配置</span>
<span class="token function-variable function">onAfterSetupMiddleware</span><span class="token operator">:</span> <span class="token keyword">function</span> <span class="token punctuation">(</span><span class="token parameter">devServer</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
<span class="token function">mock</span><span class="token punctuation">(</span>devServer<span class="token punctuation">.</span>app<span class="token punctuation">)</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">,</span>
<span class="token punctuation">}</span><span class="token punctuation">;</span>
</code></pre><div class="highlight-lines"><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><div class="highlight-line">&nbsp;</div><br><br><br><br><br><br></div><div class="line-numbers" aria-hidden="true"><span class="line-number">1</span><br><span class="line-number">2</span><br><span class="line-number">3</span><br><span class="line-number">4</span><br><span class="line-number">5</span><br><span class="line-number">6</span><br><span class="line-number">7</span><br><span class="line-number">8</span><br><span class="line-number">9</span><br><span class="line-number">10</span><br><span class="line-number">11</span><br><span class="line-number">12</span><br><span class="line-number">13</span><br><span class="line-number">14</span><br><span class="line-number">15</span><br><span class="line-number">16</span><br><span class="line-number">17</span><br><span class="line-number">18</span><br><span class="line-number">19</span><br><span class="line-number">20</span><br><span class="line-number">21</span><br><span class="line-number">22</span><br><span class="line-number">23</span><br><span class="line-number">24</span><br><span class="line-number">25</span><br><span class="line-number">26</span><br><span class="line-number">27</span><br><span class="line-number">28</span><br><span class="line-number">29</span><br><span class="line-number">30</span><br><span class="line-number">31</span><br><span class="line-number">32</span><br><span class="line-number">33</span><br><span class="line-number">34</span><br><span class="line-number">35</span><br><span class="line-number">36</span><br><span class="line-number">37</span><br><span class="line-number">38</span><br><span class="line-number">39</span><br><span class="line-number">40</span><br><span class="line-number">41</span><br><span class="line-number">42</span><br><span class="line-number">43</span><br><span class="line-number">44</span><br><span class="line-number">45</span><br><span class="line-number">46</span><br><span class="line-number">47</span><br><span class="line-number">48</span><br></div></div><p>需要注意的是一旦生产环境打包项目服务器以及相关配置并不会打包进去所以如果运行打包后的项目还会产生跨域问题</p>
<p>最终还是需要服务端来解决将来我们会学习 <code>nginx</code> 来解决此问题</p>
</template>

View File

@@ -0,0 +1,24 @@
export const data = {
"key": "v-5faaa051",
"path": "/intro/technology.html",
"title": "技术选型",
"lang": "zh-CN",
"frontmatter": {},
"excerpt": "",
"headers": [],
"git": {},
"filePathRelative": "intro/technology.md"
}
if (import.meta.webpackHot) {
import.meta.webpackHot.accept()
if (__VUE_HMR_RUNTIME__.updatePageData) {
__VUE_HMR_RUNTIME__.updatePageData(data)
}
}
if (import.meta.hot) {
import.meta.hot.accept(({ data }) => {
__VUE_HMR_RUNTIME__.updatePageData(data)
})
}

View File

@@ -0,0 +1,15 @@
<template><h1 id="技术选型" tabindex="-1"><a class="header-anchor" href="#技术选型" aria-hidden="true">#</a> 技术选型</h1>
<ul>
<li>react@18 框架</li>
<li>react-router-dom@6 前端路由</li>
<li>redux 集中状态管理方案</li>
<li>axios 发送请求函数</li>
<li>antd UI库</li>
<li>nprogress 进度条</li>
<li>typescript</li>
<li>echarts 数据可视化</li>
<li>create-react-app 脚手架</li>
<li>craco 修改脚手架配置</li>
<li>...</li>
</ul>
</template>