@zy_ui/zy-ui
v0.1.1
Published
ZY-UI — Zy* 业务组件集(Naive UI 之上,经 ZyDataLoader 注入取数,自包含可发布包).
Readme
@zbzc/zy-ui
ZBZC 的 Naive-UI 业务组件集(Zy* 系列)的可发布包。
架构要点
- 单一实现:组件(mock-free)常驻本仓库
src/components/**,经由ZyDataLoader取值/动作, mock 只在演示边界src/mock-adapter.ts。 packages/zy-ui以vite lib从该实现产出自包含dist/zy-ui.js+dist/style.css(运行时外部仅vue、naive-ui;@vicons/*、@antv/x6一并打入)。- 类型出厂状态:主入口(各
Zy*组件)暂只随 JS/CSS;dist/types/**(由src/zylibalias-free 目录经 tsc 生成)仅覆盖数据契约/域模型(自@zbzc/zy-ui/data取)。 组件级 props 类型(需遍历 .vue 生成首轮声明)仍是后续改进项。
在宿主(App/新低代码项目)接入
- 依赖本包 + naive-ui + vue(源码构建时用 workspace 链接或私有 registry/git 引用包)。
- naive 四个 provider 包裹,并注入数据源:
<script setup>
import { provideZyData, useZyData } from '@zbzc/zy-ui'
// 返回 Promise 的方法按 ZyDataLoader 接口实现(未实现的方法会在调用时抛可读错误)
provideZyData({
loadTabs: (viewCode) => http.get(`/tabs/${viewCode}`).then((r) => r.body),
loadOperations: (op) => http.fetchOperations(op),
getObject: (op) => http.getObject(op),
exportRows: () => exportService().then((b) => b),
// ……对象 CRUD/锁/版本、IDM 用户/组织/生命周期、人员树、关系图、模块X6、字典 等按需
})
</script>
<template>
<n-config-provider>
<n-message-provider><n-dialog-provider><n-notification-provider>
<MyPage/>
</n-notification-provider></n-dialog-provider></n-message-provider>
</n-config-provider>
</template>- 运行时 API(
provideZyData/useZyData及各Zy*组件)来自主入口import { ... } from '@zbzc/zy-ui'。 - 类型契约(
ZyDataLoader、域模型ZyRow/OptItem/ObjDetail/…)可从import type { ZyDataLoader } from '@zbzc/zy-ui/data'。
- demo 内 import 参考
src/views/**(如ZyTable/ZyTabs/ZyOperateBtns/ZySelectXxx等 26 个Zy*)。
ZyDataLoader 完整方法清单见 src/zylib/data-loader.ts(=packages/zy-ui 源所对齐的契约)。
演示工程开发 / 校验
pnpm install
pnpm dev # 打开各路由浏览
pnpm build # demo 产物
pnpm smoke # headless chromium 逐路由冒烟(22 路由,判 console error + 文本渲染)
pnpm -C packages/zy-ui build:runtime # 组装运行时(包 runtime dist)
pnpm -C packages/zy-ui build:types # 生成类型契约 dist/types
pnpm -C packages/zy-ui build # 二者都做发布
pnpm -C packages/zy-ui pack # 本地校验包内容(dist/{zy-ui.js,style.css,types/**} + README + package.json)
# 推独立仓库后,新低代码项目以 registry 或 git 依赖引用:
# "dependencies": { "@zbzc/zy-ui": "git+https://<host>/<org>/zy-ui.git#v0.1.0" }