2016-01-04 10 views
7

मेरा प्रश्न इस परियोजना में सामने और पीछे एक साथ व्यवस्थित करने के बारे में है। जहाँ तक मुझे पता है, वहाँ इस तरह के काम करते हैं करने के लिए दो तरीके हैंप्ले फ्रेमवर्क और कोणीय 2 को कैसे गठबंधन करें?

  1. समूह सामने और वेब जार निर्भरता और एसबीटी प्लग इन का उपयोग एक परियोजना में वापस आ गया। तो एसबीटी
  2. अलग आगे और पीछे uglify, concat, compilation (typescriptjavascript करने के लिए) की तरह सभी आवश्यक कार्यों के चलेंगे ... और उन्हें अलग से तैनात। इस मामले में बैक एंड को हेडर Access-Control-Allow-Origin जोड़ना होगा। इस तरह सामने और पीछे 2 अलग-अलग मेजबानों में तैनात किया जा सकता है। और उपयोग करने के लिए उपकरण एनपीएम और गल्प/ग्रंट
  3. 1 और 2 का मिश्रण होगा। फिर भी सामने और पीछे के लिए एक ही भंडार का उपयोग करें, लेकिन फ्रंट बाहरी उपकरणों जैसे एनपीएम, बॉवर और गल्प/grunt

इस समय, विकल्प 2 और 3 के लिए बहुत सारे दस्तावेज़ नहीं हैं। इसके अलावा typescript प्लगइन अभी तक तैयार नहीं है।

स्कैला प्ले + कोणीय 2 विकास के लिए कौन सा तरीका बेहतर है?

+2

मेरा विजेता नहीं है। 1 - इस तरह आप अन्य ढांचे से विशेषज्ञ के लिए आवश्यकता को कम करते हैं, भले ही आप मल्टी-डोमेन स्टैक और/या अलग-अलग ऐप्स में काम करना चाहते हों, फिर भी आप रिवर्स प्रॉक्सीइंग/मल्टीडोमेन/लोड बैलेंसिंग के लिए कुछ हल्के HTTP सर्वर जैसे कुछ समाधानों का उपयोग कर सकते हैं .. आपका प्रश्न राय आधारित है, इसलिए मेरा जवाब केवल राय ही हो सकता है :) – biesior

+1

धन्यवाद, लेकिन क्या आप कोणीय 2 और टाइपस्क्रिप्ट के साथ ऐसा करने के लिए कुछ ट्यूटोरियल जानते हैं। मैंने जिथब पर कुछ प्रोजेक्ट देखा लेकिन इस समय अपरिपक्व लगता है – nam

+2

जैसा कि @biesियोर ने उल्लेख किया है, यह माना जाता है कि, मैं एक के लिए, इसे 2 ऐप्स में विभाजित करना पसंद नहीं करता, मुझे प्रॉक्सी सेटिंग्स के लिए गड़बड़/गल्प कॉन्फ़िगरेशन से नफरत है। जैज़ के सभी हैंडल को चलाएं, यह भी लाभ है कि आपको किसी भी कोर सेटिंग्स को कॉन्फ़िगर करने की आवश्यकता नहीं है। मैंने जो भी किया: मैं वेबजर्स का उपयोग नहीं करता लेकिन बोवर/एनपीएम, वे/सार्वजनिक फ़ोल्डर में स्थित हैं। मैं कोणीय के लिए एक प्रविष्टि बिंदु परिभाषित करता हूं, उदाहरण के लिए: कोणीय पर वहां से 'स्वागत/स्वागत' रूटिंग लेता है। आप इस [प्रश्न] को देखना चाहेंगे (http://stackoverflow.com/questions/16085544/play-framework-2-1-angularjs-routing-best-solution) –

उत्तर

9

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

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

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

विकल्प # 3 यही वह है जिसे हम उपयोग कर रहे हैं। एसबीटी के साथ यह संभव और सुविधाजनक है। SbtWeb प्लगइन आपको playRunHooks पर सेट करने की अनुमति देता है जो आप अपनी परियोजना के साथ चलाने के लिए चाहते हैं।

playRunHooks += { 
    Process(Seq("npm", "install"), file(portal)).lines.foreach(println) 
    RunSubProcess(portal, "npm", "run", "watch") 
} 

RunSubProcess पाया जा सकता है here: विचार के लिए JavaScript का निर्माण उपकरण है जो सभी आवश्यक हो, दृश्यपटल नौकरियों क्या करेंगे, फ़े चलाने के लिए है।

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

नमूना प्रोजेक्ट के रूप में आप एक्टिवेटर टेम्पलेट Play Framework with Angular 2 and Webpack 2 को देखना चाहेंगे और यह प्रोजेक्ट गिटहब: play-ng2-webpack2 पर होस्ट किया गया है। इससे मुझे थोड़ा सा मदद मिली।

अब xsbt-web-plugin और विकास मोड के साथ टोमकैट का उपयोग करना भी संभव है। दर्शन समान है।

आशा है कि आप अपना रास्ता ढूंढें :)।

+0

एसबीटी प्लगइन के रूप में विकल्प # 3 जारी करने की कोई योजना देखें? –

संबंधित मुद्दे