【发布时间】:2011-06-01 16:42:25
【问题描述】:
我正在创建一个基于 Web 的应用程序(即带有 jQuery 和大量 SVG 的 JavaScript),其中用户与屏幕上的“对象”进行交互(想想可以拖动、调整大小和通过箭头连接的 DIV - 就像一个矢量绘图程序或图形编程语言)。
由于每个“对象”都包含单独的信息,但总是属于元素的“类”,因此很明显应该使用 OOP 方法来编程此应用程序。
但是我在哪里存储“对象”最好呢?
- 我是否应该创建一个包含所有(JS 原生)对象的全局结构(“注册表”)并告诉他们“在 DOM 上绘制自己”?
- 或者我应该避免这种结构并将(相关)DOM 节点视为我的对象并将相关数据作为 .data() 附加到它们?
第一种方法非常 MVC - 但我猜所有事件处理程序的附件将不平凡。
第二种方法将以简单的方式处理事件,并且不会创建重复的结构,但我猜通常的 OO 东西(如方法)会更复杂。
你有什么推荐的?我认为答案将是 JavaScript 和 SVG 特定的,因为“通常”的编程语言没有如此高度组织的输出“画布”。
【问题讨论】:
-
我会等待回复,因为这个问题在 IMO 中非常有趣……但是为什么您选择 SVG 而不是使用画布和更“传统”的方法,即简单地让对象在画布?
-
我选择了 SVG 而不是 Canvas,因为我的数据是矢量而不是像素类型。而且,更重要的是,我经常使用 JavaScript 事件(mousedown、mousemove、...),因为我可以将它们绑定到 SVG 元素,所以我将“碰撞检测”卸载到浏览器的本机实现并不要不必自己在(可能很慢)JavaScript 中完成
标签: javascript jquery oop dom svg