代码之家  ›  专栏  ›  技术社区  ›  Tilo Mitra

如何在Appcelerator项目中组织JS文件

  •  44
  • Tilo Mitra  · 技术社区  · 16 年前

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

    谢谢,我很感激。 -提洛

    5 回复  |  直到 16 年前
        1
  •  31
  •   Maniz    12 年前

    考虑到app.js文件是主控制器,您创建的每个视图都是视图,并且您根据视图传递(或设置)模型数据,因此tianium本身本质上就是MVC。

    在Tianium中,您可以使用几个很好的内置机制来分解应用程序:

    1. Titanium.include #include 编译器指令。您可以将公共函数和JS类放在这个文件中,然后将它们包含在您希望导入和可用的任何地方。

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

    此外,在Tianium中,您可以创建文件夹,使您能够以适合自己和应用程序的方式在逻辑上组织应用程序。

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

    有关此声明的详细信息: Require

    有关模块的详细信息: Modules

        2
  •  24
  •   fbrandel    15 年前

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

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

    为了分离视图、模型和控制器,需要一个名称空间,因此我们在app.js中定义它,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"
       }
    }
    

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

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

        3
  •  6
  •   fbrandel    15 年前
        4
  •  3
  •   Mike S.    13 年前

    请允许我更新这个问题,因为大多数答复都被取代了。2012年第4季度,Appcelerator发布了Alloy MVC(beta)框架以及最新的IDE和SDK版本Tianium Studio 3.0和SDK 3.0。Alloy与Studio完全集成,因此在不到15分钟的时间内运行一个基本应用程序非常容易。Alloy引入了一个重要的文件夹重组: /应用程序

    这个 /资源 文件夹(代码曾经驻留的位置)现在是 /建造 文件夹。编译代码 /资源 在每次生成时被覆盖。

    Create Alloy Project

        5
  •  0
  •   Ryan White    14 年前

    看起来Appcelerator自己做的 Appcelerator MVC 在市场上,我还没有对此进行评估。

    http://johnkalberer.com/2011/09/29/appcelerator-mvc-example/