{{ config.title || '仪表板组件' }}
```
## 6. 构建和部署
### 构建项目
```bash
npm run build
```
### 输出文件
构建后会在`dist`目录生成以下核心文件:
- `remoteEntry.js` - 模块联邦入口文件
- `Page.js` - 详情页面组件
- `Config.js` - 配置页面组件
- `Dashboard.js` - 仪表板组件
### 部署要求
这些文件需要部署到后端,并通过以下URL可访问:
- `/api/v1/plugin/file/{插件ID}/dist/remoteEntry.js`
- `/api/v1/plugin/file/{插件ID}/dist/Page.js`
- `/api/v1/plugin/file/{插件ID}/dist/Config.js`
- `/api/v1/plugin/file/{插件ID}/dist/Dashboard.js`
## 7. 后端API要求
### 7.1 注册远程组件API
后端需要实现以下API用于注册远程组件(已公共实现,插件按第三方插件开发要求实现`get_form_file`、`get_page_file`和`get_dashboard_file`即可):
```
GET /api/plugins/remotes
```
返回结构:
```json
[
{
"id": "my-plugin", // 插件ID,必需
"url": "/custom/path/to/plugin" // 自定义组件路径,可选
},
{
"id": "another-plugin" // 使用默认路径
}
]
```
### 7.2 组件访问路径
指定了`url`后使用:
- `{url}/remoteEntry.js`
- `{url}/Page.js`
- `{url}/Config.js`
- `{url}/Dashboard.js`
## 8. 调试与排错
### 常见问题
1. **模块无法加载**
- 检查网络请求是否成功(状态码200)
- 确认文件路径是否正确
- 检查CORS跨域设置
2. **模块加载但组件不显示**
- 检查控制台错误信息
- 确认组件是否正确导出
- 验证共享依赖配置
3. **"Module name 'vue' does not resolve to a valid URL"**
- 检查`shared`配置是否正确
- 设置`requiredVersion: false`尝试解决
4. **"Top-level await is not available"**
- 确保`build.target`设置为`esnext`
## 9. 高级配置
### 9.1 CSS隔离
为防止样式冲突,建议使用CSS Modules或scoped样式:
```vue
```
### 9.2 共享更多依赖
如果您的插件需要共享更多依赖,可以扩展shared配置:
```js
shared: {
vue: { requiredVersion: false },
vuetify: { requiredVersion: false },
'@vueuse/core': { requiredVersion: false },
pinia: { requiredVersion: false }
}
```
### 9.3 开发环境测试
开发期间可以使用以下配置在本地测试:
```typescript
// vite.config.ts
export default defineConfig({
server: {
port: 5001, // 使用不同于主应用的端口
cors: true, // 启用CORS
origin: 'http://localhost:5001'
}
})
```
## 10. 示例代码
完整的示例插件代码可在以下仓库获取:
[https://github.com/example/moviepilot-plugin-example](https://github.com/example/moviepilot-plugin-example) (示例链接,实际链接需替换)
## 11. 参考资料
- [Module Federation官方文档](https://webpack.js.org/concepts/module-federation/)
- [Vite Plugin Federation](https://github.com/originjs/vite-plugin-federation)
- [Vue 3官方文档](https://vuejs.org/)
---
如有问题,请提交Issue。