docs: 更新快速接入文档,sentry 放开追踪模块

This commit is contained in:
wangxuefeng 2025-03-24 14:22:48 +08:00
parent feadd95c4f
commit 1f6f15af9d
5 changed files with 220 additions and 190 deletions

View File

@ -45,6 +45,25 @@ pnpm i @sy/wujie-vue2-renderer-adapter@latest --save
npm i @sy/wujie-vue2-renderer-adapter@latest --save
```
```vue
<script>
import { ref } from 'vue';
import WujieVueRendererAdapter from '@sy/wujie-vue2-renderer-adapter';
</script>
<template>
<!-- 默认使用高级渲染模式,与原页面深度共享 document 与内存上下文 -->
<WujieVueRendererAdapter fileId="test123" projectId="test123" />
<!-- 降级渲染模式,使用无界 iframe 加载悦码渲染器应用 -->
<!-- 缺点在于弹窗与遮罩层会约束在 iframe 空间内,无法与原页面共享 document但无界的 iframe 可以与原页面共享内存上下文 ,这是比传统 iframe 更优的解决方案 -->
<WujieVueRendererAdapter
fileId="test123"
projectId="test123"
degrade="true"
/>
</template>
```
### vue3 项目接入
```bash
@ -53,6 +72,25 @@ pnpm i @sy/wujie-vue3-renderer-adapter@latest --save
npm i @sy/wujie-vue3-renderer-adapter@latest --save
```
```vue
<script setup>
import { ref } from 'vue';
import WujieVueRendererAdapter from '@sy/wujie-vue3-renderer-adapter';
</script>
<template>
<!-- 默认使用高级渲染模式,与原页面深度共享 document 与内存上下文 -->
<WujieVueRendererAdapter fileId="test123" projectId="test123" />
<!-- 降级渲染模式,使用无界 iframe 加载悦码渲染器应用 -->
<!-- 缺点在于弹窗与遮罩层会约束在 iframe 空间内,无法与原页面共享 document但无界的 iframe 可以与原页面共享内存上下文 ,这是比传统 iframe 更优的解决方案 -->
<WujieVueRendererAdapter
fileId="test123"
projectId="test123"
degrade="true"
/>
</template>
```
### react 项目接入
```bash
@ -61,6 +99,13 @@ pnpm i @sy/wujie-react-renderer-adapter@latest --save
npm i @sy/wujie-react-renderer-adapter@latest --save
```
```jsx
import { ref } from 'vue';
import WujieReactRendererAdapter from '@sy/wujie-react-renderer-adapter';
return <WujieReactRendererAdapter fileId="test123" projectId="test123" />;
```
## API 参考
- 6.1 Props 参数详解
@ -68,58 +113,15 @@ npm i @sy/wujie-react-renderer-adapter@latest --save
- 6.3 实例方法
- 6.4 拦截器使用
## 7. 高级用法
## 故障排除
- 7.1 自定义主题
- 7.2 数据交互与通信
- 7.3 插件扩展
- 7.4 微前端降级处理
- 常见错误及解决方案
- 日志与调试
- 悦码的日志输出一般在控制台中有 `console.ts 40` 的源码位置标记
- 兼容性问题处理
- renderer-adapter 是默认使用无界微应用来加载悦码渲染器应用的,这种集成方式会让悦码与你的父应用有更深的上下文结合和交互,但有一定的兼容性问题,当出现你无法解决的兼容性问题时,你可以手动设置 `degrade``false`,这将开启传统降级渲染,使用无界 iframe 加载悦码渲染器应用若还不行可摇人处理王雪峰sy3570
## 8. 故障排除
- 8.1 常见错误及解决方案
- 8.2 日志与调试
- 悦码的日志输出一般在控制台中有 `console.ts 40` 的源码位置标记
- 8.3 兼容性问题处理
- renderer-adapter 是默认使用无界降级的 iframe 加载悦码渲染器应用的,你如果希望悦码与你的页面有更深的上下文结合和交互,你可以手动设置 `degrade``false`,这将开启高级渲染,但有一定的兼容性问题,如果需要在 C 端运行业务,我建议你采用默认的渲染模式
```vue
<script setup>
import { ref } from 'vue';
import { WujieVue3RendererAdapter } from '@sy/wujie-vue3-renderer-adapter';
</script>
<template>
<!-- 高级渲染模式,与原页面深度共享 document 与内存上下文 -->
<WujieVue3RendererAdapter
:degrade="false"
fileId="test123"
projectId="test123"
/>
<!-- 默认降级渲染模式,使用无界 iframe 加载悦码渲染器应用 -->
<!-- 缺点在于弹窗与遮罩层会约束在 iframe 空间内,无法与原页面共享 document但无界的 iframe 可以与原页面共享内存上下文 ,这是比传统 iframe 更优的解决方案 -->
<WujieVue3RendererAdapter fileId="test123" projectId="test123" />
</template>
```
- 8.4 性能问题诊断
- 性能问题诊断
- 悦码渲染器内部使用了 sentry 上报错误,你可以跟 徐川sy0182 申请对应警告邮箱的使用权,获取报错邮件
![sentry 邮箱](https://cms-1256453865.cos.ap-shanghai.myqcloud.com/y-code/20250320/企业微信截图_20250320192100.png)
## 9. 最佳实践
- 9.1 推荐的项目结构
- 9.2 安全性建议
- 9.3 性能优化建议
- 9.4 版本升级策略
## 10. 示例
- 10.1 基础示例
- 10.2 完整应用示例
- 10.3 实际案例展示
## 11. 常见问题 (FAQ)
## 12. 联系支持与反馈渠道

View File

@ -6,107 +6,185 @@ outline: deep
## 前置准备
::: info 环境要求
::: info 适用项目
在启动项目前,你需要确保你的环境满足以下要求:
- vue2
- vue3
- react
- 其他框架请联系伊利sy或王雪峰sy3570添加适配器
- [Node.js](https://nodejs.org/en) 20.15.0 及以上版本,推荐使用 [fnm](https://github.com/Schniz/fnm) 、 [nvm](https://github.com/nvm-sh/nvm) 或者直接使用[pnpm](https://pnpm.io/cli/env) 进行版本管理。
- [Git](https://git-scm.com/) 任意版本。
## 环境要求
验证你的环境是否满足以上要求,你可以通过以下命令查看版本:
- node >= 20
- vue2 > 2.7.0
- vue3 > 3.5.0
- react > 18.0.0
## 准备工作
1. npmrc 配置文件增加镜像指定sy 组件库走 shiyue 源,其他走淘宝镜像
```bash
# 出现相应 node LTS版本即可
node -v
# 出现相应 git 版本即可
git -v
# .npmrc
registry=https://registry.npmmirror.com
@sy:registry=http://sy-registry.shiyue.com
```
2. node 至少要升级为 20 以上的版本
```bash
nvm install 20
nvm use 20
```
若不可行,请查看 node 官网历代大版本的 lts 版本(长期维护),自行安装,查看是否能正常渲染,选取稳定渲染悦码的那一个 node 版本作为开发环境
:::
<!--
## 启动项目
## 接入方式
### 获取源码
::: code-group
```sh [GitHub]
# clone 代码
git clone https://github.com/vbenjs/vue-vben-admin.git
```
```sh [Gitee]
# clone 代码
# Gitee 的代码可能不是最新的
git clone https://gitee.com/annsion/vue-vben-admin.git
```
:::
::: danger 注意
注意存放代码的目录及所有父级目录不能存在中文、韩文、日文以及空格,否则安装依赖后启动会出错。
:::
### 安装依赖
在你的代码目录内打开终端,并执行以下命令:
### vue2 项目接入
```bash
# 进入项目目录
cd vue-vben-admin
# 使用项目指定的pnpm版本进行依赖安装
corepack enable
# 安装依赖
pnpm install
pnpm i @sy/wujie-vue2-renderer-adapter@latest --save
# or 或者
npm i @sy/wujie-vue2-renderer-adapter@latest --save
```
::: tip 注意
```vue
<script>
import { ref } from 'vue';
import WujieVueRendererAdapter from '@sy/wujie-vue2-renderer-adapter';
</script>
- 项目只支持使用 `pnpm` 进行依赖安装,默认会使用 `corepack` 来安装指定版本的 `pnpm`。:
- 如果你的网络环境无法访问npm源你可以设置系统的环境变量`COREPACK_NPM_REGISTRY=https://registry.npmmirror.com`,然后再执行`pnpm install`
- 如果你不想使用`corepack`,你需要禁用`corepack`,然后使用你自己的`pnpm`进行安装。
:::
### 运行项目
#### 选择项目
执行以下命令运行项目:
```bash
# 启动项目
pnpm dev
<template>
<!-- 默认使用高级渲染模式,与原页面深度共享 document 与内存上下文 -->
<WujieVueRendererAdapter fileId="test123" projectId="test123" />
<!-- 降级渲染模式,使用无界 iframe 加载悦码渲染器应用 -->
<!-- 缺点在于弹窗与遮罩层会约束在 iframe 空间内,无法与原页面共享 document但无界的 iframe 可以与原页面共享内存上下文 ,这是比传统 iframe 更优的解决方案 -->
<WujieVueRendererAdapter
fileId="test123"
projectId="test123"
degrade="true"
/>
</template>
```
此时,你会看到类似如下的输出,选择你需要运行的项目:
### vue3 项目接入
```bash
◆ Select the app you need to run [dev]:
│ ○ @vben/web-antd
│ ○ @vben/web-ele
│ ○ @vben/web-naive
│ ○ @vben/docs
│ ● @vben/playground
pnpm i @sy/wujie-vue3-renderer-adapter@latest --save
# or 或者
npm i @sy/wujie-vue3-renderer-adapter@latest --save
```
现在,你可以在浏览器访问 `http://localhost:5555` 查看项目。
#### 路由形式使用
#### 运行指定项目
```ts
import type { RouteRecordRaw } from 'vue-router';
如果你不想选择项目,可以直接运行以下命令运行你需要的应用:
import RendererAdapter from '@sy/vue3-renderer-adapter';
import { isDevMode, LOW_CODE_PROJECT_ID, VITE_DESIGNER_URL } from '@/constants';
import router from '@/router';
const routes: RouteRecordRaw[] = [
{
path: '/micro',
name: 'Micro',
meta: {
title: '微应用容器',
icon: 'ant-design:appstore-outlined',
},
children: [
{
path: 'admin-designer',
name: 'AdminDesigner',
meta: {
hideInMenu: !isDevMode,
title: '平台设计器',
icon: 'ant-design:edit-outlined',
},
component: RendererAdapter,
// 可动态注入 props,根据必要性,可以注入 route 等参数
// 悦码里通过 ctxProps 获取,意思为上下文参数
props: (route) => {
return {
url: `${VITE_DESIGNER_URL}`,
projectId: LOW_CODE_PROJECT_ID,
fileId: 'test123',
// 你还可以提供 父应用的 router来实现子应用执行父应用的 router 方法来实现跳转
router, // 悦码里通过 ctxProps.router 调用
query: {
...route.query,
},
};
},
},
],
},
];
export default routes;
```
#### 组件形式使用
```vue
<script setup>
import { ref } from 'vue';
import WujieVueRendererAdapter from '@sy/wujie-vue3-renderer-adapter';
</script>
<template>
<!-- 默认使用高级渲染模式,与原页面深度共享 document 与内存上下文 -->
<WujieVueRendererAdapter fileId="test123" projectId="test123" />
<!-- 降级渲染模式,使用无界 iframe 加载悦码渲染器应用 -->
<!-- 缺点在于弹窗与遮罩层会约束在 iframe 空间内,无法与原页面共享 document但无界的 iframe 可以与原页面共享内存上下文 ,这是比传统 iframe 更优的解决方案 -->
<WujieVueRendererAdapter
fileId="test123"
projectId="test123"
degrade="true"
/>
</template>
```
### react 项目接入
```bash
pnpm run dev:antd
pnpm run dev:ele
pnpm run dev:naive
pnpm run dev:docs
pnpm run dev:play
``` -->
pnpm i @sy/wujie-react-renderer-adapter@latest --save
# or 或者
npm i @sy/wujie-react-renderer-adapter@latest --save
```
```jsx
import { ref } from 'vue';
import WujieReactRendererAdapter from '@sy/wujie-react-renderer-adapter';
return <WujieReactRendererAdapter fileId="test123" projectId="test123" />;
```
## API 参考
- 6.1 Props 参数详解
- 6.2 事件监听与回调
- 6.3 实例方法
- 6.4 拦截器使用
## 故障排除
- 常见错误及解决方案
- 日志与调试
- 悦码的日志输出一般在控制台中有 `console.ts 40` 的源码位置标记
- 兼容性问题处理
- renderer-adapter 是默认使用无界微应用来加载悦码渲染器应用的,这种集成方式会让悦码与你的父应用有更深的上下文结合和交互,但有一定的兼容性问题,当出现你无法解决的兼容性问题时,你可以手动设置 `degrade``false`,这将开启传统降级渲染,使用无界 iframe 加载悦码渲染器应用若还不行可摇人处理王雪峰sy3570
- 性能问题诊断
- 悦码渲染器内部使用了 sentry 上报错误,你可以跟 徐川sy0182 申请对应警告邮箱的使用权,获取报错邮件
- 也可以加到悦码渲染器的报错沟通群,跟进自己应用的报错推送
![sentry.dashboard](https://cms-1256453865.cos.ap-shanghai.myqcloud.com/y-code/20250324/企业微信截图_1742796499189.png)
![报错沟通群](https://cms-1256453865.cos.ap-shanghai.myqcloud.com/y-code/20250324/企业微信截图_17427961669787.png)
![sentry 邮箱](https://cms-1256453865.cos.ap-shanghai.myqcloud.com/y-code/20250320/企业微信截图_20250320192100.png)

View File

@ -1,37 +1,18 @@
import type { RouteRecordRaw } from 'vue-router';
import RendererAdapter from '@sy/vue3-renderer-adapter';
import WujieVueRendererAdapter from '@sy/wujie-vue3-renderer-adapter';
import axios from 'axios';
import {
isDevMode,
LOW_CODE_PROJECT_ID,
VITE_DESIGNER_URL,
VITE_RENDERER_URL,
VITE_V1_URL,
} from '#/constants';
const baseAxios = axios.create({
baseURL: 'http://localhost:3000',
});
const testToken =
'Bearer eyJraWQiOiJjMzA3NjIwYi1mNzUzLTQ4NjAtYmNmMi01ZDk2NDljOWJlNjYiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJzeTM1MjIiLCJhdWQiOiIxODk3MTEwMDA3NzA1MDY3NTIwIiwibmJmIjoxNzQyNTM3OTkzLCJzY29wZSI6WyJvcGVuaWQiXSwiaXNzIjoiaHR0cDovL2F1dGgtcHJvLWFwaS5zaGl5dWUuY29tIiwiZXhwIjoxNzQyNTM5NzkzLCJpYXQiOjE3NDI1Mzc5OTMsImp0aSI6ImNmZDAyMThjLWUzMmYtNDAyZi04ZmE3LTcxYWY0YzkyODBlZCJ9.REA6izxHosUyXUixXVqwjVcQeKGuUvy5T5PT-tfoP4Qp5R6GcHO81Dd8KS0Vy1jKxpmsRUSBggKxOVkuZ1eLPdUesYfItdAn6kd-VJMJlh-6R9T2wEHc4eIobCvvNnqQVBuFUU56nr-qew9Vho8BCynGZw-FxPkhi1IbmJgJRCY85XXQdBme6gNPyTWnQqaKWPQBqqmjnq8l_zk0sYPUpRvF7b-n4hBFOmiXYXfgx90RcOki2i4dzO3PTQwCPhZzXVeG2GXGORNYTm0CFCUIZkanp0tphd40Ow-wFc7bGjwcfxzpm01lBqMpfLXDILh73R9QkG0KkKM78N1f4AFu_Q';
baseAxios.interceptors.request.use((config) => {
config.headers.Authorization = testToken;
return config;
});
const interceptors = baseAxios.interceptors;
const moduleName = 'micro';
const routes: RouteRecordRaw[] = [
{
path: '/micro',
name: moduleName,
name: 'Micro',
meta: {
title: '微应用容器',
icon: 'ant-design:appstore-outlined',
@ -82,42 +63,12 @@ const routes: RouteRecordRaw[] = [
icon: 'ant-design:delete-outlined',
},
component: RendererAdapter,
props: {
url: `${VITE_V1_URL}`,
accessToken: localStorage.getItem('y-code-access-token'),
},
},
{
path: 'test',
name: `Test`,
meta: {
// hideInMenu: true,
keepAlive: false,
title: '测试',
icon: 'ant-design:delete-outlined',
},
// <WujieVue3RendererAdapter
// fileId="45udpmfvz"
// :interceptors="interceptors"
// name="45udpmfvz"
// :degrade="false"
// projectId="21"
// />
component: WujieVueRendererAdapter,
// props: {
// url: `${VITE_RENDERER_URL}`,
// fileId: '45ud9h6n3',
// projectId: LOW_CODE_PROJECT_ID,
// degrade: false,
// name: '45ud9h6n3',
// },
props: {
url: `${VITE_RENDERER_URL}`,
fileId: '45udpmfvz',
projectId: 21,
degrade: false,
name: '45udpmfvz',
interceptors,
// component: WujieVueRendererAdapter,
props: () => {
return {
url: `${VITE_V1_URL}`,
accessToken: localStorage.getItem('y-code-access-token'),
};
},
},
],

View File

@ -21,13 +21,13 @@ Sentry.init({
dsn: 'https://5bcf1344794fea64fc5e5fe7da4821c1@o4508962650783744.ingest.de.sentry.io/4508962653143120',
integrations: [
// 异常路径回放
// Sentry.replayIntegration(),
Sentry.replayIntegration(),
// 异常端信息追踪
// Sentry.browserTracingIntegration(),
Sentry.browserTracingIntegration(),
],
// Session Replay
// replaysSessionSampleRate: 0.1, // This sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.
// replaysOnErrorSampleRate: 1, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.
replaysSessionSampleRate: 0.1, // This 1sets the sample rate at 10%. You may want to change it to 100% while in development and then sample at a lower rate in production.
replaysOnErrorSampleRate: 1, // If you're not already sampling the entire session, change the sample rate to 100% when sampling sessions where errors occur.
});
// 批量注册组件

View File

@ -33,7 +33,6 @@ export default defineConfig(({ mode }) => {
? {
cors: true,
port: Number(env.VITE_PORT),
https: isDev, // 启用 https配合 mkcert 插件
}
: undefined,