fzyEditor 编辑器

温馨提示:
本文最后更新于2025年03月23日,若内容或图片失效,请留言反馈。

fzyEditor编辑器是什么?

fzyEditor编辑器是一款简约版Markdown编辑器,它支持所有Markdown编辑器的所有语法,且内置了更多丰富的菜单功能,是文章写作的方便助手

fzyEditor编辑器能干什么?

  • 它能快速编辑文案资讯等内容.
  • 它能便捷的在文本中插入各种图片/视频/链接/轮播/列表/表格/代码/表情/字符等丰富的内容,不需要记住Markdown的输入语法,都有可视化菜单进行加入.
  • 它能解析出你需要的html内容或者提取出编辑器的原内容.
  • 它提供了快捷菜单.
  • 它提供了自定义快捷菜单等丰富的功能

fzyEditor有什么优/缺点

核心部件

  • Layui框架 直达
  • ManacoEditor 直达

    可扩展性

    扩展性很强,你完全可以扩展出流程图、目录等功能,还能自定义很多自己需要的功能,它还支持成为代码编辑器,只要你敢想,它就能实现。
    //比如我自己扩展了某音的视频解析功能(当然要结合后端语言,本站不提供接口,若有需要,可邮箱联系我(83560309@qq.com))

    部分功能编辑预览

    详见文章

外观

预览

仓库地址(github老是访问不了,没传)

https://gitee.com/Fengzhiya123/fzyEditor

快捷键对应

键位菜单/功能
Ctrl-1h1
Ctrl-N0h1
Ctrl-2h2
Ctrl-N2h2
Ctrl-3h3
Ctrl-N3h3
Ctrl-4h4
Ctrl-N4h4
Ctrl-5h5
Ctrl-N5h5
Ctrl-6h6
Ctrl-N6h6
Ctrl-Shift-Aabout
Ctrl-Bbold
Ctrl-D(复制上一行)fn[内置方法,如果自定义替换将无法使用]
Ctrl-Tdatetime
Ctrl-Fsearch
Ctrl-Eface
Ctrl-Alt-Esmile
Ctrl-Nsymbol
Ctrl-GgotoLine
Ctrl-Hhr
Ctrl-Shift-Hhtml5
Ctrl-Iitalic
Ctrl-KinlineCode
Ctrl-JcodeBlock
Ctrl-Rreplace
Ctrl-Alt-RreplaceAll
Ctrl-OunorderedList
Ctrl-Llink
Ctrl-UorderedList
Ctrl-Mimg
Ctrl-Alt-Mimages
Shift-Afn[内置方法,如果自定义替换将无法使用]
Ctrl-Qquote
Shift-Ctrl-Sdel
Shift-Ctrl-Ktex(未开发)
Ctrl-Wclear
Ctrl-Alt-Hhelp
Ctrl-Shift-Uucfirst
Ctrl-Alt-Uuppercase
Shift-Alt-Ulowercase
Shift-Ttable
Shift-Alt-PpageBreak
F10preview
F11fullscreen
Enterfn[内置方法,如果自定义替换将无法使用]

自定义快捷键

在配置中配置如下代码

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之类的
localManacoEditor的菜单语言默认为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功能描述
EdEd.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是否开启footertrue
buttonsfooter里面的按钮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
赞赏
分享
收藏

评论

评论列表

抢沙发