使用富文本控件
需要使用 0.10.3 版本的 Yao 程序
首先需要配置字段的编辑属性,把type
设置成RichText
json
{
"描述2": {
"bind": "desc",
"edit": {
"type": "RichText",
"props": {
"UploadByFileApi": "/api/file/UploadByFileApi",
"UploadByUrlApi": "/api/file/UploadByUrlApi"
}
}
}
}
如果需要设置上传图片,还需要定义三个 Api。
- 一个是用来在编辑器里选择图片用的。
- 另外一个是当你粘贴图片时,会自动的上传图片用的。
- 最后一个是下载图片用的。
在apis
目录下创建一个api
定义文件
文件:/apis/file.http.json
json
{
"name": "文件上传",
"version": "1.0.0",
"description": "文件上传",
"guard": "-",
"group": "",
"paths": [
{
"path": "/UploadByFileApi",
"method": "POST",
"process": "flows.image",
"in": ["$file.image"],
"out": {
"status": 200,
"type": "application/json"
}
},
{
"path": "/UploadByUrlApi",
"method": "POST",
"process": "flows.image2",
"in": ["$payload.url"],
"out": {
"status": 200,
"type": "application/json"
}
},
{
"path": "/downloadfile",
"method": "GET",
"process": "fs.system.Download",
"in": ["$query.name"],
"out": {
"status": 200,
"Headers": {
"Content-Type": "{{type}}"
},
"body": "{{content}}"
}
}
]
}
为了上传处理图片,还需要定义两个流程处理器flows.image
,flows.image2
。
flows.image
的功能是上传本地电脑上的图片,并返回文件地址
文件:/flows/image.flow.json
json
{
"label": "upload file",
"version": "1.0.0",
"description": "upload image file",
"nodes": [
{
"name": "upload",
"process": "fs.system.upload",
"script": "format",
"args": ["{{$in.0}}"]
}
],
"output": {
"success": 1,
"file": {
"url": "{{$res.upload}}"
}
}
}
还需要一个脚本返回上传的文件下载地址:
文件:/flows/image.format.js
js
function main(args, out, res) {
return `/api/file/downloadfile?name=${out}`;
}
复制粘贴图片时调用的image2.flow.json
。这里直接返回了url
地址。
注意只支持复制粘贴互联网的图片地址,要是本地图片,需要自己手动上传图片。
/flows/image2.flow.json
json
{
"label": "upload file",
"version": "1.0.0",
"description": "upload image file",
"nodes": [],
"output": {
"success": 1,
"file": {
"url": "{{$in.0}}"
}
}
}
富文本控件生成的内容转换成 HTML
Yao
富文本控件RichText
内部封装了editorjs
。控件保存的内容的格式是Json
数组,数组中每一行数据都是一个对象,对象在单独的类型与内容。
如果我们的需求是把edjtorjs
控件生成的内容转换成html
格式内容,有一个现成的组件能帮我们实现。插件的源代码地址: https://github.com/pavittarx/editorjs-html
插件的功能逻辑比较简单,主要是循环查找json
数组中的block
对象,再根据规则替换成文本。对源代码作下简单的处理,转换成Yao
处理器。
处理器源代码如下:RichText
转换成HTML
代码处理器