2011-11-23 16 views
16

मैं एक शौक ऐप पर काम कर रहा हूं और कुछ jQuery का उपयोग कर रहा हूं। परिणाम फिलहाल ठीक हैं, लेकिन मैं एक jQuery नोब हूं और मुझे लगता है कि कुछ महत्वपूर्ण सुधार हैं जो मैं कोड संरचना में कर सकता हूं। इस पल के लिए कॉफ़ेस्क्रिप्ट को अलग करना, एक बात जो मैं सोच रहा हूं वह है कि संपत्ति पाइपलाइन में मॉडल-विशिष्ट .js फ़ाइलों का सही तरीके से उपयोग कैसे करें।रेल 3.1 में संपत्ति के साथ ठीक से काम कैसे करें 3.1 संपत्ति पाइपलाइन?

उदाहरण के लिए, मेरे उपयोगकर्ता मॉडल के साथ काम करते समय, मेरे पास कुछ कोड हो सकता है जिसे मैं तैयार करना चाहता हूं जब दस्तावेज़ तैयार हो। मान लीजिए कि मैंने इसे $(document).ready(function() {...}); में users.js फ़ाइल में रेल 3.1 द्वारा उत्पन्न किया है।

अगले दिन, मैं पालतू मॉडल के साथ काम कर रहा हूं और मेरे पास कोड है जिसे मैं दस्तावेज़ के साथ चलाने के लिए तैयार हूं। मैंने इसे में pets.js फ़ाइल के अंदर रखा है जो रेल तैयार करता है।

  1. कि जब कैसे संकलित एप्लिकेशन रन करता है:

    यहाँ जहां मेरे सवालों का उठता है?

  2. क्या मैं ऊपर दिए गए उदाहरण के साथ दो jQuery उदाहरणों को तुरंत चालू कर रहा हूं?
  3. क्या मुझे ऐप में केवल एक बार $(document).ready(function() {...}); का उपयोग करना चाहिए या रेल मेरे कोड को एक कॉल में संकलित करता है?
  4. मॉडल-विशिष्ट .js फ़ाइलों में क्या है?
  5. क्या विकास और उत्पादन मोड में यह निष्पादन के बीच अंतर है?

उत्तर

12

1) संकलन: रेल संपत्तियों की पाइपलाइन सिर्फ सभी जावास्क्रिप्ट फ़ाइलों को एक बड़ी फ़ाइल में जोड़ती है।

2) jQuery केवल एक बार भरी हुई है, आप कई $(document).ready कार्यों कर रहे हैं, लेकिन यह एक समस्या नहीं है

3) रेल कॉल के साथ कुछ भी नहीं होता है, और jQuery सुरक्षित रूप से प्रति उन ब्लॉकों के अधिक संभाल कर सकते हैं पृष्ठ।

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

5) विकास में संपत्ति प्रत्येक अनुरोध पर संकलित की जाती है, उत्पादन में यह केवल एक बार किया जाता है। इसके अलावा उत्पादन में इसे छोटा और संपीड़ित किया जा सकता है।

उम्मीद है कि इससे मदद मिलती है।

3

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

आप 2 उदाहरणों को तत्काल नहीं कर रहे हैं क्योंकि jQuery केवल एक बार लोड होता है, फिर संदर्भित किया जाता है। $ (दस्तावेज़) .ready() कॉल केवल एक समारोह है, और कुछ भी नहीं।

मॉडल-विशिष्ट jquery फ़ाइलों का उपयोग रेल ऐप में अजाक्स के संयोजन के साथ किया जा सकता है। तो आपके पास 'create.js.erb' जैसी फ़ाइलें हो सकती हैं जो वास्तव में एक जावास्क्रिप्ट फ़ाइल है जिसे आप रेल क्रियाओं को पार कर सकते हैं। यदि आप पोस्ट बनाने/हटाने के बाद कुछ विशिष्ट कोड को आग लगाना चाहते हैं तो आप ऐसा करने के लिए इस तरह की फाइलों का उपयोग कर सकते हैं, आपको बस अपने रेल नियंत्रक में जावास्क्रिप्ट का जवाब देना होगा - लेकिन यह थोड़ा गहरा हो रहा है जिसका मतलब है कि आप ऊपर अपने प्रश्न की लग रही है।

याद रखने की मुख्य बात यह है कि jquery सिर्फ जावास्क्रिप्ट है और जावास्क्रिप्ट ब्राउज़र द्वारा चलाया जाता है - किसी भी गतिशील एकीकरण के बिना फ्रंट एंड पर, हमेशा क्लाइंट पक्ष पर चलता है और jquery मुख्य रूप से डोम मैनिपुलेशन के लिए शानदार है।

उम्मीद है कि कुछ सामान साफ़ हो जाएगा!

+0

अतिरिक्त जानकारी के लिए धन्यवाद। – Clay

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