2013-12-16 8 views
12

मैं रेल संपत्ति परिसंपत्ति पाइपलाइन के साथ कुछ लागू करने की कोशिश कर रहा हूं जो मुझे उम्मीद से ज्यादा कठिन साबित कर रहा है।ईएस 6 मॉड्यूल के साथ रेल संपत्ति परिसंपत्ति पाइपलाइन और

ऐप को साफ-सुथरा बनाने के लिए, मैं जावास्क्रिप्ट के लिए मॉड्यूल सिस्टम का उपयोग करने की योजना बना रहा हूं। इसके लिए मैं कॉमनजेएस मॉड्यूल का उपयोग करना चाहता हूं, लेकिन भविष्य में संगतता के लिए मैं उन्हें नए ES6 वाक्यविन्यास का उपयोग करके लिखना चाहता हूं।

मुझे संपत्ति पाइपलाइन के लिए ES6 मॉड्यूल ट्रांसपरर एक्सटेंशन मिला है, जो अच्छी तरह से काम करता है, लेकिन यह केवल इसे सामान्यजेएस प्रारूप में परिवर्तित करता है। मुझे अभी भी जेएस में यह प्राप्त करने की ज़रूरत है कि ब्राउज़र समझता है। इसके लिए मैं ब्राउजरिफ़ाई का उपयोग कर देख रहा हूं लेकिन मेरी समस्या इन 2 के संयोजन में निहित है।

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

क्या इसके आसपास कोई तरीका है?

उत्तर

5

मेरी सिफारिश browserify-rails मणि का उपयोग करना है। ईएस 6 के लिए, आप transform का उपयोग करेंगे जैसे कि: https://github.com/thlorenz/es6ify

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

+0

हे। मुझे पहले से ही संपत्ति पाइपलाइन के माध्यम से ब्राउज़र को चलाने के लिए मिल गया है और यह बहुत अच्छी तरह से काम करता है। मेरा एकमात्र मुद्दा यह है कि मुझे ऐसा लगता है कि अन्य स्पॉकेट प्रोसेसर ने फ़ाइल को संसाधित नहीं किया है (जैसे कि एआरबी या मेरे मामले में, ईएस 6) और फिर उस आउटपुट को ब्राउजरिफाइज़ करने की प्रक्रिया है। – PaReeOhNos

+0

@PaReeOhNos क्या आपके पास कुछ कोड है? शायद उदाहरण गिट रेपो? मुझे वह समस्या नहीं है लेकिन मेरा उपयोग केस बहुत सरल है - बस .js फ़ाइलें। मैं पूछूंगा कि आप जावास्क्रिप्ट को एआरबी में क्यों डाल रहे हैं? ES6 पर निश्चित नहीं है (उदाहरण देखना चाहते हैं)। मैं ब्राउज़र-रेल पर काम कर रहा हूं - यह और ब्राउज़र को निश्चित रूप से अभी भी कुछ दर्द बिंदु हैं। – Cymen

+1

मैं विशेष रूप से एक उदाहरण के रूप में, ईआरबी का उपयोग करके इतना ज्यादा नहीं कर रहा हूं। लेकिन ईएस 6 एक्सटेंशन उसी तरह काम करता है। यानी आप फ़ाइलों को एक es6.js एक्सटेंशन देते हैं। मेरी समस्या यह है कि ब्राउज़र ब्राउज़र सभी जावास्क्रिप्ट फ़ाइलों पर काम करता है, हालांकि मेरी सभी फाइलें ईएस 6 प्रारूप में थीं, इसलिए मुझे ES6 प्रोसेसर द्वारा संसाधित किए जाने के बाद स्रोत पर ब्राउज़र को चलाने की आवश्यकता थी। मैंने बाद में ES6 को छोड़ दिया है क्योंकि मुझे एक साफ समाधान नहीं मिला क्योंकि मैं इसे पूरी तरह से संपत्ति पाइपलाइन – PaReeOhNos

7

आप Seth Vincent's दृष्टिकोण को आजमा सकते हैं, जहां वह सभी जावास्क्रिप्ट कार्यों को चलाने के लिए package.json, और npm स्क्रिप्ट का उपयोग करता है, और केवल संपत्ति पाइपलाइन में bundle.js का उपयोग करता है। फिर आप अपने रेकैकाइल से एनपीएम कार्यों को खोल सकते हैं। मुझे उनके दृष्टिकोण पसंद हैं क्योंकि यह जेएस कार्यों के लिए आधुनिक जेएस उपकरण श्रृंखला खोलता है।

+0

एक अच्छा दृष्टिकोण की तरह लग रहा है। मैं एक नज़र डालेगा :) – PaReeOhNos

+2

इसके साथ बदसूरत हिस्सों को आपको 3 फाइलें (स्पॉकेट्स के लिए 1, कॉमनजेएस के लिए 1 और 1 'ब्राउज़र' उर्फ ​​'बंडल' के आउटपुट के आउटपुट के लिए 1) की आवश्यकता है और फिर आपको जेनरेट बंडल की जांच करने की भी आवश्यकता है स्रोत कोड में या रेल को शुरू करने के सभी तरीकों को कवर करने के लिए सुनिश्चित करें कि बंडल जेनरेट हो जाता है ... भले ही आप इसे ठीक करते हैं, फिर भी आपके पास दो फाइलें हैं। भयानक नहीं है और मुझे RoR से अलग होने की तरह लगता है लेकिन कुछ सोचने के लिए। – Cymen

+0

तीन फाइलें और एनपीएम ऑर्डर-आधारित ऑपरेशंस और क्लंकी स्पॉकेट्स पर हमेशा जीत जाएंगी। – cnp

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