0

我有一个在其中一个视图中使用 Google 地图的应用程序。这是一个 SPA,它使用约定的 Durandal 的视图/视图模型文件结构。我要解决的问题是共享地图视图(谷歌地图)的功能模式非常多样化。例如,应用程序需要在地图上显示车辆的当前位置,能够显示车辆的历史信息(路径),并允许创建、编辑和删除地理围栏。使用地图的每种模式都需要隐藏一些 UX 控件,而使其他控件可见。

我相信,当上述所有视图模型逻辑代码都到位时,视图模型将变得非常大,因此难以维护和编码。我试图避免拥有一个巨大的视图模型文件,其中包含所有这些 UX 控件的逻辑。

从概念上讲,我希望多个视图模型文件与单个视图文件无缝协作,因此我不必在多个视图中重复谷歌地图。另外,如果可能的话,我想使用 Knockout 来保持简单/自动绑定。在维护单个视图文件的同时,使用 Durandal 分解大型视图模型文件有哪些解决方案?这是可能的,甚至是可取的吗?

4

1 回答 1

0

我会阅读requirejs。Durandal 使用 requirejs 作为构建 javascript 文件的一种方式。Requirejs 遵循AMD 模式,它为你做了很多事情。允许您使用封装创建私有变量并防止污染全局命名空间。

AMD 中也有一些模式,您可以使用单例或具有返回用于创建对象的函数的 amd 模块。就像在 OO 语言中如何使用 Class' 一样。Javascript 继承虽然有点时髦.. 所以可能需要一些阅读.. 以了解继承工作的不同方式。

所以,一旦你所有的 js 文件被分解成一百万个小模块,你就会像 ermergawd 一样......我的意大利面条代码现在是通心粉代码!

但不要害怕.. 你的 macaronni 代码都可以使用 requirejs 的r.js进行压缩/缩小/丑化。r.js 可以将您所有的 html/css/js 压缩到 1 个文件中。这可能是您的整个应用程序/站点。Durandal 还提供了一个很棒的优化器,它会自动为您完成所有这些工作。

于 2013-04-16T19:28:33.973 回答