2010-09-09 10 views
6

में तर्क और यूआई को अलग करना मैं एस्सेलरेटर टाइटेनियम और जावास्क्रिप्ट के लिए नया हूं और मुझे एक आईफोन ऐप कोडिंग में दिलचस्पी है। मैंने मान्यता दी कि यूआई बनाने के लिए "कई" कोड की आवश्यकता है। अब तक कोई समस्या नहीं है, लेकिन मैं समझदारी से अपने आवेदन तर्क से उस कोड को अलग करना चाहता हूं। सर्वोत्तम प्रथाएं क्या हैं?टाइटेनियम (जावास्क्रिप्ट)

[अद्यतन]tweetanium एक महान उदाहरण एक टाइटेनियम मोबाइल अनुप्रयोग

उत्तर

4

ठीक संरचित करने के तरीके है, मैं सिर्फ एक शांत अभ्यास मिल गया।

मैं अब मैं छेद डेटा संरचना उपयोग करने में सक्षम हूँ

Titanium.include('../controller/con_file.js'); 

साथ आवेदन तर्क के साथ con_file.js view_file.js शामिल हैं।

मैं एक ही js फ़ाइल में सभी सामान को लागू करने के बाद से अपने आवेदन के विकास के लिए mvc-pattern का उपयोग करते हैं काफी बदसूरत है:

+2

आप सामान्य जेएस भी कोशिश कर सकते हैं: https://wiki.appcelerator.org/display/guides/Mobile+Best+Practices – Julian

4

मैं एक कोशिश करनी होगी। इसलिए मैंने दृश्य के लिए एक फ़ाइल का उपयोग करने और लुक-एंड-महसूस करने वाली सभी सामग्री, डाटाबेस हैंडलिंग (नियंत्रक), विशेष रूप से एसक्यूएल-कथन, और abstract data type (मॉडल) के लिए एक फ़ाइल के लिए एक फ़ाइल का उपयोग करने का निर्णय लिया।

एक छोटी उदाहरण:

दृश्य: viewConcerningObject.js

Ti.include('object.js'); 

var win = Ti.UI.currentWindow; 
var myObject = new object(); 

var myObjectName = Ti.UI.createLabel({ 
    text:myObject.getName(); 
}); 

win.add(myObjectName); 

मॉडल: object.js

Ti.include('controllerConceringObject.js'); 

function object(){ 
    this.name = 'myInitialName'; 

    this.getName(){ 
     return this.name; 
    }; 

    this.setName(newName){ 
     this.name = newName; 
    }; 

    this.updateNameFromDb(){ 
     this.name = getNameFromDatabase(); 
    }; 

} 

नियंत्रक: controllerConcerningObject.js

function getNameFromDataBase(){ 
    var db = Ti.Database('objects'); 
    var sql = 'SELECT name FROM objects'; 
    var recordset = db.execute(sql); 
    var name = recordset.field(0); 
    recordset.close(); 
    db.close(); 
    return name; 
}; 

तो फ़ोल्डर संरचना इस तरह हो सकता है:

MyProject: folderview (viewConcerningObject.js), folderModel (theDatabase.db, object.js), folderController (controllerConcerningObject.js)।