骨干js MVC语义建议

时间:2011-11-13 11:08:54

标签: javascript jquery model-view-controller backbone.js

我正在构建我的第一个基于backbone.js的站点,我有一些语义问题。 我的JS应用程序结构如下:

application.js
/collections/WorkspaceCollection.js
...buch of other more atomic collections
/views/WorkspaceView.js
...buch of other more atomic views
/controllers/WorkspaceController.js (extends router)
...bunch of other atomic controllers
/models/WorkspaceModel.js
...bunch of other atomic models

在我的application.js文件中我实例化了Worksapce,它的商业运作正常。

我的问题是,如果我有很多...那么......我需要执行的基于MVC的函数有时可以说就像在各个地方使用的数学函数一样。

将这些转储到application.js中是否更正确,还是应该扩展全局Math对象(这看起来有点干净但是嗯)

猜我正在寻找卫生提示: - )

[编辑]:

为了避免任何混淆,我有一堆数学函数,我需要做一些矢量数学以及javascript在其自己的Math类中固有的一些东西。 我在整个应用程序的不同位置使用其中一些。 顺便说一下,如果我有大量的字符串,音频视频等功能,我可以猜这个问题。

4 个答案:

答案 0 :(得分:1)

我在理解你在这里要求的内容时有点或有点麻烦......

但数学函数感觉它们应该成为模型的一部分。该模型不仅仅是一堆数据对象。它包括对您的应用程序很重要的业务规则。它模拟你的世界,通常包括数学。视图通常不关心数学,除非你做更多的原生绘画或动画......

如果有问题的数学函数是通用的,那么你可能只需要一个数学效用函数?我的意思是,你可以扩展Math对象,但为什么要冒这个空间污染?如果您不想在模型中使用它,那么请自己创建数学实用程序。

答案 1 :(得分:1)

您想要添加哪些数学函数?如果数学函数是特定于您的模型,我会在那里添加它们。如果它们是您在任何数学库中所期望的通用数学函数,那么扩展全局数学对我来说似乎很好。我还会创建一个新类。

答案 2 :(得分:0)

如果它独立于您正在构建的应用程序,我会说它应该是一个单独的文件。扩展本机Math对象通常被认为是一种不好的做法。

答案 3 :(得分:0)

我最终在运行时扩展了下划线,这可能是不对的但是下划线的本质基本上是一组实用函数,它使我的实用函数附加到这个命名空间是有意义的,因为它们中的很多都被使用和称赞强调功能。

对此的任何想法也将受到赞赏。