Skip to content

前端参考

本页是前端开发时的速查入口。@ako-dev/ako 的公开导出由包根入口提供;业务代码优先从包根导入,不要依赖 src 下的内部路径。

公开导出分组

分组常用导出
运行时AkoAkoSymbolAkoOptionsSymbolAkoApiSymbol
APIDefaultAkoApiDefaultAkoMenuDefaultModelApiDefaultAuthApi
响应类型MenuRespRespMenuItemModelPage
模型类型DbModelDbFieldBaseModelMenuItemMenuGroup
字段类型TypeProviderEnumOptionsMappingOptions
按钮类型ButtonEntryButtonDialogInfoButtonPanelInfo
工具函数dialogdialogListmenuRespMixin、枚举/关联/数字/字节工具、toProButton
ViewAkoAppAkoBootViewAkoAuthViewAkoMainViewEntityViewDialogManager
面板AkoEntitySearchPanelAkoEntityTablePanelAkoEntityEditPanel 及字段级面板

配置项和默认值见 前端配置,工具的使用方式见 前端工具

模型元数据最小形状

默认 View 至少需要模型 ID、节点名和字段信息:

ts
interface DbModel {
  id: string
  name: string
  previous: string | null
  pageNode: string
  searchNode: string
  tableNode: string
  editNode: string
  iconNode?: string
  fields: DbField[]
  modelButtons: ButtonEntry[]
  operateButtons: ButtonEntry[]
}

interface ModelPage {
  total: number
  entities: any[]
  information: Record<string, any>
}

ModelPagepage 从 1 开始。关联字段的显示数据通常放在 information 中,由 ako:mapping 的 TypeProvider 消费。后端响应的完整定义见 模型定义

默认渲染节点

后端没有覆盖节点时,Ako 会按以下名称查找内置 View:

节点名默认组件作用
default-entity-page-nodeEntityView搜索、表格、分页和编辑的组合页面。
default-entity-search-nodeAkoEntitySearchPanel搜索字段和页面级按钮。
default-entity-table-nodeAkoEntityTablePanel表格、选择和行级按钮。
default-entity-edit-nodeAkoEntityEditPanel标准编辑表单。
default-entity-search-property-nodeAkoEntitySearchProperty单个搜索字段的外层。
default-entity-search-input-nodeAkoEntitySearchColumnPanel单个搜索输入的类型分发器。
default-entity-table-column-nodeAkoEntityTableColumnPanel单元格的类型分发器。
default-entity-edit-property-nodeAkoEntityEditPropertyPanel编辑字段外层、描述和校验。
default-entity-edit-input-nodeAkoEntityEditColumnPanel编辑输入的类型分发器。
default-entity-table-hide-column-nodeAkoEntityTableHideColumn隐藏内容提示。

节点名称是字符串契约,不是组件本身。替换时先在同一个 Vue App 中注册组件:

ts
app.component('sales-order-page', SalesOrderPage)

然后通过后端元数据或 mixin 返回 pageNode: 'sales-order-page'。组件名称错误时,后端仍可能正常返回元数据,但前端无法渲染对应节点。

字段组件契约

自定义字段 TypeProvider 需要提供 searchtableedit 三个组件,并使用与后端完全相同的 name

ts
const moneyType = {
  name: 'billing:money',
  search: MoneySearch,
  table: MoneyTable,
  edit: MoneyEdit,
}

默认包装器会传入以下属性:

场景常用属性
搜索modelfieldsearchDataentryoptionsv-model
表格modelfieldrowdatapageinformationoptions
编辑modelfieldeditdatapageoptionsv-model
页面节点modelpagesearchFuneditFunselectFunviewMode

字段组件可以更新 v-model,不要直接改写只读的 modelfieldpage。需要刷新数据时调用传入的 searchFun

页面节点与字段类型的选择

需求推荐方式
只改标题、隐藏一列mixin 或后端字段注解
改搜索/表格/编辑的单个字段渲染TypeProvider 或字段节点
改一个模型的完整页面布局@ModelNode + 注册页面组件,或 EntityView 外包裹
添加报表、工作台等固定页面menuItems + 自定义 View
写复杂业务操作后端按钮 URL/组件;前端只负责触发

组合内置页面、做关联选择和嵌入已有布局的示例见 使用 Ako View 构建页面

Ako 前后端分离,协议先于框架。