44

我最近开始使用 Appcelerator 的 Titanium 创建一个 iPhone 应用程序。由于应用程序基本上都是 JS,我需要一些关于如何组织这个项目的建议。

为应用程序中的每个视图创建长的程序文件变得非常容易。有没有办法可以将 MVC 或某些结构合并到项目中?

谢谢,我很感激。-蒂洛

4

5 回答 5

31

Titanium 本身本质上是 MVC,因为您的 app.js 文件是主控制器,并且您创建的每个视图都是视图,并且您针对视图传递(或设置)模型数据。

在 Titanium 中,您可以使用一些不错的内置机制来分解您的应用程序:

  1. Titanium.include - Titanium.include 允许您包含一个或多个 JS 文件,就像 C#include编译器指令一样。您可以将常用函数和 JS 类放在此文件中,然后将它们包含在您希望它们导入和可用的任何位置。

  2. Titanium.UI.createWindow - 您可以创建一个新视图作为新窗口的属性传递一个 URL 到另一个 JS 上下文,这将创建一个新的 JS 子上下文并允许您维护自己的变量空间(但仍然给出您可以访问您的父母)。

此外,在 Titanium 中,您可以创建文件夹,以便以适合您和您的应用程序的方式逻辑组织您的应用程序。

编辑:今天, Titanium.Include 方法已被弃用。正如文档中提到的,我们应该创建一个 CommonJS 模块并使用该require()语句。

有关此声明的更多信息:需要

有关模块的更多信息:模块

于 2010-04-07T16:38:18.057 回答
24

由于我没有为 Titanium 移动项目找到合适的 MVC 解决方案,因此我想出了以下方法。对于小型应用程序,这可能是过度设计的,但有助于维护不断增长的应用程序。

文件夹结构:

/Resources
  /model
  /view
  /controller
  /ui
  /iphone
  /android
  app.js
  app.jss

为了分离视图、模型和控制器,需要一个命名空间,所以我们在 app.js 中定义它,这是我们的主控制器:

var app = {
  view: {},
  controller: {},
  model: {},
  ui: {}
}

在文件夹中,我们为每个组件放置单个 JavaScript 文件。为此,我们可以使用轻量级 JavaScript OOP 库,例如 MooTools 或 Prototype,或者将简单的 JS 函数定义为我们的对象。如果您还想从父类继承,那么库绝对是有意义的。

例子:

# Resources/controller/MyController.js
app.controller.MyController = function() {
   return {
      getView: function() {
         return new app.view.MyView().getView();
      }
   }
}

# Resources/view/MyView.js
app.view.MyView = function() {
   return {
      getView: function() {
         return Ti.UI.createWindow({...});
      }
   }
}

# Resources/view/MyModel.js
app.model.MyModel = function() {
   return {
      some: "data",
      foo: "bar"
   }
}

之后,我们可以在 app.js 文件中使用 Ti.include() 包含所有需要的模型/视图/控制器类,并使用我们的命名空间引用组件:

Ti.include("controller/MyController.js");
Ti.include("view/MyView.js");
var myController = new app.controller.MyController();
var myView = myController.getView();
myView.open();

MVC 方法现在假定控制器“控制”视图的状态并将数据从模型传递到视图。该视图仅包含用于样式的 UI 元素和属性。在 UI 中进行的任何操作都会触发一个事件,该事件告诉控制器执行所需的操作。

但是当然,根据您的个人喜好,MVC 的确切定义可能会有所不同;)

于 2011-05-02T11:43:46.773 回答
6

这也可能有所帮助:如何组织 Titanium 移动项目的基本结构:https ://github.com/krawaller/Struct

于 2011-05-02T10:31:24.233 回答
3

请允许我更新这个问题,因为大多数回复都已被取代。2012 年第四季度,Appcelerator 发布了 Alloy MVC(测试版)框架以及最新的 IDE 和 SDK 版本、Titanium Studio 3.0 和 SDK 3.0。Alloy 与 Studio 完全集成,因此很容易在 15 分钟内运行一个基本应用程序。Alloy 引入了重要的文件夹重组:/app文件夹现在是所有开发代码所在的位置。

/Resources文件夹,过去代码所在的位置,现在是 /build 文件夹的更新等效/Resources中的编译代码在每次构建时都会被覆盖。

我创建了一个关于创建 Alloy 项目的简短介绍性入门(截屏视频)。您可以通过我的保管箱文件夹查看它。

创建合金项目

于 2013-02-25T04:58:23.997 回答
0

看起来 Appcelerator 在市场上制作了自己的Appcelerator MVC,我尚未对此进行评估。

更多信息:http: //johnkalberer.com/2011/09/29/appcelerator-mvc-example/

于 2012-04-10T19:41:13.427 回答