若是您意外進入該頁面,或許從下述連接開始更容易理解: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
該命名空間中的內容主要用於修復、過濾格式。