学习 kityminder 笔记(六)

本文详细介绍了 KityMinder 的核心组件,包括关键的类和模块,如 `keyreceiver.js` 中的键盘事件处理,`module.js` 中的模块注册与生命周期,`readonly.js` 中的只读模式支持,`render.js` 中的渲染机制,`connect.js` 中的连接线管理,以及 `layout.js` 中的布局算法。此外,还提及了主题和模板的使用,以及 `promise.js` 和 `patch.js` 的相关功能。通过对这些核心组件的解析,读者可以更好地理解 KityMinder 的工作原理。
摘要由CSDN通过智能技术生成

接上篇, 接着学习 kityminder.

== core/keyreceiver.js ==

extend class Minder {
   init-hook(): 构造时设置选项, 侦听 'paperrender' 事件, 以调用 _initKeyReceiver()
   _initKeyReceiver(): 创建 DOM 元素 <input class='km-receiver'>, 添加到容器 <div> 中.
       在此 <input> 上侦听 keydown, keyup, keypress 等多个事件, 然后转给 minder 对象处理.
       看起来似乎是用于专门接收 key 事件的, 也许容器不方便接收 key 事件?
   事件 on_focus(): 设置上面的 <input> 为 focus.
   似乎是将 <div> 的 focus,blur 同步给 <input>.
}

 

== core/module.js ==

闭包变量: _modules = {}, 注释为已注册的模块.

对外提供函数 Module.register(name, module): 注册一个模块.
   现在对什么是模块的概念不太清晰, 另 seajs 也是加载模块, 那么有区别?

extend class Minder {  // 注释: 模块声明周期维护.
   init-hook(): 调用 _initModules()
   _initModules(): 某种(预先?)模块加载机制, 可能先要注册模块, 然后这里在 minder 构造时完成一些加载工作.
       还涉及 command, event, renderer, shortcut 等等, 稍后细研究吧. 
   _garbage(): 删掉所有子节点, 等于清空文档?
   destroy(): 清空文档, for-each(modules).destroy(this)
   reset(): 清空, for-each(modules).reset(this); 相当于每模块提供 destroy, reset 方法可被调用.
}

实际查看了一下, 在 minder 对象中有一个 _modules{}, 里面有 Arrange, Clipboard, Connect, ...
   大约 30 个模块? ._query 为 null, ._rendererClasses 有 left,right,top 等几个. ._commands 前面
   遇到过.

模块看起来是一种扩展功能的机制, 稍后需要更深入看看.

 

== core/readonly.js : 只读模式支持 ==

extend class Minder {
   init-hook(): 如果选项有 readonly, 则设置为 disabled.
   disable(): 禁用命令. 对命令对象的 query 方法包装

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值