答:详情可以查看如何在设计器中引入第三方组件库
答:详情可以查看插槽的声明与使用
当前我们的出码结果依赖官方出码模板,暂时无法放置在自己项目中独立运行
第一步:下载 github.com/opentiny/ti… 工程,解压 第二步:将代码下载到解压好的文件夹中(提示选择文件夹的时候,选择我们解压出来的文件夹) 第三步:用代码编辑器打开文件夹,确认出码结果,安装依赖并运行 npm run dev 启动服务,查看效果 后续相关的规划:
- 支持开发插件,自定义出码结果
- 支持自定义工程模板,结合自定义出码结果,可以无缝在自身项目中运行
问题4:怎样在 TinyEngine 低代码引擎中扩展左侧组件,比如创建用户、单位选择。在 form 表单里面使用,拖入这2个控件,可以弹出 dialog 框选择用户和单位,点击确定后回填到表单上 input 框上?
答:如果是想从零搭建业务组件,可以查看官方的文档教程尝试一步一步搭建(目前使用手册已更新) 如果是已有的业务组件,可以尝试通过导入第三方组件库的方式导入到左侧物料中。
答:先简要介绍一下我们工程中主要的 package:
|_ canvas 负责中间画布渲染
|_ common 公共的组件以及 metaComponent
|_ controller 公共逻辑控制层
|_ design-core 总入口
|_ http 负责 http 相关请求
|_ i18n lowcode-i18n 包裹层
|_ plugins 左侧面板相关插件
|_ settings 右侧设置面板相关组件
|_ svgs svg 封装组件
|_ theme 主题相关样式
|_ toolbars 顶部工具栏相关 package
|_ utils 公共utils
|_ vue-generator 出码package
|_ webcomponent webcomponent 封装
区域大致职责划分:
- 左侧面板相关的范围:负责设置一些应用状态、页面状态、以及逻辑的控制、编写
- 中间画布:负责视图层的编排
- 右侧属性面板:负责视图层的属性控制、样式精细编排、事件绑定等属性相关
主要的功能入口:
1、资源请求
// packages/design-core/src/App.vue
// 这里发起请求物料、请求数据源、请求页面等相关资源请求,很关键
useResource().fetchResource()
2、画布渲染相关入口
packages
|_ canvas
|_ src
|_ components
|_ render
|_ runner.js # 用于画布相关的资源请求,预设
|_ RenderMain.js # 画布渲染的入口,同时也暴露了许多 api 供修改 schema
|_ render.js # RenderMain.js 会调用该文件的 renderer 方法,递归渲染 schema
3、画布选中后,如何关联渲染右侧属性面板?
// DesignCanvas.vue
// 画布中节点选中后,会触发该方法
const nodeSelected = (node, parent, type) => {
const { toolbars } = useLayout().layoutState
if (type !== 'clickTree') {
useLayout().closePlugin()
}
// 动态计算该方法需要渲染的 属性面板
useProperties().getProps(node, parent)
// 设置当前 schema
useCanvas().setCurrentSchema(node)
footData.value = getNodePath(node?.id)
toolbars.visiblePopover = false
}
// settings/props/src/Main.vue
<template>
<!-- 在属性面板渲染设置属性的入口 -->
<config-render :data="properties">
<template #prefix="{ data }">
<block-link-field v-if="isBlock" :data="data"></block-link-field>
</template>
</config-render>
</template>
<script>
// 选中之后,经过 getProps 的计算,我们会得到 properties,渲染在属性面板
const { properties } = useProperty({ pageState })
</script>
上面就是一些简单的入口简介,后续,我们会增加更多详细的架构原理、功能设计相关的文档,敬请期待
答:我们目前有内置的排版组件——行列容器,可以通过简单的剪切方式实现轻松的 flex 布局。
答:这个问题要分多种情况讨论,
-
设计器开发: 可以拉下来源代码,按照原来静态资源图片等分类,放置进去要用的图片,在开发设计器的时候可以直接使用。
-
页面运行态: 可以通过 <input type="file">标签选中你要的静态资源,这部分的逻辑完全取决于用户
-
页面设计态: 低代码引擎在开源之前是有这样的功能的,但是为了开源的合规,屏蔽了该功能。因为在设计态想用到静态资源的话,要选中静态资源,并上传到公司的文件管理系统,然后文件系统返回静态资源地址,然后再展示在画布中。如果用户想要这样的功能,只需要开发一个文件上传按钮,并把上传的内容放置用户的文件管理系统。
答:可以关注一下以下 bundle.json 这个文件的设置是否正确,尤其是 widget.component 这个字段 以下为 bundle.json 这个文件的节选:
{ "property": "text",
"label": {
"text": {
"zh_CN": "按钮名称",
"en_US": "Button Name"
}
},
"required": true,
"readOnly": false,
"disabled": false,
"cols": 12,
"widget": {
"component": "MetaBindI18n",
"props": {}
},
"description": {
"zh_CN": "按钮名称",
"en_US": "Name of the button."
}
}
答:实现的方式是多种的, 方式一:假如 A(输入框)与 B(显示框)联动,那么可以给 A 绑定一个 change 事件,直接影响 B的显示 方式二:给 B 绑定一个值,通过影响 B 的值,从而影响 B 的显示。 方式三:通过 watch 监听
答:原来的.net 系统可以继续独立运行,当需要跳转到低代码系统时候。从原来的.net系统带出关键参数。如 projectId, itemId, processId 等,通过URL的传参形式:https://xxxxxxxxxxx?projectId=1111&itemId=2222222&processId=33333333。 跳转到低代码系统后,在代码系统初始化时候获取URL的参数,通过服务端API接口获取到相应的流程、页面、物料等等信息。通过低代码系统搭建页面会产生schema或者源代码,在点击保存按钮的时候可以把想要的产物保存回来原来的.net系统中。
答:目前服务端有两套源代码,一套技术栈是 node.js ,一套技术栈是 Java。因为要从公司流程流程审批、技术评估还有后面的迭代演进等维度考虑,目前还不知最终会开源哪种技术栈的服务端。大家敬请期待12月30号左右的公告
答:目前暂不支持,后续有在规划增加 typescript 的支持,大家敬请期待
答:目前只有一个开源版本的代码,没有商业版本。至于商业技术上的支持,可以找到 OpenTiny 的小助手沟通,详细沟通一下���司具体需要的商业支持。
答:AI 能力目前已经在 TinyEngine 官网部署,当前采用的大模型是文心一言,通过 AI生成代码->生成 AST->页面 schema->展示在页面->下载源代码 ,后续会切回华为的盘古大模型。现在 AI 能力的取决于文心一言生成的代码。同时我们也通过数据和资源的不断投入在持续训练我们的 AI 能力,大家敬请期待 AI 能力的持续迭代。
答:后端的开发与技术栈无关,是可以采用任意的技术栈的。我们提供了所有后端接口的文档,只需要按照设计器的文档来,给出对应接口的出入参即可。
答:TinyEngine 目前是用到的物料是已开源的 TinyVue 组件库,欢迎大家使用~