विरोधी स्पेगेटी रास्ता
प्रभावी रूप से विकसित करने के लिए और आसानी से बनाए रखने के लिए JavaScript आवेदन, के रूप में तदर्थ स्क्रिप्ट या subpar अपारदर्शी स्वचालन के एक नंबर के लिए विरोध किया, तो आप native Qooxdoo application उपयोग कर सकते हैं। यह बहुत अधिक लेखन के बिना Qooxdoo कवर करने के लिए असंभव है, लेकिन मूल एप्लिकेशन के मामले में (सी या जावा के साथ अवधि को भ्रमित नहीं है, Qooxdoo जावास्क्रिप्ट शुद्ध है) के रूप में वर्णित है:
अनुप्रयोगों के लिए कस्टम HTML का उपयोग कर/Qooxdoo की विजेट परत के बजाय सीएसएस-आधारित जीयूआई।
इस प्रकार ऐसा एप्लिकेशन किसी भी Qooxdoo UI परतों का उपयोग नहीं करता है, लेकिन केवल कोड संरचना सुविधाएं और निर्माण उपकरण। कक्षाओं में आयोजित क्यूओक्सडू में कोड, जावा में प्रति फ़ाइल एक। मैं इस तरह दिख सकता हूं:
/**
* @use(website.library.MosaicFlow)
*/
qx.Class.define('website.controller.Gallery', {
extend : website.controller.Abstract,
members : {
_baseUrl : 'https://picasaweb.google.com/data/feed/api',
_render : function(photos)
{
q('.preloader').remove();
q.template.get('gallery-template', {'photos': photos}).appendTo('#gallery-container');
var gallery = window.jQuery('#gallery-container .gallery').mosaicflow({
'minItemWidth' : 256,
'itemSelector' : '.photo',
'autoCalculation' : false
});
gallery.trigger('resize');
},
_convert : function(item, index)
{
try
{
return {
'url' : item.content.src,
'summary' : item.summary.$t,
'thumb' : item.media$group.media$thumbnail[0]
};
}
catch(ex)
{
this.debug('failed to convert', index, item);
return null;
}
},
_onLoadSuccess : function(event)
{
var request = event.getTarget();
var response = request.getResponse();
if(!qx.lang.Type.isObject(response) || !('feed' in response))
{
request.debug('Malformed response received');
}
else
{
this._render(response.feed.entry.map(this._convert, this).filter(function(item)
{
return !!item;
}));
}
},
_onLoadFail : function()
{
this.debug('Picasa search failed');
},
main : function()
{
var query = /^\/gallery\/(\w+)$/.exec(window.location.pathname);
var request = new qx.io.request.Jsonp(qx.lang.String.format('%1/all', [this._baseUrl]));
request.setRequestData({
'q' : query[1],
'thumbsize' : 300,
'max-results' : 20,
'alt' : 'json'
});
request.setTimeout(16000);
request.setCache(false);
request.addListener('fail', this._onLoadFail, this);
request.addListener('success', this._onLoadSuccess, this);
request.send();
}
}
});
क्यूओक्सडू ऑब्जेक्ट मॉडल दोनों दुनिया का लाभ उठाता है। जावा में परिपक्व प्लेटफार्मों के गुण हैं, साथ ही यह आधुनिक और गतिशील है, कक्षाएं, विरासत, इंटरफेस, मिक्सिन्स, घटनाएं, गुण, डेटा-बाध्यकारी और बहुत कुछ प्रदान करता है। चूंकि प्रत्येक वर्ग का एक परिभाषित नाम होता है और नामस्थान पेड़ में स्थित होता है, इसलिए क्यूओक्सडू जनरेटर इसका लाभ उठा सकता है। यह आपके वर्गों को पार करता है और उनके वाक्यविन्यास पेड़ बनाता है। फिर यह निर्भरताओं को हल करता है। अर्थात। जब आप किसी अन्य वर्ग को संदर्भित करते हैं, जैसे website.controller.Abstract
। यह निर्भरता ग्राफ की ओर जाता है, जिसका उपयोग उचित क्रम में लिपियों को लोड करने के लिए किया जाता है। ध्यान दें, यह सब एक डेवलपर के लिए स्वचालित और पारदर्शी है, और फाइलें लोड की गई हैं। कॉमनजेएस के मामले में कोई प्रस्ताव नहीं है, एएमडी के साथ कोड को लपेटने के लिए कोई बदसूरत बॉयलरप्लेट नहीं है।
जैसा कि आप ऊपर उदाहरण में देख सकते हैं बाहरी गैर-क्यूओक्सडू पुस्तकालयों से निपटना संभव है। बिल्डिंग प्रक्रिया में शामिल करने के लिए आपको लाइब्रेरी के लिए डमी रैपर लिखने की आवश्यकता हो सकती है।
विकास और उत्पादन वातावरण
आप (निर्माण की आवश्यकता केवल नए निर्भरता कोड में शुरू की है) तथाकथित स्रोत लक्ष्य के साथ अपने एप्लिकेशन बनाने का विकास। आपकी एप्लिकेशन फ़ाइलों को निर्भरता क्रम में लोड किया जाता है, एक-एक करके। फ्रेमवर्क फ़ाइलों को एक-एक करके लोड किया जा सकता है, या जो बेहतर विकल्प है, कई बड़े हिस्सों में बनाया गया है। उत्पादन वातावरण में आपका आवेदन कोड बिल्ड लक्ष्य के साथ बनाया गया है। आपके पास एकल आउटपुट फ़ाइल बनाने का विकल्प है, या आंशिक बिल्ड है, जहां बड़ी फ़ाइलों में कोड छिड़काया जाता है (आप उनके आकार को नियंत्रित कर सकते हैं)। आंशिक निर्माण इस (अनुकूलित/Gzipped) की तरह लग रहे हो सकता है:
├── [127/64kB] website.f6ffa57fc541.js
├── [100/33kB] website.f86294b58d1a.js
└── [361/110kB] website.js
ध्यान दें कि भागों पृष्ठों है कि उन्हें आवश्यकता होती है पर मांग पर लोड किए गए हैं।
http://example.com/
└── website.js
http://example.com/article
└── website.js
http://example.com/form
└── website.js
└── website.f86294b58d1a.js
http://example.com/gallery
└── website.js
└── website.f6ffa57fc541.js
http://example.com/geo
└── website.js
क्योंकि Qooxdoo पूर्ण विकसित वेबसाइट अभी तक बनाता है, लेकिन केवल देशी आवेदन प्रकार का एक मंच प्रदान कर रहा है लक्षित नहीं करता है, तो आप, बूटस्ट्रैपिंग, यूआरएल मार्ग की तरह आवेदन और कुछ मूल बातें करने के लिए प्रवेश, कोड की जरूरत आदि। मैंने इसे qooxdoo-website-skeleton के साथ संबोधित करने का प्रयास किया, जो ऊपर दिए गए उदाहरण हैं। आप इसका इस्तेमाल करने के लिए स्वतंत्र हैं, या अपना खुद का लिखें।
अंत में ध्यान दें कि औसत जावास्क्रिप्ट लाइब्रेरी के साथ शुरू करना उतना आसान नहीं हो सकता है, लेकिन जटिलता अंतिम लाभ के आनुपातिक है।
+1 पहली बार गैर-स्पेगेटी जावास्क्रिप्ट करने के लिए प्रवेश करने के लिए +1। बहुत से देवताओं के लिए बहुत लंबे समय तक इनकार करने के लिए रहते हैं :) –