कैसे एक Ember.js आवेदन वास्तुकार के लिए


105

एम्बर जेएस के विकास के साथ इसे बनाए रखना मुश्किल हो गया है क्योंकि इसके संपर्क में (और पहुंच गया!) संस्करण 1.0.0। ट्यूटोरियल और प्रलेखन आ गए हैं और सर्वोत्तम प्रथाओं और मूल डेवलपर्स के इरादे के बारे में बहुत भ्रम पैदा करते हैं।

मेरा सवाल ठीक यही है कि: एम्बर जेएस के लिए सबसे अच्छे अभ्यास क्या हैं? क्या कोई अपडेट किए गए ट्यूटोरियल या काम करने वाले नमूने दिखा रहे हैं कि कैसे एम्बर जेएस का उपयोग करने का इरादा है? कोड नमूने बहुत अच्छा होगा!

सभी के लिए धन्यवाद, विशेष रूप से एम्बर जेएस देव!


7
यह प्रश्न 'EmberJS ट्यूटोरियल' के लिए Google खोज के लिए शीर्ष पर है, लेकिन यह वास्तव में उस प्रश्न का उत्तर नहीं देता है। यह वास्तव में इंटरनेट पर 2 लिंक के बारे में एक सवाल है। क्या आप शीर्षक को फिट करने के लिए इस प्रश्न को बदलने पर विचार करेंगे? मुझे लगता है कि सबसे अच्छा उत्तर वह होगा जो वास्तव में किसी को एम्बरजेएस के साथ एक एप्लिकेशन बनाने की प्रक्रिया के माध्यम से लिया जाएगा।
जॉर्ज स्टॉकर

जवाबों:


17

एक महत्वपूर्ण परियोजना है कि नए और अनुभवी दोनों Ember.js डेवलपर्स को इसका लाभ उठाना चाहिए:

एंबर-CLI

हालांकि इसे कमांड लाइन के साथ कुछ आराम के स्तर की आवश्यकता होती है, आप सेकंड के एक मामले में समुदाय द्वारा अनुशंसित सर्वोत्तम प्रथाओं के साथ एक आधुनिक एम्बर परियोजना उत्पन्न कर सकते हैं।

जबकि यह एक Ember.js को सेटअप करने के लिए फायदेमंद है, जैसा कि माइक ग्रास्सोट्टी के जवाब में कठिन है, आपको उत्पादन कोड के लिए ऐसा नहीं करना चाहिए। खासकर जब हमारे पास इतनी शक्तिशाली और आसान परियोजना है, जैसे Ember-CLIहमें यह दिखाने के लिए कि हमें खुश रास्ता मंजूर है


1
धन्यवाद मैट! मैंने इसे एम्बर-सीएलआई को सीधे यातायात के लिए स्वीकृत उत्तर दिया है।
क्रेग लैबेंज़

बस कुछ दिनों पहले पहली बार एम्बर का उपयोग करना शुरू किया था, और एम्बर-सीएलआई को शुरू करने और उपयोग करने में काफी आसान है। केवल नकारात्मक पक्ष यह है कि यह बहुत अधिक जटिलता का परिचय देता है जिसे आप नहीं चाहते / आवश्यकता (हालांकि जटिलता जिसे अनदेखा किया जा सकता है, यदि आप किसी व्यक्ति के भरोसेमंद प्रकार हैं)। बोवर और जेएसहिंट और एम्बर-सीएलआई और ट्रैविस सीआई और एडिटकॉन्फिग और गिट कॉन्फिग फाइल्स, अन्य चीजों के साथ-साथ एसेट्स के लिए ब्रोकोली और टेस्टिंग के लिए फैंटमज ...
Jillillian

फेयर पॉइंट @JKillian। मुझे पता है कि उन कारणों से एम्बर के सीखने की अवस्था के बारे में चिंता है। जबकि एम्बर-क्ली कुछ जटिलता (एम्बर-डेटा और ब्रोकोली) का परिचय देता है, यह विक्रेता की आवश्यकताओं के आसपास महत्वपूर्ण भ्रम को दूर करता है और आपकी परियोजना को संरचित करता है। तो नमक का एक दाना है।
मैट जेनसेन

1
पूरी तरह से एम्बर सीएलआई खुश पथ से सहमत हैं! माइक ग्रास्सोटी का क्विकस्टार्ट गाइड नीचे सही "अगला चरण" होगा यदि यह ऐसा नहीं था ... पुराना। एम्बर 2.0 ऐप बनाने की तलाश करने वालों के लिए, सबसे अच्छी बात, जहाँ तक सर्वोत्तम प्रथाएँ हैं, यह सुनिश्चित करना है कि आप मुख्य अवधारणाओं को समझें: मॉडल, मार्ग, सेवाएँ, घटक, आदि। एम्बर डॉक्स एक महान संसाधन हैं, लेकिन जब से मैं सभी अवधारणाओं को जोड़ने वाले एक अद्यतन अपडेट में नहीं आया है (एक नमूना ऐप के साथ बहुत कम) मैंने इसे लिखने का फैसला किया: emberigniter.com/5-essential-ember-2.0-concepts
फ्रैंक ट्रेसी

110

माइक ग्रासोट्टी की न्यूनतम व्यवहार्य एम्बर.जस्ट क्विकस्टार्ट गाइड

यह क्विकस्टार्ट गाइड आपको कुछ मिनटों में शून्य से थोड़ा अधिक-से-शून्य तक प्राप्त करना चाहिए । जब किया जाता है, तो आपको कुछ आश्वस्त होना चाहिए कि वास्तव में काम करता है और उम्मीद है कि अधिक जानने के लिए पर्याप्त रुचि होगी।

चेतावनी: इस गाइड को केवल आजमाएँ नहीं, फिर सोचें कि एम्बर-चूसना "मैं उस तेज-गाइड को jQuery या फोरट्रान में बेहतर लिख सकता हूँ" या जो भी हो। मैं आपको अंगारे या किसी भी चीज पर बेचने की कोशिश नहीं कर रहा हूं, यह मार्गदर्शिका नमस्ते-दुनिया से थोड़ी अधिक है।

चरण 0 - jsFiddle बाहर की जाँच करें

इस jsFiddle के पास इस उत्तर के सभी कोड हैं

चरण 1 - ember.js और अन्य आवश्यक पुस्तकालयों को शामिल करें

Ember.js को jQuery और हैंडल दोनों की आवश्यकता होती है। सुनिश्चित करें कि उन पुस्तकालयों को ember.js से पहले लोड किया गया है:

<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/handlebars.js/1.0.0-rc.3/handlebars.js"></script>
<script type='text/javascript' src="http://cdnjs.cloudflare.com/ajax/libs/ember.js/1.0.0-rc.1/ember.js"></script>

चरण 2 - एक या एक से अधिक हैंडलबार टेम्पलेट का उपयोग करके अपने एप्लिकेशन के उपयोगकर्ता इंटरफ़ेस का वर्णन करें

डिफ़ॉल्ट रूप से एम्बर एक या एक से अधिक हैंडलबार्स टेम्प्लेट की सामग्री का उपयोग करके आपके html पृष्ठ के शरीर को बदल देगा। किसी दिन ये टेम्प्लेट अलग-अलग होंगे। spbsets या शायद grunt.js द्वारा इकट्ठी की गई। अभी के लिए हम सब कुछ एक फाइल में रखेंगे और स्क्रिप्ट टैग का उपयोग करेंगे।

सबसे पहले, एक एकल applicationटेम्पलेट जोड़ें :

<script type="text/x-handlebars" data-template-name="application">
  <div class="container">
    <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
    <p>{{message}}</p>
  </div>
</script>

चरण 3 - अपने एम्बर आवेदन को आरम्भ करें

बस App = Ember.Application.create({});ember.js को लोड करने और अपने एप्लिकेशन को इनिशियलाइज़ करने के साथ एक और स्क्रिप्ट ब्लॉक जोड़ें ।

<script type='text/javascript'>
  App = Ember.Application.create({});
</script>

बस आपको मूल एम्बर एप्लिकेशन बनाने की आवश्यकता है, लेकिन यह बहुत दिलचस्प नहीं है।

चरण 4: एक नियंत्रक जोड़ें

एम्बर नियंत्रक के संदर्भ में प्रत्येक हैंडलबार टेम्प्लेट का मूल्यांकन करता है। इसलिए applicationटेम्पलेट का मिलान होता है ApplicationController। यदि आप किसी को परिभाषित नहीं करते हैं, तो एम्बर बनाता है स्वचालित रूप से, लेकिन यहां एक संदेश संपत्ति जोड़ने के लिए इसे अनुकूलित करें।

<script type='text/javascript'>
App.ApplicationController = Ember.Controller.extend({
    message: 'This is the application template' 
});
</script>

चरण 5: मार्गों + अधिक नियंत्रकों और टेम्पलेट्स को परिभाषित करें

एम्बर राउटर किसी एप्लिकेशन में टेम्प्लेट / कंट्रोलर्स को संयोजित करना आसान बनाता है।

<script type='text/javascript'>
  App.Router.map(function() {
    this.route("index", { path: "/" });
    this.route("list", { path: "/list" });
  });

  App.IndexController = Ember.Controller.extend({
    message: 'Hello! See how index.hbs is evaluated in the context of IndexController' 
  });

  App.ListRoute = Ember.Route.extend({
    setupController: function(controller) {
      controller.set('content', ['angular.js', 'backbone.js', 'ember.js']);
    }
  });

</script>

इस काम को करने के लिए, हम एक {{outlet}}सहायक जोड़कर अपने एप्लिकेशन टेम्पलेट को संशोधित करते हैं । उपयोगकर्ता के मार्ग के आधार पर एम्बर राउटर उपयुक्त टेम्पलेट को आउटलेट में प्रस्तुत करेगा। हम {{linkTo}}नेविगेशन लिंक जोड़ने के लिए सहायक का भी उपयोग करेंगे ।

    <script type="text/x-handlebars" data-template-name="application">
      <div class="container">
          <h1>Ember.js is easy?<small> Minimum Viable Ember.js QuickStart Guide</small></h1>
        <p>{{message}}</p>
        <div class="row">
          {{#linkTo index class="span3 btn btn-large btn-block"}}Home{{/linkTo}}
          {{#linkTo list class="span3 btn btn-large btn-block"}}List{{/linkTo}}
        </div>
        {{outlet}}
      </div>
    </script>

    <script type="text/x-handlebars" data-template-name="list">
      <h3 class="demo-panel-title">This is the list template</h3>
      <ul>
      {{#each item in content}}
          <li>{{item}}</li>
      {{/each}}
       </ul>
    </script>

    <script type="text/x-handlebars" data-template-name="index">
      <h3 class="demo-panel-title">This is the index template</h3>
      <p>{{message}}</p>
    </script>

किया हुआ!

इस एप्लिकेशन का एक कार्यशील उदाहरण यहां उपलब्ध है

आप इस jsField को अपने खुद के एम्बर ऐप्स के लिए शुरुआती बिंदु के रूप में उपयोग कर सकते हैं

अगला कदम...

  • एम्बर गाइड पढ़ें
  • हो सकता है कि Peepcode screencast खरीदें
  • स्टैक ओवरफ्लो पर या एम्बर आईआरसी पर यहां प्रश्न पूछें

संदर्भ के लिए, मेरा मूल उत्तर:


मेरा प्रश्न किसी भी Ember.js विशेषज्ञ के लिए है, और निश्चित रूप से संबंधित ट्यूटोरियल लेखक: मुझे एक ट्यूटोरियल से डिजाइन पैटर्न का उपयोग कब करना चाहिए, और दूसरे से कब?

ये दो ट्यूटोरियल उस समय लिखे गए सर्वोत्तम प्रथाओं का प्रतिनिधित्व करते हैं। यह सुनिश्चित करने के लिए कि प्रत्येक से कुछ सीखा जा सकता है, दोनों दुख की बात है कि तारीख से बाहर हो जाते हैं क्योंकि ember.js बहुत तेज़ी से आगे बढ़ रहे हैं। दो में से, ट्रेक अधिक वर्तमान है।

प्रत्येक घटक व्यक्तिगत प्राथमिकताएं हैं, और मेरे ऐप के परिपक्व होने पर कौन से घटक आवश्यक साबित होंगे? यदि आप एक नया एम्बर एप्लिकेशन विकसित कर रहे हैं तो मैं कोड लैब दृष्टिकोण का पालन करने की सलाह नहीं दूंगा। यह उपयोगी होने के लिए बहुत पुराना है।

कोड लैब के डिजाइन में, एम्बर एप्लिकेशन के भीतर मौजूदा के करीब प्रतीत होता है (भले ही यह उसके कस्टम जेएस का 100% है), जबकि ट्रेक के आवेदन एम्बर के भीतर अधिक रहते हैं।

आपकी टिप्पणी धमाकेदार है कोडलैब कोर एम्बर घटकों का लाभ उठा रहा है और उन्हें वैश्विक दायरे से एक्सेस कर रहा है। जब यह (9 महीने पहले) लिखा गया था तो यह बहुत सामान्य था लेकिन आज एम्बर एप्लिकेशन लिखने के लिए सबसे अच्छा अभ्यास ट्रेक जो कर रहा था उसके बहुत करीब है।

उस ने कहा, यहां तक ​​कि ट्रेक का ट्यूटोरियल पुराना हो रहा है। घटक जो आवश्यक थे ApplicationViewऔर ApplicationControllerअब ढांचे द्वारा ही उत्पन्न किए गए हैं।

अब तक का सबसे मौजूदा संसाधन http://emberjs.com/guides/ पर प्रकाशित गाइडों का सेट है - वे पिछले कुछ हफ्तों में जमीन से लिखे गए हैं और एम्बर के नवीनतम (पूर्व-रिलीज़) संस्करण को दर्शाते हैं।

मैं यहां ट्रेक के वीआईपी प्रोजेक्ट को भी देखूंगा: https://github.com/trek/ember-todos-with-build-tools-tests-and-other-modern-convenience

संपादित करें :

@ sly7_7: मैं एम्बर-डेटा का उपयोग करके एक अन्य उदाहरण भी दूंगा, https://github.com/dgeb/ember_data_example


1
मैंने मूल रूप से कोड लैब को लोगों को एम्बर और एमवीसी फ्रेमवर्क पर रैंप पर लाने के लिए लिखा था, लेकिन दुर्भाग्य से, मेरे पास इसे रखने के लिए समय नहीं है, और ऐसा लगता है कि यह काफी बदल गया है कि अन्य लोगों ने बेहतर संसाधन बनाए हैं। व्यक्तिगत रूप से, मैंने अपनी अधिकांश परियोजनाओं के लिए कोणीय का उपयोग करने के लिए स्विच किया है, मुझे लगता है कि इसे कम जावास्क्रिप्ट की आवश्यकता है और अपने सिर को चारों ओर लपेटने के लिए थोड़ा आसान है। आपकी एमवीसी पसंद पूरी तरह से व्यक्तिगत है, इसलिए मुझे आप पर हावी न होने दें।
पेटेले

1
Emberjs.com/guides पर चला गया और जबकि स्पष्टीकरण बहुत अच्छी तरह से किया गया था, उदाहरण के रूप में चलाने के लिए पर्याप्त नहीं थे और संज्ञानात्मक आगे के संदर्भों से पीड़ित थे, जो किसी के लिए पूरी तरह से ताज़ा आने में परेशानी है। क्या वे अभी भी अपडेट किए जा रहे हैं, या क्या कोई मानार्थ संसाधन है?
वॉल्ट स्टोनबर्नर

1
यह सुनिश्चित करने के लिए कि वे अभी भी अपडेट किए जा रहे हैं। आज के रूप में शायद सबसे अच्छा तरीका है जल्दी से शुरू करने के लिए बाहर की जाँच कर रहा है peepcode screencast: peepcode.com/products/emberjs
माइक ग्रास्सोती

2
@MikeGrassotti क्या कोई तरीका है जिससे आप EmberJS के साथ आरंभ करने के लिए स्रोत कोड दिखाने के लिए अपना उत्तर संपादित कर सकते हैं? शायद एम्बरजेएस के साथ "हैलो वर्ल्ड" ऐप बनाने पर कदम से कदम निर्देश?
जॉर्ज स्टॉकर

2
@MikeGrassotti इस सवाल और जवाब को शामिल करने के लिए ember.js टैग विकी को अपडेट किया जाना चाहिए
MilkyWayJoe


4

मैं अत्यधिक Yeoman और इसके साथ अंगारे जनरेटर का उपयोग करने की सिफारिश करेंगे । बॉक्स से आपको उन सभी टूल मिलते हैं जिन्हें आपको विकसित करने, परीक्षण करने और उत्पादन के लिए ऐप तैयार करने की आवश्यकता होती है। एक अतिरिक्त बोनस के रूप में, आप अपने व्यू टेम्प्लेट को कई फाइलों में विभाजित करने में सक्षम होंगे और एक बुद्धिमान निर्देशिका संरचना के साथ शुरू कर सकते हैं जो आपको एक बनाए रखने योग्य कोडबेस बनाने में सुविधा प्रदान करेगा।

मैंने इसे लगभग 5 मिनट में उठने और चलने पर एक ट्यूटोरियल लिखा है। बस नोड स्थापित करें। Js और यहाँ साथ पालन करें



1

टट्स + प्रीमियम से लेट्स लर्न इमम्बर शीर्षक वाले इस मुफ्त ट्यूटोरियल के माध्यम से भी जाना । यह मुफ़्त है क्योंकि इसकी free coursesश्रृंखला से इसकी । यह पाठ्यक्रम, जैसा कि टट्स लोग इसे कहते हैं, को अध्याय का अनुसरण करने के लिए चौदह आसान में विभाजित किया गया है।

आशा है कि ये आपकी मदद करेगा।

सादर,


0

मैं चारकोल योमन दृष्टिकोण पसंद करता हूं। यह आपको बॉक्स से एक टन सामान देता है जिसमें शामिल हैं:

  • एक 'मॉड्यूल' दृष्टिकोण का उपयोग करके एक अच्छा फ़ोल्डर आर्किटेक्चर।
  • नपुंसक लिंग
  • लाइव पुनः लोड करें
  • छोटा करना
  • कुरूप कर देना
  • JSHint

और अधिक।

और इसकी स्थापना के लिए सुपर आसान है, बस एक नया मॉड्यूल जोड़ने के लिए yo charcoalफिर एक ऐप बनाने के लिए चलाएं yo charcoal:module myModule

अधिक जानकारी यहाँ: https://github.com/thomasboyt/charcoal


0

मैंने अभी एक स्टार्टर किट बनाया है, अगर आप Ember-Data के साथ Emblem टेम्पलेट इंजन के साथ नवीनतम EmberJS का उपयोग करना चाहते हैं। सभी बिचौलियों में लिपटे हुए हैं, इसलिए आप कॉफीस्क्रिप्ट के साथ विकसित कर सकते हैं। मेरे GitHub पर सब कुछ: http://goo.gl/a7kz6y



0

मैंने उन वीडियो की एक श्रृंखला बनाना शुरू कर दिया है, जो एम्बर से पहले शुरू होते हैं और वास्तविक दुनिया की चीजों के लिए गंभीर उपयोग के मामलों में एम्बर का उपयोग क्रोध में करने की दिशा में करते हैं।

यदि आप इस दिन की रोशनी को हिट करने में दिलचस्पी रखते हैं (अगर दिलचस्पी है तो अंततः इसे सार्वजनिक रूप से रखने से अधिक खुश हूं) आपको निश्चित रूप से मेरे द्वारा किए गए पोस्ट पर जाना चाहिए और "लाइक" (या यहां टिप्पणी करें), मेरा अनुमान):

http://discuss.emberjs.com/t/making-ember-easier-to-approach-aka-crazy-screencasts-videos-that-will-stick-in-your-mind-for-learning-ember/5284

मैं समुदाय को फलने-फूलने में मदद करने के लिए सुपर उत्सुक हूं, लेकिन लोगों को यह जानने में मदद करने के लिए कि मानक वेब साइटों को आसान तरीके से कैसे बनाया जाए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.