若是您意外进入该页面,或许从下述连接开始更容易理解:html
【代码导读】Github 开源项目——wysihtml5 富编辑器(Bootstrap 风格)【一】html5
1. 总体结构git
在 wysihtml5 中,全部对象受 wysihtml5 命令空间保护,从其初始化定义看,整个代码架构一目了然:github
https://github.com/xing/wysihtml5/blob/master/src/wysihtml5.js数组
1 var wysihtml5 = { 2 version: "0.4.0pre", 3 4 // namespaces 5 commands: {}, 6 dom: {}, 7 quirks: {}, 8 toolbar: {}, 9 lang: {}, 10 selection: {}, 11 views: {}, 12 13 INVISIBLE_SPACE: "\uFEFF", 14 15 EMPTY_FUNCTION: function() {}, 16 17 ELEMENT_NODE: 1, 18 TEXT_NODE: 3, 19 20 BACKSPACE_KEY: 8, 21 ENTER_KEY: 13, 22 ESCAPE_KEY: 27, 23 SPACE_KEY: 32, 24 DELETE_KEY: 46 25 };
1.1. editor(编辑器类)浏览器
https://github.com/xing/wysihtml5/blob/master/src/editor.js架构
wysihtml5.Editor 编辑器类未在全局空间 wysihtml5 中直接初始化给出。它是整个编辑器的总控模块及执行入口,经过调用其构造函数便能建立一个编辑器对象,且保证同一页面中的各个编辑器互不影响。app
该类能够接收不一样的配置项来修改编辑器的默认行为,且向外导出大量事件。composer
它是 app 与编辑器以前的通讯结点。dom
快速初始化一个默认编辑器:
1 <script> 2 var editor = new wysihtml5.Editor("wysihtml5-textarea", { // id of textarea element 3 toolbar: "wysihtml5-toolbar", // id of toolbar element 4 parserRules: wysihtml5ParserRules // defined in parser rules set 5 }); 6 </script>
1.2 views(视图命名空间)
该命名空间用于管理如下几个类:
1.3 wysihtml5.toolbar.Toolbar(工具栏类)
https://github.com/xing/wysihtml5/blob/master/src/toolbar/toolbar.js
管理编辑器中的工具栏,响应按钮事件,并转换成对应的命令发送给 wysihtml5.views.Composer 。
经过成员 wysihtml5.toolbar.Speech 提供语音功能。
经过成员 wysihtml5.toolbar.Dialog 实现对话框,实现除了点击以外的另外一种交互输入,能够用于实现复杂的插件。
前往查看:http://classfoo.com/app/editor
1.4 wysihtml5.commands(命令命名空间)
https://github.com/xing/wysihtml5/blob/master/src/commands/formatBlock.js
将工具栏触发的事件转换成对应的命令,及实现撤销、重作命令。
1.5 wysihtml5.selection (选择器)
实现编辑过程当中的范围选中功能,主要是因为浏览器自带的 window.getSelection 存在不少问题,当前主要基于外部库 Rangy 实现。
1.6 wysihtml5.dom(dom 操做)
大量 dom 操做,若是替换成 Jquery 实现,应该能减小不小代码体积。
https://github.com/xing/wysihtml5/tree/master/src/dom
1.7 wysihtml5.lang(语法命名空间)
https://github.com/xing/wysihtml5/tree/master/src/lang
实现几种经常使用的语法:
数组:
https://github.com/xing/wysihtml5/blob/master/src/lang/array.js
对象:
https://github.com/xing/wysihtml5/blob/master/src/lang/object.js
字符串:
https://github.com/xing/wysihtml5/blob/master/src/lang/string.js
事实派发:
https://github.com/xing/wysihtml5/blob/master/src/lang/dispatcher.js
1.8 wysihtml5.quirks
该命名空间中的内容主要用于修复、过滤格式。