fzyEditor 编辑器
温馨提示:
本文最后更新于2025年03月23日,若内容或图片失效,请留言反馈。
fzyEditor编辑器是什么?
fzyEditor编辑器是一款简约版Markdown编辑器,它支持所有Markdown编辑器的所有语法,且内置了更多丰富的菜单功能,是文章写作的方便助手
fzyEditor编辑器能干什么?
- 它能快速编辑文案资讯等内容.
- 它能便捷的在文本中插入各种图片/视频/链接/轮播/列表/表格/代码/表情/字符等丰富的内容,不需要记住Markdown的输入语法,都有可视化菜单进行加入.
- 它能解析出你需要的html内容或者提取出编辑器的原内容.
- 它提供了快捷菜单.
- 它提供了自定义快捷菜单等丰富的功能
fzyEditor有什么优/缺点
核心部件
- Layui框架 直达
ManacoEditor 直达
可扩展性
扩展性很强,你完全可以扩展出流程图、目录等功能,还能自定义很多自己需要的功能,它还支持成为代码编辑器,只要你敢想,它就能实现。
//比如我自己扩展了某音的视频解析功能(当然要结合后端语言,本站不提供接口,若有需要,可邮箱联系我(83560309@qq.com))部分功能编辑预览
外观
仓库地址(github老是访问不了,没传)
https://gitee.com/Fengzhiya123/fzyEditor
快捷键对应
键位 | 菜单/功能 |
---|---|
Ctrl-1 | h1 |
Ctrl-N0 | h1 |
Ctrl-2 | h2 |
Ctrl-N2 | h2 |
Ctrl-3 | h3 |
Ctrl-N3 | h3 |
Ctrl-4 | h4 |
Ctrl-N4 | h4 |
Ctrl-5 | h5 |
Ctrl-N5 | h5 |
Ctrl-6 | h6 |
Ctrl-N6 | h6 |
Ctrl-Shift-A | about |
Ctrl-B | bold |
Ctrl-D | (复制上一行)fn[内置方法,如果自定义替换将无法使用] |
Ctrl-T | datetime |
Ctrl-F | search |
Ctrl-E | face |
Ctrl-Alt-E | smile |
Ctrl-N | symbol |
Ctrl-G | gotoLine |
Ctrl-H | hr |
Ctrl-Shift-H | html5 |
Ctrl-I | italic |
Ctrl-K | inlineCode |
Ctrl-J | codeBlock |
Ctrl-R | replace |
Ctrl-Alt-R | replaceAll |
Ctrl-O | unorderedList |
Ctrl-L | link |
Ctrl-U | orderedList |
Ctrl-M | img |
Ctrl-Alt-M | images |
Shift-A | fn[内置方法,如果自定义替换将无法使用] |
Ctrl-Q | quote |
Shift-Ctrl-S | del |
Shift-Ctrl-K | tex(未开发) |
Ctrl-W | clear |
Ctrl-Alt-H | help |
Ctrl-Shift-U | ucfirst |
Ctrl-Alt-U | uppercase |
Shift-Alt-U | lowercase |
Shift-T | table |
Shift-Alt-P | pageBreak |
F10 | preview |
F11 | fullscreen |
Enter | fn[内置方法,如果自定义替换将无法使用] |
自定义快捷键
在配置中配置如下代码
keyMap:{
'Ctrl-1':h1, //如果是小键盘的数字,需要设置为N1,h1为菜单名称
// *如果是小键盘数字,未必能覆盖浏览器默认的数字快捷键*
...
}
自定义菜单
tools:[
'alert', //这里也需要配置你自定义的菜单,全部名称要对应哦
//....
],
//同名会覆盖已有的工具栏
// editor-event="alert" 此句必须
autoTool:{
alert:`<div class="-fzy-tool-item" title="弹出" editor-event="alert"><i class="layui-icon layui-icon-error"></i></div>`,
},
//同名会覆盖已有的工具栏方法
autoToolbarHandles: {
alert:function (othis){
const selection = editor.Ed.getSelection();//获取光标/选中区域
// let selectedText = editor.getSelectionText(selection);//获取选中内容
editor.replaceSelection(selection,`\n{abc aaa="123"/}`);//将内容插入到指定光标位置
}
},
//自定义解析
autoParser:function (str){
if(str.indexOf('{abc')!==-1){
str = str.replace(/{abc aaa="([\s\S]*?)"\/}/g,'<div>$1</div>'); //显示123
}
return str; //此句必须
},
//注意:tools里面必须要配置自定义的菜单名称,图标上必须要带事件editor-event=菜单名,自定义菜单方法也必须以菜单名为准;解析的时候主要是自定义
参数
参数名 | 说明 | 值 |
---|---|---|
tools | 工具栏,数组或者字符串 | array/string(full/simple/mini三个任选) |
autoTool | 自定义菜单 | object对象{'菜单名':'菜单图标'},具体见上面自定义菜单 |
autoToolbarHandles | 自定义菜单方法 | object对象{'菜单名':fn(othis){//othis为当前元素dom}} |
autoParser | 自定义菜单解析 | fn(text){ //自定义解析内容,return text; } |
value | 编辑器默认内容(也可以在标签中间插入默认值) | string |
theme | 主题 | string(dark or light) |
language | 编辑器要编辑的语言 | string(默认为markdown),也可以是html,php,js之类的 |
local | ManacoEditor的菜单语言 | 默认为zh-cn(跟本编辑器无关,只针对ME的菜单语言) |
height | 高度 | int(默认600) |
enabled | 不可编辑 | boolen(默认 false) |
fontSize | 编辑区字号大小 | 默认16 |
preview | 是否开启预览 | 默认true |
player | 涉及到的视频播放的播放器地址 | - |
= | = | = |
uploadImage | 图片上传接口 | object对象/fn |
uploadFile | 文件上传接口 | object对象/fn |
uploadVideo | 视频上传接口 | object对象/fn |
uploadAudio | 音频上传接口 | object对象/fn |
上面四个上传接口参数 | {url:'接口地址',data:{额外参数}} | 参数完全匹配layui.upload模块 |
上面四个上传接口 | 还可以是一个自定义的方法 | fn(fileDialog){//返回当前对话框console.log(fileDialog)} |
keyMap | 自定义快捷键 | object对象(参照上面的自定义快捷键) |
change | 自定义编辑器改变方法 | fn(){} //可用可不用 |
API
//简单使用
const editor = fzyEditor.render('editor',{
theme:'dark',
});
API | 功能 | 描述 |
---|---|---|
Ed | Ed.xx | 调用所有ManacoEditor的全部接口和功能,具体内容自行去官网查找,使用 实例后,假如为editor,那就是editor.Ed.xx |
errorMsg | 错误提示 | fn(msg);editor.errorMsg('提示内容') |
successMsg | 成功提示 | fn(msg) |
warningMsg | 警告提示 | fn(msg) |
replaceSelection | 替换或插入内容到编辑器 | fn(光标位置,插入内容)//光标位置const selection = editor.Ed.getSelection()//editor.replaceSelection(selection,'内容') |
getSelectionText | 获取选中区域内容 | fn(光标位置)//editor.getSelectionText(selection) |
getValue | 获取编辑区的内容 | fn//editor.getValue() |
getHtml | 获取编辑区解析后的html内容 | fn//editor.getHtml() |
createDialog | 创建一个对话框 | fn(object对象)//const dialog = editor.createDialog({name : "",width : 420,height: 240,title : '',drag : true,closed : true,content : '',mask : true,lockScreen : true,footer : true,buttons : false,success:fn()}) |
clear | 清空编辑器内容 | fn |
createDialog 参数
参数 | 描述 | 值 |
---|---|---|
name | 对话框名称 | string |
width | 对话框宽度 | int,默认420 |
height | 对话框高度 | int,默认240 |
title | 对话框标题 | string,默认空(不设置,header不显示) |
drag | 是否允许拖动 | true |
closed | 是否允许关闭 | true |
content | 对话框内容 | html或字符串 |
mask | 是否开启阴影 | true |
footer | 是否开启footer | true |
buttons | footer里面的按钮 | object对象 { cancel:['取消',fn] , add:[...],submit:[...]} |
success | 成功加载后执行的方法 | fn |
预览
<script src="layui/layui.js"></script>
<script src="js/config.js"></script>
<link rel="stylesheet" href="css/preview.css" media="all" />
<div id="editor"><!--可以默认markdown内容--></div>
<script>
layui.use('fzyEditor', function () {
var fzyEditor = layui.fzyEditor;
const editor = fzyEditor.render('editor',{
theme:'dark',
enabled:true,
//tools:['alert'],
//autoTool:{
/* alert:`<div class="-fzy-tool-item" title="弹出" editor-event="alert"><i class="layui-icon layui-icon-error"></i></div>`,
},*/
//同名会覆盖已有的工具栏方法
/*autoToolbarHandles: {
alert:function (othis){
const selection = editor.Ed.getSelection();//获取光标/选中区域
// let selectedText = editor.getSelectionText(selection);//获取选中内容
editor.replaceSelection(selection,`\n{abc aaa="123"/}`);
}
},*/
//自定义解析
/*autoParser:function (str){
if(str.indexOf('{abc')!==-1){
str = str.replace(/{abc aaa="([\s\S]*?)"\/}/g,'<div>$1</div>');
}
return str; //此句必须
},*/
//uploadFile:{
// url:'/data/uploadFile.json',
// data:{}
//},
//uploadImage: {
// url:'/data/uploadFile.json',
// data:{}
//},
// uploadAudio:{
// url:'/data/uploadFile.json',
// data:{}
// },
//player: 'https://www.fengzhiya.cn/player/index.html?url=',
});
console.log(editor);
});
</script>
php解析参考 去查看
THE END
点赞 1
赞赏
分享
收藏

版权说明:
本站多数资源源于网络,如涉及版权问题请出示相关版权证明与站长联系,若属实,我们会在第一时间删除资源.
版权属于:
晓峰
作品采用:
《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权
相关推荐
评论
请登录后发表评论
社交账号登录