मैं अच्छी तरह से कल्पना की गई वास्तुकला के माध्यम से अपने ऐप्स को बढ़ाने और स्केल करने के लिए सर्वोत्तम अभ्यासों की तलाश कर रहा हूं। उपर्युक्त सभी अभ्यास छोटे से मध्यम आकार के ऐप के लिए काम करते हैं लेकिन जब आप किसी बड़ी टीम में काम करते हैं तो विफल हो जाएंगे। मेरे द्वारा आजमाए गए कई तरीके हैं:
1) मैंने इस रणनीति का पालन किया: https://github.com/aldeed/meteor-autoform टेम्प्लेट को स्केल और पुन: उपयोग करने के लिए। घटक और क्षेत्र डिजाइन पर लेखक का बहुत अच्छा विचार है। मैं वर्तमान में इसे लागू कर रहा हूं क्योंकि समुदाय ने 36 पैकेज विकसित किए हैं जो लगभग हर मामले को कवर करते हैं और मैं टाइपस्क्रिप्ट का उपयोग विकास चरण के दौरान सुरक्षित रखने के लिए कर सकता हूं ।
<template name="autoForm">
{{#unless afDestroyUpdateForm this.id}}
{{! afDestroyUpdateForm is a workaround for sticky input attributes}}
{{! See https://github.com/meteor/meteor/issues/2431 }}
<form {{atts}}>
{{> Template.contentBlock ..}}
</form>
{{/unless}}
</template>
यहाँ कैसे करना है पर एक अच्छा ब्लॉग पोस्ट है: http://blog.east5th.co/2015/01/13/custom-block-helpers-and-meteor-composability/ साथ ही यहाँ: http: // meteorpedia .com / पढ़ने / Blaze_Notes
2) यह एक बहुत आशाजनक लगता है, लेकिन हाल ही में अपडेट नहीं किया गया है। यह कॉफी स्क्रिप्ट में लिखा गया एक पैकेज है। Meteor के लिए Blaze Components ( https://github.com/peerlibrary/meteor-blaze-compords ) आसानी से जटिल यूआई तत्वों को विकसित करने के लिए एक प्रणाली है जो आपके उल्का ऐप के आसपास पुन: उपयोग किए जाने की आवश्यकता है। आप उन्हें कॉफीस्क्रिप्ट, वेनिला जावास्क्रिप्ट और ईएस 6 में उपयोग कर सकते हैं। सबसे अच्छी बात है, घटक ओओपी हैं। यहाँ उनके उदाहरणों में से एक है:
class ExampleComponent extends BlazeComponent {
onCreated() {
this.counter = new ReactiveVar(0);
}
events() {
return [{
'click .increment': this.onClick
}];
}
onClick(event) {
this.counter.set(this.counter.get() + 1);
}
customHelper() {
if (this.counter.get() > 10) {
return "Too many times";
}
else if (this.counter.get() === 10) {
return "Just enough";
}
else {
return "Click more";
}
}
}
ExampleComponent.register('ExampleComponent');
{{> ExampleComponent }}
3) मुझे ऐसे प्रकार और ट्रांसपिलर पसंद हैं जो मुझे बताते हैं कि कुछ गलत कब और कहां होगा। मैं Meteor के साथ काम करने के लिए टाइपस्क्रिप्ट का उपयोग कर रहा हूं और निम्नलिखित भंडार पाया गया: https://github.com/dataflows/meteor-typescript-utils ऐसा लगता है जैसे निर्माता ने एमवीसी दृष्टिकोण को पूरा करने की कोशिश की।
class MainTemplateContext extends MainTemplateData {
@MeteorTemplate.event("click #heybutton")
buttonClick(event: Meteor.Event, template: Blaze.Template): void {
// ...
}
@MeteorTemplate.helper
clicksCount(): number {
// ...
}
}
class MainTemplate extends MeteorTemplate.Base<MainTemplateData> {
constructor() {
super("MainTemplate", new MainTemplateContext());
}
rendered(): void {
// ...
}
}
MeteorTemplate.register(new MainTemplate());
<template name="MainTemplate">
<p>
<input type="text" placeholder="Say your name..." id="name">
<input type="button" value="Hey!" id="heybutton">
</p>
<p>
Clicks count: {{ clicksCount }}
</p>
<p>
<ul>
{{#each clicks }}
<li> {{ name }} at <a href="{{pathFor 'SingleClick' clickId=_id}}">{{ time }}</a></li>
{{/each}}
</ul>
</p>
</template>
दुर्भाग्य से, इस परियोजना का रखरखाव या सक्रिय रूप से विकास नहीं हुआ है।
4) और मुझे लगता है कि पहले से ही उल्लेख किया गया था, आप पैकेज का उपयोग करके स्केल कर सकते हैं। इसके लिए सोच का एक अच्छा सार तरीका चाहिए। यह टेलीस्कोप के लिए काम करता है: https://github.com/TelescopeJS/Telescope
5) उल्का-टेम्प्लेट-विस्तार - टेम्पलेट हेल्पर्स, ईवेंट हैंडलर और हुक को कॉपी करने के विभिन्न तरीके प्रदान करता है, जो कोड के उपयोग की अनुमति देता है; एक नकारात्मक पक्ष यह है कि सभी प्रतिलिपि को एक डेवलपर द्वारा ध्यान रखना पड़ता है, अक्सर बार-बार, जो कोडबेस बढ़ने के कारण समस्याग्रस्त हो जाता है; इसके अलावा, स्पष्ट रूप से परिभाषित एपीआई समुदाय के बिना घटकों का निर्माण और साझा नहीं किया जा सकता है
6) फ्लो कंपोनेंट - फ्लो कंपोनेंट्स एपीआई डिज़ाइन में रिएक्ट के करीब होते हैं जबकि ब्लेज़ कंपोनेंट्स डेटा कॉन्टेक्ट्स और टेम्प्लेट बियरर्स जैसी परिचित अवधारणाएँ रखते हैं; दूसरी ओर प्रवाह घटक अभी भी टेम्पलेट-आधारित ईवेंट हैंडलर का उपयोग करते हैं, जबकि ब्लेज़ कंपोनेंट्स उन्हें क्लास तरीके बनाते हैं, ताकि विरासत के माध्यम से उन्हें विस्तारित या ओवरराइड करना आसान हो; सामान्य रूप से ब्लेज़ कंपोनेंट अधिक OOP उन्मुख लगते हैं; प्रवाह घटक अभी तक आधिकारिक रूप से जारी नहीं किए गए हैं ( # 5 और # 6 https://github.com/peerlibrary/meteor-blaze-compenders#javascript-and-es6-support के लिए टेक्स्ट क्रेडिट )
नंबर 2 और 3 को कुछ उपयोग करने की आवश्यकता है, लेकिन आप समय के साथ विकास की गति प्राप्त करेंगे। नंबर चार आपको अपने कोड को और अधिक स्थिर बनाने के लिए घटकों का निर्माण और परीक्षण करने देता है। नंबर तीन, टाइपस्क्रिप्ट की पूर्ण प्रकार की सुरक्षा के लाभ के साथ आता है, जो कि एक बड़ा प्लस है जब आप खराब प्रलेखन वाली टीम में विकसित होते हैं। हालाँकि, मैं वर्तमान में नंबर दो को टाइपस्क्रिप्ट में पोर्ट कर रहा हूं क्योंकि मैं इसके साथ काम करने में बहुत सहज महसूस करता हूं और जब मैं गुलप का उपयोग नहीं कर रहा हूं तो इसे उल्का के साथ काम करने के लिए कंपाइलर पैकेज को ट्वीस्ट नहीं करना है।
उल्का के साथ काम करने का सही तरीका ढूंढना अभी भी मुश्किल है। आपको इसे अपने लिए समझने की आवश्यकता है, अन्यथा आप एक अच्छी तरह से व्यवस्थित फ़ोल्डर संरचना के साथ समाप्त होते हैं, लेकिन आपके पास कोई सुराग नहीं है कि सब कुछ कहां है। खुश कोडिंग।