`
achun
  • 浏览: 315279 次
  • 性别: Icon_minigender_1
  • 来自: 河南郑州
社区版块
存档分类
最新评论

nicEdit 源码组织结构

阅读更多

nicEdit 源码组织很有规律从src目录开始看,

 

nicAdvancedButton
nicBBCode
nicButtonTips
nicCode
nicColors
nicCore
nicImage
nicLink
nicPane
nicSelect
nicUndo
nicXHTML
nicLicense.js

 

里面除了一个nicLicense.js 是个文件,其他的都是目录,而这个nicLicense.js其实就是一段版权的声明.

如果继续看每个子目录内容的话,你会发现一个规律:

每个目录下都有一个和目录名称一致的js文件

这就是第一个规律,或者称之为代码规范 ,编程契约 ,也就是说:

nicEdit按目录来存储模块,目录名和模块名称一致,目录下一定有一个和目录( 模块) 名一致的js文件

那我们就称这个文件为模块主文件 .让我们截取nicCore/nicCore.js的注释来看看:

/**
 * NicEdit Core
 * @description: Core of nicEdit with basic features, required for all plugins 
 * @author: Brian Kirchoff
 * @version: 0.9.0
 * @order: bkLib,nicConfig,nicCore,nicInstance,nicIFrameInstance,nicPanel,nicButton,nicPlugin
 * The core includes nicEditors and nicEditor classes that handle the public interface for using NicEdit as well as a central point for sending events and commands.
 */

注意这个注释不仅仅起到注释作用,阐明

@description: 模块功能说明
@author: 作者
@version: 版本

而且 @order 还明确了此模块中文件的调入次序要求.

@order: bkLib,nicConfig,nicCore,nicInstance,nicIFrameInstance,nicPanel,nicButton,nicPlugin

再看nicImage模块的主文件注释

/**
 * nicImage
 * @description: Adds buttons to insert images in the editor area
 * @requires: nicCore, nicPane, nicAdvancedButton
 * @author: Brian Kirchoff
 * @version: 0.9.0
 */

里面有一个:

@requires: nicCore, nicPane, nicAdvancedButton

也就是说:@requires 声明了模块间的依赖关系,在这个例子中要求预先调入

 nicCore, nicPane, nicAdvancedButton

这几个模块.

通过 @requires, @order .形成了一个模块,模块文件的调入次序定义.

 

最后我们看看nicCore/nicConfig.js

/* START CONFIG */
var nicEditorConfig = bkClass.extend({
	buttons : {为方便查看此处略去},
	iconsPath : /* NICEDIT_ICONSPATH_START */'nicEditorIcons.gif'/* NICEDIT_ICONSPATH_END */,
	buttonList : ['bold','italic','underline','left','center','right','ol','ul','fontSize','fontFamily','fontFormat','indent','outdent','link','image'],
	iconList : /* NICEDIT_ICONLIST_START */{}/* NICEDIT_ICONLIST_END */
	/* NICEDIT_REMOVE_START */,iconFiles : {'bold' : 'src/nicCore/icons/bold.gif', 'italic' : 'src/nicCore/icons/italic.gif', 'underline' : 'src/nicCore/icons/underline.gif', 'outdent' : 'src/nicCore/icons/outdent.gif', 'indent' : 'src/nicCore/icons/indent.gif', 'hr' : 'src/nicCore/icons/hr.gif', 'superscript' : 'src/nicCore/icons/superscript.gif', 'subscript' : 'src/nicCore/icons/subscript.gif', 'strikethrough' : 'src/nicCore/icons/strikethrough.gif', 'ul' : 'src/nicCore/icons/ul.gif', 'ol' : 'src/nicCore/icons/ol.gif', 'left' : 'src/nicCore/icons/left.gif', 'right' : 'src/nicCore/icons/right.gif', 'center' : 'src/nicCore/icons/center.gif', 'justify' : 'src/nicCore/icons/justify.gif', 'save' : 'src/nicCore/icons/save.gif'}/* NICEDIT_REMOVE_END */
});
/* END CONFIG */

这个文件中含有全部的打包指示语法(略去"/* "和" */")

  1. 配置开始和结束:
    START CONFIG
    END CONFIG
  2. 合并图标文件的URL路径:因为打包后要把所有涉及的图标合并起来成为一个文件,所以要制定这个文件的URL
    NICEDIT_ICONSPATH_START
    NICEDIT_ICONSPATH_END
  3. 图标和标号列表:既然图标合并了,那就要标注图标名称和对应的序号
    NICEDIT_ICONLIST_START
    NICEDIT_ICONLIST_END
  4. 需要删除的代码:打包后应该删除的代码
    NICEDIT_REMOVE_START
    NICEDIT_REMOVE_END

这些定义在其他文件里也可能出现,回头看看这个组织结构,很合理.

我为这个结构添加了一个新的兼容规则:如果我们扩展(扩展不是插件,是指对nicEdit原模块的改造)了nicEdit,为了不破坏原来的结构和源代码(因为可能要升级),我采取了一个小技巧:对那一个文件的实现进行扩展就按这样的规则起名字:

foo.js-->fooEx.js

我们对nicEdit进行打包的时候,确定文件次序后,如果有扩展(Ex),直接把对应的扩展在原文件后调入就可以了(通过文件名的规则).

例子:对"__"函数的扩展,因__在nicCore/bkLib.js文件中所以对应的文件名是nicCore/bkLibEx.js:

/**
 * nicEdit bkLib module Extend
 * @description: bkLib module Extend
 * @author: achun.shx at gmail.com
 * @version: 0.9.0
 */
var nicEditorI18N=function(s){  
  return s;
};
function __(s) {
  return nicEditorI18N(s);
}

__函数的本意就是为了实现国际化(I18N)设立的接口,如果我们要中文化,就需要进行中文化的扩展,这里我起了一个符合常规习惯的函数

nicEditorI18N

重定义了__,让__调用nicEditorI18N,那国际化在哪里呢?

让我们做一个nicLang的插件:

nicLang/nicLang.js

/**
 * nicLang
 * @description: Add I18N for nicEdit
 * @requires: nicCore
 * @author: achun.shx at gmail.com
 * @version: 0.9.0
 */
var nicEditorI18N=function(s){
  var callee=arguments.callee;
  return callee[callee.withIn][s] || s;
};

bkExtend(nicEditorI18N,{
	withIn:navigator.userLanguage||navigator.language,
	setLang:function(lang){
		if (typeof this[lang]=='object') this.withIn=lang;
	},
	en:{}
});

这里重新定义了

nicEditorI18N

而具体的国际化文件是独立的,比如nicLang/zh-CN.js:

/**
 * nicEdit language support zh-CN
 * @description: Language Support zh-CN
 * @author: achun.shx at gmail.com
 * @version: 0.9.0
 */
nicEditorI18N['zh-CN'] = {
"save":"保存",
"undo":"撤销",
"redo":"重做",
"Click to Bold":"加黑",
"Click to Italic":"倾斜",
"Click to Underline":"下划线",
"Left Align":"左对齐",
"Center Align":"中间对齐",
"Right Align":"右对齐",
"Insert Ordered List":"有序列表",
"Insert Unordered List":"无序列表",
"Font Size...":"字体大小",
"Font Family...":"字体样式",
"Font Format...":"字体格式",
"Select Font Size":"字体大小",
"Select Font Family":"字体样式",
"Select Font Format":"字体格式",
"Click to Subscript":"下标",
"Click to Superscript":"上标",
"Click to Strike Through":"删除线",
"Remove Indent":"减少缩进量",
"Indent Text":"增加缩进量",
"Horizontal Rule":"水平线",
"Change Text Color":"更改文字颜色",
"Change Background Color":"更改背景色",
"Add Image":"增改图片",
"Add/Edit Image":"增改图片",
"Edit HTML":"编辑 HTML",
"Add/Edit Link":"增改链接",
"Add Link":"增改链接",
"Remove Link":"移除链接",
"File Explore":"文件管理器",
"submit":"确认",
"Align":"对齐",
"Alt Text":"替代文字",
"URL":"地址",
"Title":"提示",
"Open In":"打开方式"
};

好了我们分析完了nicEdit的结构,给出了最简单的一个扩展和插件实例,剩下的就是书写一个打包工具了,我准备用js重新写一个打包工具,稍后放出.

nicEdit专题

 

分享到:
评论

相关推荐

    nicEdit源代码

    这种精简的结构使得nicEdit在加载速度和资源占用方面具有优势。 4. **安装与使用** 使用nicEdit非常简单,只需要在网页中引入`nicEditor.js`,然后通过JavaScript调用`nicEditors.allTextAreas()`或`nicEditors....

    JS 插件NicEdit富文本编辑器特效源码.rar

    三、NicEdit的源码结构 解压"js_nicedit_bianjiq(jb51.net)"文件,我们可以看到NicEdit的核心源码文件,主要包含以下几个部分: 1. **nicEdit.js**:这是NicEdit的主要脚本文件,包含了所有核心功能的实现。 2. *...

    nicedit

    "nicEdit"是一款轻量级但功能强大的在线文本编辑器,专为网页设计和内容创建者提供便捷的富文本编辑体验。它不占用大量系统资源,却能提供类似于桌面文字处理软件的功能,使得用户在网页上可以轻松进行格式化、插入...

    html文本编辑器(nicEdit)

    4. **易于集成**:nicEdit的API简单易懂,开发者可以轻松地将其集成到现有的网页结构中。只需引用JavaScript文件并调用初始化函数,即可在指定元素上启用编辑器。 5. **自定义扩展**:nicEdit允许开发者根据需求...

    JS 插件NicEdit富文本编辑器特效源码.zip

    《JS插件NicEdit富文本编辑器特效源码解析》 在Web开发中,富文本编辑器是一个不可或缺的工具,它允许用户以类似Word的方式在网页上编辑内容。NicEdit是一款轻量级、高效的JavaScript插件,专为实现这一目标而设计...

    nicEdit(html编辑器) v0.9 r23-源码.zip

    源码学习是提高编程技能的重要方式,它能帮助开发者深入理解代码结构、设计模式以及最佳实践。 【压缩包解压密码】"www.cqlsoft.com"是解压这个文件时所需的密码,这可能是为了保护源代码不被未经授权的人员访问。...

    nicEdit富文本编辑器

    **一、nicEdit的基本结构** nicEdit的核心是基于JavaScript构建的,因此它可以在任何支持JavaScript的浏览器上运行。它由以下几个主要部分组成: 1. **核心库(nicCore)**:这是nicEdit的基础,处理所有的编辑器...

    nicEdit_脚本实例_

    【 nicEdit 脚本实例详解 】 nicEdit 是一个轻量级的在线HTML编辑器,主要用于网页上提供便捷的富文本编辑功能。它旨在简化网页中的文本输入体验,让用户可以像在桌面文本编辑器中一样编辑内容,而无需深入学习复杂...

    NicEdit编辑器API文档

    ### NicEdit编辑器API文档知识点概述 #### 一、关于NicEdit NicEdit是一款轻量级、跨平台的内联内容编辑器,旨在使网站内容能够轻松地在浏览器中进行即时编辑。它的小巧易用使得任何网页元素或div都可以变成可编辑...

    nicEdit 编辑器

    **nicEdit 编辑器详解** 在Web开发中,富文本编辑器是不可或缺的一部分,它为用户提供了在网页上创建和编辑复杂格式文本的能力。nicEdit是一款轻量级且易于集成的富文本编辑器,特别适合那些对资源要求严格的项目。...

    NicEdit基于AJAX 技术的WYSIWYG 在线编辑器

    ** NicEdit:基于AJAX技术的WYSIWYG在线编辑器 ** NicEdit是一款轻量级、高效的富文本编辑器,它利用AJAX技术实现了无刷新的“所见即所得”(WYSIWYG)编辑功能。在网页设计中,这种编辑器允许用户在浏览器上直接...

    nicEdit轻量级网页富文本编辑器

    **nicEdit轻量级网页富文本编辑器** nicEdit是一款非常小巧且功能强大的JavaScript富文本编辑器,它的核心代码大小不超过100KB,这使得它在网页应用中具有较高的加载速度和良好的性能表现。nicEdit的设计理念是简洁...

    简洁的富文本编辑器NicEdit插件

    NicEdit是一个简洁且轻量级的富文本编辑器插件,专为那些追求高效、简洁和跨平台解决方案的开发者设计。在这个专题中,我们将深入探讨NicEdit的基本功能、优点、如何使用以及其在实际项目中的应用。 首先,让我们...

    nicEdit轻量级文本编辑器

    **nicEdit轻量级文本编辑器** nicEdit是一款小巧而功能强大的在线文本编辑器,它专为网页开发者设计,主要用于在网页上提供便捷的富文本编辑功能。由于其体积小、加载速度快,使得它成为很多网站论坛、博客和其他...

    NicEdit-Textarea编辑器

    NicEdit能够让任何 element/div变成可编辑或者能够把标准的TextArea转换成富文本编辑器。 NicEdit是我见过最轻量级的富文本编辑器,总共就一个JS文件和一张图片,经过我在项目里的使用情况来看,相当好用。

    nicEdit HTML网页在线编辑器.rar

    nicEdit 是一款简洁的HTML网页在线编辑器,上传功能需要自己添加,nicEdit除了上传功能外,几乎包括了常用的网页文字编辑功能,包括排版、字体样式设计、表格插入、图片插入等,若对编辑器上传功能无要求的话,...

    nicEdit中文以及官方demo(自己汉化的)

    demo1中的方法是给页面中所有textarea增加编辑器 demo2中的这个方法是给...<script src="nicEdit.js" type="text/javascript">该方法加载编辑器js js文件中iconsPath : 'nicEditorIcons.gif'语句设置编辑器图片路径

    nicEdit简单小巧编辑器

    6. **易于定制**:nicEdit的源码清晰,结构合理,使得开发者可以方便地进行二次开发和定制,以适应特定项目的需求。 ### 使用方法 1. **引入nicEdit.js**:首先,在HTML页面中通过`<script>`标签引入nicEdit.js库...

    nicEdit(html编辑器) v0.9 r23

    NicEdit 是一个轻量级,跨平台,内联的内容编辑器。能够使你很容易地浏览器上实时的编辑站点内容。NicEdit Javascript 能够快速地整合到任一站点中并使得任一元素/DIV变的可以编辑或将标准文本区域转变成富文本形式...

Global site tag (gtag.js) - Google Analytics