CKEDITOR组织结构和文件框架分析

2012年1月17日 发表评论 阅读评论

下了CKEDITOR,除了源码和压缩版本外,没有相关的打包工具,想删除插件或者修改非常不方便,我抽空整理了一个它压缩版打包的顺序

1 打包_source/core/ckeditor_base.js
2 打包_source/core/event.js
3 打包_source/core/editor_basic.js
4 打包_source/core/env.js
5 打包_source/core/ckeditor_basic.js
6 打包_source/core/dom.js
7 打包_source/core/tools.js
8 打包_source/core/dtd.js
9 打包_source/coe/dom/event.js
10打包_source/core/dom/domobject.js
11打包_source/core/dom/window.js
12打包_source/core/dom/document.js
13打包_source/core/dom/node.js
14打包_source/core/dom/nodelist.js
15打包_source/core/dom/element.js
16打包_source/core/command.js
17打包_source/core/config.js
18打包_source/core/focusmanager.js
19打包_source/core/lang.js
20打包_source/core/scriptloader.js
21打包_source/core/resourcemanager.js
22打包_source/core/plugins.js
23打包_source/core/imagecacher.js
24打包_source/core/skins.js
25打包_source/core/themes.js
26打包_source/core/editor.js
27打包_source/core/htmlparser.js
28打包_source/core/htmlparser/text.js
29打包_source/core/htmlparser/cdata.js
30打包_source/core/htmlparser/fragment.js
31打包_source/core/htmlparser/element.js
32打包_source/core/htmlparser/filter.js
补打包_source/core/htmlparser/comment.js
33打包_source/core/htmlparser/basicwriter.js
补打包_source/core/ui.js
34打包_source/core/ckeditor.js
35打包_source/core/dom/elementpath.js
36打包_source/core/dom/text.js
37打包_source/core/dom/documentfragment.js
38打包_source/core/dom/walker.js
39打包_source/core/dom/range.js
40打包_source/core/dom/rangelist.js
41打包_source/core/_bootstrap.js

/*核心文件打包完成,以下是相关插件*/

42打包_source/skins/kama/skin.js
43打包_source/plugins/about/plugin.js
44打包_source/plugins/a11yhelp/plugin.js
45打包_source/plugins/basicstyle/plugin.js
46打包_source/plugins/bidi/plugin.js
47打包_source/plugins/blockquote/plugin.js
48打包_source/plugins/button/plugin.js
49打包_source/plugins/clipboard/plugin.js
50打包_source/plugins/colorbutton/plugin.js
51打包_source/plugins/contextmenu/plugin.js
52打包_source/plugins/dialogadvtab/plugin.js
53打包_source/plugins/div/plugin.js
54打包_source/plugins/emementspath/plugin.js
55打包_source/plugins/enterkey/plugin.js
56打包_source/plugins/entities/plugin.js
57打包_source/plugins/find/plugins.js
58打包_source/plugins/flash/plugin.js
59打包_source/plugins/font/plugin.js
60打包_source/plugins/format/plugin.js
61打包_source/plugins/forms/plugin.js
62打包_source/plugins/horizontalrule/plugin.js
63打包_source/plugins/htmldataprocessor/plugin.js
64打包_source/plugins/image/plugin.js
65打包_source/plugins/indent/plugin.js
68打包_source/plugins/justify/plugin.js
69打包_source/plugins/keystrokes/plugin.js
70打包_source/plugins/link/plugin.js
71打包_source/plugins/list/plugin.js
72打包_source/plugins/maximize/plugin.js
73打包_source/plugins/newpage/plugin.js
74打包_source/plugins/pagebreak/plugin.js
75打包_source/plugins/pastefromword/plugin.js
76打包_source/plugins/pastetext/plugin.js
77打包_source/plugins/popup/plugin.js
78打包_source/plugins/preview/plugin.js
79打包_source/plugins/print/plugin.js
80打包_source/plugins/removeformat/plugin.js
81打包_source/plugins/resize/plugin.js
82打包_source/plugins/save/plugin.js
83打包_source/plugins/scayt/plugin.js
84打包_source/plugins/smiley/plugin.js
85打包_source/plugins/showblocks/plugin.js
86打包_source/plugins/showborders/plugin.js
87打包_source/plugins/sourcearea/plugin.js
88打包_source/plugins/stylescombo/plugin.js
89打包_source/plugins/table/plugin.js
90打包_source/plugins/specialchar/plugin.js
91打包_source/plugins/tab/plugin.js
92打包_source/plugins/templates/plugin.js
93打包_source/plugins/toolbar/plugin.js
94打包_source/plugins/undo/plugin.js
95打包_source/plugins/wysiwygarea/plugin.js
96打包_source/plugins/wsc/plugin.js
97打包_source/plugins/dialog/plugin.js
98打包_source/plugins/styles/plugin.js
99打包_source/plugins/domiterator/plugin.js
100打包_source/plugins/panelbutton/plugin.js
101打包_source/plugins/floatpanel/plugin.js
102打包_source/plugins/menu/plugin.js
103打包_source/plugins/editingblock/plugin.js
104打包_source/plugins/selection/plugin.js
105打包_source/plugins/htmlwriter/plugin.js
106打包_source/plugins/menubutton/plugin.js
107打包_source/plugins/dialogui/plugin.js
108打包_source/plugins/panel/plugin.js
109打包_source/plugins/listblock/plugin.js

中间可能有遗漏的,压缩版就是按以上顺序压缩源码后放到一个js文件中的。

CKEDITOR是命名空间,像工具栏,编辑区,插件等都在该命名空间下
如果想对编辑区进行更多的了解,应查看CKEDITOR.editor

两个重要的类是CKEDITOR.dom.selection和CKEDITOR.dom.range;

CKEDITOR对原生的DOM的节点和事件均进行了封装。

通常第一次点击带有弹出窗口的插件较慢,是因为这个插件第一次弹出时,要去加载对应的弹框内容的js,所以较慢。

基于观察者设计模式进行设计的代码,个人感觉用的有点过份。插件机制也不错,不过也是用过了头,而且插件之间过于依赖,既然是插件,那就应该删除一个不影响到其它的,但是相当多的插件都依赖于别的插件,删除不使用的插件非常不方便 。

像编辑区,是用插件思路实现的,用于呈现界面都在_source/plugins/wysiwygarea/plugin.js里,如果你想对编辑区的呈现有所修改的话,你就在这里面去修改就成了,这个插件那是相当重要吧,觉得放_source/core/editor.js会更好一些,毕竟是核心功能啊,像我在页面上把核心功能的js引入后,不加载任何插件的情况下用CKEDITOR.replace替换掉后,编辑区是一片空白,只是把textarea很隐藏掉而已。

插件之间的依赖也是相当高的,比如undo功能,可以按工具栏上的按钮也可以用ctrl+z,如果用ctrl+z的话,你必须保证_source/plugins/keystrokes/plugin.js这个文件一定加载成功,而这个文件加载成功后,作者又在_source/plugins/wysiwygarea/plugin.js这个插件里面对它进行了初始化,如果不初始化也只是个摆设。真的是很。。。。

所以呢,这插件很不好修改的,牵一发而动全身。

当然,您使用原版的时候是不存在问题的,因为他把核心功能的js和插件的核心js都一起打包到了ckeditor.js里,我下的是3.4.2版本,目前是328kb,相当大,如果想删除一些不使用的插件吧,它又把里面搞这么乱,郁闷中…


转载请注明来自:[MSN Spaces]http://msn.shandian.biz/9.html

  1. 本文目前尚无任何评论.