UNPKG

@vtj/renderer

Version:

VTJ 是一款基于 Vue3 + Typescript 的低代码页面可视化设计器。内置低代码引擎、渲染器和代码生成器,面向前端开发者,开箱即用。 无缝嵌入本地开发工程,不改变前端开发流程和编码习惯。

174 lines (173 loc) 6.05 kB
import { App, InjectionKey } from 'vue'; import { Router, RouteRecordName, RouteMeta } from 'vue-router'; import { ProjectSchema, PageFile, BlockFile, Service, BlockSchema, NodeFromPlugin, GlobalConfig, I18nConfig, EnvConfig, Base } from '@vtj/core'; import { ContextMode } from '../constants'; import { CreateRendererOptions } from '../render'; import { ProvideAdapter } from './defaults'; import { InitGlobalsOptions } from './globals'; import { MenuDataItem } from '@vtj/ui'; import { Context } from '..'; export declare const providerKey: InjectionKey<Provider>; export interface ProviderOptions { service: Service; project?: Partial<ProjectSchema>; modules?: Record<string, () => Promise<any>>; mode?: ContextMode; adapter?: Partial<ProvideAdapter>; router?: Router; dependencies?: Record<string, () => Promise<any>>; materials?: Record<string, () => Promise<any>>; libraryOptions?: Record<string, any>; globals?: Record<string, any>; materialPath?: string; nodeEnv?: NodeEnv; install?: (app: App) => void; routeAppendTo?: RouteRecordName; pageRouteName?: string; routeMeta?: RouteMeta; enhance?: (app: App, provider: Provider) => void; vtjDir?: string; vtjRawDir?: string; enableStaticRoute?: boolean; } export declare enum NodeEnv { Production = "production", Development = "development" } /** * Provider 类是应用的核心提供者,负责: * - 管理项目配置和状态 * - 加载依赖和资源 * - 初始化路由 * - 提供全局API和服务 */ export declare class Provider extends Base { options: ProviderOptions; mode: ContextMode; globals: Record<string, any>; modules: Record<string, () => Promise<any>>; adapter: ProvideAdapter; apis: Record<string, (...args: any[]) => Promise<any>>; dependencies: Record<string, () => Promise<any>>; materials: Record<string, () => Promise<any>>; library: Record<string, any>; libraryLocales: Record<string, any>; libraryLocaleMap: Record<string, string>; service: Service; project: ProjectSchema | null; components: Record<string, any>; nodeEnv: NodeEnv; env: Record<string, string>; private router; private materialPath; private urlDslCaches; /** * 创建Provider实例 * @param options 配置选项 */ constructor(options: ProviderOptions); createMock(func: (...args: any) => any): (...args: any[]) => Promise<any>; /** * 加载项目配置并初始化 * 1. 从模块或服务加载项目配置 * 2. 根据运行模式加载依赖或资源 * 3. 初始化Mock数据 * 4. 创建API接口 * 5. 初始化路由(非uniapp平台) * @param project 项目配置 */ load(project: ProjectSchema): Promise<void>; initMock(global?: any): void; private loadDependencies; private loadAssets; private initRouter; /** * Vue 插件安装方法 * 1. 安装所有第三方库插件 * 2. 执行自定义安装函数(如果提供) * 3. 安装访问适配器 * 4. 提供全局 Provider 实例 * 5. 设计模式下设置错误处理器 * 6. 执行增强函数(如果提供) * @param app Vue 应用实例 */ install(app: App): void; getFile(id: string): PageFile | BlockFile | null; getPage(id: string): PageFile | null; getMenus(name?: string, prefix?: string): MenuDataItem[]; getHomepage(): PageFile | null; getDsl(id: string): Promise<BlockSchema | null>; getDslByUrl(url: string): Promise<BlockSchema | null>; /** * 创建 DSL 渲染器 * 1. 合并默认选项和自定义选项 * 2. 创建 DSL 加载器 * 3. 返回渲染器实例 * @param dsl 区块 DSL 配置 * @param opts 渲染选项 * @returns 渲染器实例 */ createDslRenderer(dsl: BlockSchema, opts?: Partial<CreateRendererOptions>): { renderer: any; context: Context; }; /** * 获取渲染组件 * 1. 根据ID查找文件(页面或区块) * 2. 如果找到文件且提供了output回调,则调用它 * 3. 尝试从模块缓存加载原始Vue组件 * 4. 如果找不到原始组件,则获取DSL并创建渲染器 * @param id 文件ID * @param output 找到文件时的回调函数 * @returns Promise<Vue组件> */ getRenderComponent(id: string, output?: (file: BlockFile | PageFile) => void): Promise<any>; /** * 定义基于URL的异步组件 * 1. 根据URL获取DSL配置 * 2. 如果获取成功,设置组件名称 * 3. 创建并返回DSL渲染器 * @param url DSL配置URL * @param name 可选的自定义组件名称 * @returns Vue异步组件 */ defineUrlSchemaComponent(url: string, name?: string): any; /** * 定义基于插件的异步组件 * 1. 根据插件来源获取插件实例 * 2. 返回插件组件 * @param from 插件来源配置 * @returns Vue异步组件 */ definePluginComponent(from: NodeFromPlugin): any; /** * 设置应用全局 * @param css * @param win */ initGlobals(globals: GlobalConfig, options: Partial<InitGlobalsOptions>): void; initI18n(app: App, libs: Record<string, any>, i18n?: I18nConfig): void; initEnv(envConfig?: EnvConfig[]): void; } /** * 创建 Provider 实例 * @param options Provider 配置选项 * @returns 包含 provider 实例和 onReady 回调的对象 */ export declare function createProvider(options: ProviderOptions): { provider: Provider; onReady: (callback: () => void) => void; }; export interface UseProviderOptions { id?: string; version?: string; } /** * 在组件中使用 Provider 实例 * 1. 从Vue上下文中获取注入的Provider * 2. 开发环境下检查组件版本一致性 * @param options 使用选项 * @returns Provider 实例 * @throws 如果找不到Provider会抛出错误 */ export declare function useProvider(options?: UseProviderOptions): Provider;