请使用CommonJS推荐钛项目结构

Bre*_*yan 5 javascript titanium commonjs ios titanium-mobile

我正在开始一个新的Titanium应用程序,并希望使用最佳实践,并避免内存泄漏.我是CommonJS以及Titanium平台的新手.

不幸的是,似乎钛环绕在所有的示例应用程序Ti.include("/lib/module"),而不是新的建议的最佳实践require("/lib/module").

我担心的是使用CommonJS的内存消耗可能需要.从Titanium中CommonJS模块文档中可以看出模块将被缓存,这是否意味着如果我访问模块,即使它们超出范围,所有这些功能也会突然停留在内存中?

我已经开始使用以下结构的新应用程序

/ctrl           # Model/UI controllers
/lib            # libraries (common + 3rd party)
/ui             # UI forms
/model          # DAL objects for data store
Run Code Online (Sandbox Code Playgroud)

从这里我的主应用程序有一个仪表板样式视图,其结构松散如下:

(function() {
    var getMenuItem = require("/ui/main").getMenuItem;
    var win = Titanium.UI.createWindow({
        title:'Main',
        backgroundColor:'#fff'
    });
    var nav = Ti.UI.iPhone.createNavigationGroup({
        window:win
    });
    var sect;
    var data = [];
    sect = Ti.UI.createTableViewSection();
    data.push(sect);
    sect.add(getMenuItem("Customers",
        require("/ctrl/account").createCustMainWindow));
    sect.add(getMenuItem("Schedules",
        require("/ctrl/schedule").createScheduleMainWindow));
    sect.add(getMenuItem("Settings"));
    var menu = Titanium.UI.createTableView({
        style: Ti.UI.iPhone.TableViewStyle.GROUPED,
        data:data
    });
    win.add(menu);
    menu.addEventListener('click',function(e) {
        if (e.rowData.createWindow) {
            var win = e.rowData.createWindow(nav);
            nav.open(win);
        }
    });
    var navWindow = Titanium.UI.createWindow();
    navWindow.add(nav);
    navWindow.open();
})();
Run Code Online (Sandbox Code Playgroud)

非常感谢任何有关正确项目结构的指导.

小智 2

是一个正在开发的纯粹使用模块模式的社区应用程序,也通过开发者博客找到了Forging系列,其中有大部分使用模块模式开发的示例