【发布时间】:2011-11-21 16:19:36
【问题描述】:
我要开发移动网络应用程序。 应用程序将使用 Web 服务获取后端数据。 所有演示和业务逻辑都需要用 javascript 编写。
ios和android有不同的设计。
并且不想为两者分别重写业务逻辑。
谁能建议设计模式来分离 JavaScript 中的业务逻辑和表示逻辑。
【问题讨论】:
标签: javascript design-patterns mobile-website
我要开发移动网络应用程序。 应用程序将使用 Web 服务获取后端数据。 所有演示和业务逻辑都需要用 javascript 编写。
ios和android有不同的设计。
并且不想为两者分别重写业务逻辑。
谁能建议设计模式来分离 JavaScript 中的业务逻辑和表示逻辑。
【问题讨论】:
标签: javascript design-patterns mobile-website
一个好的设计模式是设计一个“REST-ful”API 来存储、检索和修改应用程序操作的数据。然后设计共享此通用 API 的单独用户界面。编写代码时,使用单独的原型和函数来表示和操作来自用于表示数据在用户界面中的外观或控制方式的原型的数据。
您还可以通过使用 CSS 来控制应用程序在 iOS 和 Android 上的外观来实现可重用性,同时在两个版本的应用程序中仍然使用相同的 HTML DOM 结构。换句话说,你可以通过操作 DOM 元素的“类”属性而不是显式修改“样式”属性,依靠 CSS 来应用基于类的样式,可以获得更多的可重用性。然后,在大多数情况下,您可以使用相同的 JavaScript 代码,但只需为不同的用户代理提供不同版本的 CSS。可能会出现其他差异;我只是建议在它们出现时将它们重构为自己的函数。
正如其他人所指出的,有许多现有的 JavaScript 框架(例如 Sencha Touch)已经为移动设备抽象了视图逻辑,允许您只编写逻辑的模型和控制部分。如果您有 UI 组件的抽象,那么唯一需要维护的分离是模型和控制器之间的分离。
【讨论】:
看看backbone.js,它是用于丰富 javascript 应用程序的出色 MVC 框架。
【讨论】:
我正在使用Sencha Touch,因为它允许我将 iOS、Android 和平板电脑分开。 此外,它还支持 REST-ful 和 JSONP 随心所欲。
【讨论】:
Sencha Touch 是我认为的最佳选择。不仅让您分离演示和业务逻辑,它还跨浏览器,尤其是 Android、iPhone 和 Blackberry 6。 通过使用 sencha touch,您可以轻松地使用 phonegap 将移动 Web 应用程序部署到本机 Web 应用程序
【讨论】: