@zxiaosi/sdk 1.0.0-beta.3 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +11 -195
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,205 +1,21 @@
1
- ## 路线规划
2
-
3
- - [规划图地址](https://excalidraw.com/#json=_CghR9MKEcgUt4SaYUXFY,V9n_bmADhi6JXp2TUk-ObA)
4
-
5
- ![](https://cdn.zxiaosi.com/hexo/micro-sdk/sdk0.2.png)
6
-
7
- - [更多详情](https://zxiaosi.com/archives/c6c40209.html)
8
-
9
- ## 快速开始
10
-
11
- ```bash
12
- # 安装 @zxiaosi/sdk 对应的版本 0.5.x
13
- npm install -g @zxiaosi/create-sdk
14
-
15
- npx create-sdk
16
- ```
17
-
18
1
  ## 项目介绍
19
2
 
20
- - 整个 `SDK` 都是围绕 `getRoutesApi`、`getUserInfoApi` 这两个接口进行设计的,旨在简化微前端应用的开发
21
-
22
- - `getRoutesApi` 接口用于获取应用路由信息,包括主应用和微应用的路由配置。因为 `Qiankun` 的 `entry` 配置比较特殊,所以 `主应用` 需要使用 `vite-plugin-mock` 插件 `mock` 接口
23
- - 在本地开发是本地服务 `"entry": "http://localhost:5174"`
24
- - 在生产环境是文件路径 `"entry": "/subapp/"`
25
-
26
- - `getUserInfoApi` 接口用于获取用户相关数据,以便进行权限控制和个性化设置。
27
- - `user`:用户信息(必选)
28
- - `permissions`:权限信息(必选)
29
- - `role`:角色信息(可选)
30
- - `setting`:配置信息(可选)
31
-
32
- ## 核心代码
33
-
34
- ### 主应用
35
-
36
- - 在 `main.ts` 中进行 `SDK` 的挂载
37
-
38
- ```js
39
- import {
40
- sdk,
41
- SdkApiPlugin,
42
- SdkAppPlugin,
43
- SdkClientPlugin,
44
- SdkConfigPlugin,
45
- SdkI18nPlugin,
46
- SdkStoragePlugin,
47
- SdkStorePlugin,
48
- SdkUIPlugin,
49
- } from '@zxiaosi/sdk';
50
- import { createRoot } from 'react-dom/client';
51
- import App from './App';
52
-
53
- const getRoutesApi = async () => ({
54
- code: 0,
55
- data: [
56
- { path: '/home', name: '首页', component: 'Home' },
57
- { path: '/subapp', name: '微应用', component: 'Microapp',
58
- routeAttr: `{"name": "subapp", "entry": "http://localhost:5174", "activeRule": "/subapp", "rootId": "sub-app"}`,
59
- },
60
- ],
61
- })
62
-
63
- const getUserInfoApi = async () => ({
64
- code: 0,
65
- data: { user: {}, permissions: ['/home', '/subapp'], roles: [], settings: {} },
66
- })
67
-
68
- const loginApi = async () => ({ code: 0, data: { token: 'xxxx' } })
69
-
70
- /** 挂载 SDK */
71
- sdk
72
- .use(SdkApiPlugin, {
73
- getRoutesApi,
74
- getUserInfoApi,
75
- loginApi,
76
- })
77
- .use(SdkAppPlugin)
78
- .use(SdkClientPlugin)
79
- .use(SdkConfigPlugin, {
80
- qiankunMode: 'router',
81
- proLayoutConfig: {
82
- title: 'Demo',
83
- layout: 'mix',
84
- },
85
- })
86
- .use(SdkI18nPlugin)
87
- .use(SdkStoragePlugin)
88
- .use(SdkStorePlugin)
89
- .use(SdkUIPlugin, { Home: () => <div>Home</div> })
90
- .mount('sdk');
91
-
92
- /** 渲染主应用 */
93
- createRoot(document.getElementById('root')!).render(<App />);
94
- ```
3
+ - 整个 `SDK` 都是围绕 `sdk.app.user`、 `sdk.app.menus`、`sdk.app.microApps` 进行设计的,旨在简化微前端应用的开发
95
4
 
96
- - `App.tsx` 中使用 `<Mainapp />` 组件渲染主应用
5
+ - 主应用 `sdk.use(plugin, opts).mount('sdk')` 微应用 `sdk.extend('sdk')` → 共享同一套状态与能力
97
6
 
98
- ```js
99
- import { sdk } from '@zxiaosi/sdk';
7
+ - 架构图
100
8
 
101
- function App() {
102
- const Mainapp = sdk.ui.getComponent('Mainapp');
103
- return <Mainapp />;
104
- }
9
+ ![](https://cdn.zxiaosi.com/hexo/micro-sdk/sdk1.0.png)
105
10
 
106
- export default App;
107
- ```
11
+ - [架构图地址](https://excalidraw.com/#json=D71Fw3vbEUxoaA-15i2Cj,VMKGJ8x_P3I1MrMbVBjgcw)
108
12
 
109
- ### 微应用
13
+ - [更多详情](https://zxiaosi.com/archives/113adf2d.html)
110
14
 
111
- - 在 `vite.config.ts` 中配置 `vite-plugin-qiankun-lite` 插件
112
-
113
- ```js
114
- import { defineConfig } from 'vite';
115
- import react from '@vitejs/plugin-react';
116
- import qiankun from 'vite-plugin-qiankun-lite';
117
-
118
- export default defineConfig({
119
- plugins: [
120
- react(),
121
- qiankun({ name: 'subapp', sandbox: !!process.env.VITE_SANDBOX }),
122
- ],
123
- server: {
124
- port: 5174,
125
- },
126
- });
127
- ```
128
-
129
- - 在 `main.ts` 中进行 `SDK` 的继承
130
-
131
- ```js
132
- import { sdk } from '@zxiaosi/sdk';
133
- import { createRoot, type Root } from 'react-dom/client';
134
- import App from './App.tsx';
135
- import './index.css';
136
-
137
- let root: Root;
138
- const render = (props: any = {}) => {
139
- const container = props?.container
140
- ? props.container.querySelector('#root')
141
- : document.getElementById('root');
142
-
143
- root = createRoot(container);
144
-
145
- root.render(<App />);
146
- };
147
-
148
- if (!window.__POWERED_BY_QIANKUN__) {
149
- render();
150
- }
151
-
152
- export async function mount(props: any) {
153
- console.log(`Microapp mount`, props);
154
- sdk.extend('sdk'); // 继承 sdk 功能
155
- render(props);
156
- }
157
-
158
- export async function unmount(props: any) {
159
- console.log(`Microapp unmount`, props);
160
- root.unmount();
161
- }
162
- ```
163
-
164
- - [可参考项目](https://github.com/zxiaosi-team/fontend-sdk/tree/master/packages)
165
-
166
- ## 注意事项
167
-
168
- - `SDK` 不能在 `组件外` 进行使用,否则会报 `SDK 未初始化` 错误
169
-
170
- - 微应用使用 `sdk.ui.renderComponent('xxx')` 时,会报 `React 多实例` 的错误,需要使用 `vite-plugin-externals` 插件将 `React` 等依赖排除在打包之外。[更多详情](https://zxiaosi.com/archives/bc84a75a.html)
171
- - 在主/子应用的 `index.html` 中使用 `cdn` 的方式去加载 `react` 和 `react-dom` 包
172
-
173
- ```html
174
- <!doctype html>
175
- <html lang="en">
176
- <head>
177
- <title>%VITE_APP_TITLE%</title>
178
- <script src="https://unpkg.com/react@18.3.1/umd/react.development.js"></script>
179
- <script src="https://unpkg.com/react-dom@18.3.1/umd/react-dom.development.js"></script>
180
- </head>
181
- <body>
182
- <div id="root"></div>
183
- <script type="module" src="/src/main.tsx"></script>
184
- </body>
185
- </html>
186
- ```
187
-
188
- - 在主/子应用中使用 `vite-plugin-externals` 插件去排除 `react` 和 `react-dom` 包
189
-
190
- ```ts
191
- import { viteExternalsPlugin } from 'vite-plugin-externals';
15
+ ## 快速开始
192
16
 
193
- export default defineConfig({
194
- plugins: [
195
- viteExternalsPlugin({
196
- react: 'React',
17
+ ```sh
18
+ npm install -g @zxiaosi/create-sdk
197
19
 
198
- // 开发环境不排除 react-dom 依赖, 防止热更新失效
199
- // 或者 浏览器安装 React Developer Tools 插件
200
- 'react-dom': 'ReactDOM',
201
- 'react-dom/client': 'ReactDOM',
202
- }),
203
- ],
204
- });
205
- ```
20
+ npx create-sdk
21
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zxiaosi/sdk",
3
- "version": "1.0.0-beta.3",
3
+ "version": "1.0.0",
4
4
  "description": "A micro frontend kit",
5
5
  "keywords": [
6
6
  "micro frontend",