现在我正在开发相当庞大而复杂的 webapp,并且必须处理大量的客户端 js 代码,为了让我的生活更轻松,我正在尝试尽可能多地解耦这些代码。
Nicholas Zakas ( http://www.youtube.com/watch?v=vXjVFPosQHw ) 和 Addy Osmani ( http://addyosmani.com/largescalejavascript ) 讨论了可扩展的 js 架构,并尝试应用一些他们对我的工作的想法。
我已经将所有代码分离到多个独立模块中,并通过某种中介处理所有相互通信。这种方法在大多数情况下效果很好。但在某些情况下,我认为这还不够。
我正在研究的模块之一代表了一个非常复杂的类似列表的结构。这里有一些简化的例子:
除了一些渲染逻辑,负责这块页面的模块应该处理:
- 分页
- 切换组
- 用 dnd 移动元素和组
- 剪切/复制/粘贴元素和组
- 令人耳目一新的确定组/元素
- 元素中的一些逻辑
- 在不久的将来可能会有更多的东西
我已经执行了所有我可以执行的无关逻辑(例如编辑和删除逻辑通过事件执行到另一个模块),但是模块大小仍然很大(超过 1K 行代码),我不知道如何减少它。此外,我正在为我的模块使用模块模式,因此在多个文件之间分离逻辑更加困难。
所以我来这里问有没有办法在单个模块中解耦复杂的逻辑?
更新:
我想澄清一件事。我很清楚如何 在我的代码中跨多个文件分离模块(“模块”来自模块模式) 。
但我真正寻找的是在单个模块(NKZ 演示文稿中的“模块”) 中分离关注点的新逻辑方法。