2010-07-21 15 views
5

आप में से कई जानते हैं कि, अधिकांश jQuery (या उस मामले के लिए जावास्क्रिप्ट, उस प्लगइन) प्लग इन जिन्हें आप इन दिनों पाते हैं, नियमित रूप से स्वरूपित कोड, मिनी संस्करण या दोनों के रूप में डाउनलोड किए जा सकते हैं। विकास उद्देश्यों के लिए, मैं प्लगइन के गैर-minified संस्करणों का उपयोग करना पसंद करता हूं, अगर मुझे फ़ायरबग ब्रेकपॉइंट सेट करने की आवश्यकता है या किसी भी कारण से इसे देखना है।क्या मुझे विकास और तैनाती के दौरान jQuery प्लगइन के minified या नियमित संस्करणों का उपयोग करना चाहिए?

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

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

धन्यवाद।

+0

आप एक ही फ़ाइल नाम का उपयोग कर सकते हैं, और आपके विकास पर्यावरण पर केवल गैर-मिनट संस्करण हैं ... – Fosco

उत्तर

4

मैं हमेशा 3 वें पार्टी जेएस के minified संस्करणों का उपयोग करता हूं जब तक कि मुझे विशेष रूप से इसे देखने की आवश्यकता न हो ... किसी भी मामले में, आप एक HTML सहायक लिख सकते हैं जो कुछ कॉन्फ़िगरेशन के आधार पर सही स्क्रिप्ट नाम डालता है (हो सकता है डिबग विज्ञप्ति) बनाम ...

आप की तरह कुछ के साथ खत्म हो जाएगा:

<%= Html.IncludeJQuery() %> 

या यदि आपके सभी स्क्रिप्ट एक ही व्यवहार का पालन (minified संस्करण के लिए .min.js) एक सहायक है कि सम्मिलित करना आपके द्वारा पारित स्क्रिप्ट पर '.min' है जब रिलीज में

<%= Html.IncludeCorrectVersionOfScript("jquery-1.4.2.js") %> 

अद्यतन:

एचटीएमएल सहायकों, MVC के HtmlHelper वर्ग के लिए विस्तार तरीकों कि आप ActionLink, BeginForm, EditorFor, आदि फेंकना आप मूल रूप से एक नई पद्धति देते हैं (यद्यपि केवल स्थिर) उस वस्तु का उपयोग कर सकते हैं ताकि आप Html.MyMethod कर सकते हैं .... इस के लिए एक सहायक होगा कुछ की तरह:

public static class ScriptIncludeHelper 
{ 
    public static MvcHtmlString IncludeCorrectVersionOfScript(this HtmlHelper html, string script) 
    { 
     if (!html.ViewContext.HttpContext.IsDebuggingEnabled) 
      script = script.Replace(".js", ".min.js"); 
     var tag = string.Format("<script type=\"text/javascript\" src=\"{0}\"></script>", script); 

     return MvcHtmlString.Create(tag); 
    } 
} 

ध्यान दें कि यह बहुत सरलीकृत संस्करण (। स्ट्रिंग का कोई सत्यापन, etc.etc.etc) है

अब आप IsDebuggingEnabled या कॉन्फ़िगरेशन का उपयोग कर सकते हैं अपने web.config या एक स्थिर विन्यास में पर अगर आप डिबग संस्करण की कम से कम संस्करण शामिल करना चाहते हैं परिभाषित करने के लिए ...

हॉप इस मदद करता है

+0

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

1

यह की कैसे रेल यह संभालती एक उदाहरण है। यह एक सर्वोत्तम अभ्यास हो सकता है या नहीं भी हो सकता है, लेकिन डेवलपर से लोड को पूरी तरह खत्म कर देता है।

एक config प्रत्येक परिवेश के लिए सेटिंग्स युक्त फ़ाइल:

# resources.yml 
# example config file 

development: 
    jquery_url: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js 

test: 
    jquery_url: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 

production: 
    jquery_url: http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js 

एक चर है कि आवेदन स्टार्टअप पर हर जगह संदर्भित हो जाता है में वर्तमान परिवेश के आधार पर संसाधनों पार्स।

RESOURCES = YAML::parse('resources.yml')[CURRENT_ENVIRONMENT] 

फिर प्रत्येक दृश्य या पृष्ठ को अपनी सेटिंग्स निर्दिष्ट करने के बजाय, सभी पृष्ठों में शामिल आधार लेआउट या टेम्पलेट का उपयोग करें।<%= yield %> इंगित करता है कि बच्चे के विचार या पृष्ठों से उत्पादन वहां जाता है। CURRENT_ENVIRONMENT (विकास, परीक्षण या उत्पादन) सब कुछ को गति प्रदान करने -

# application.html.erb 

<!DOCTYPE html> 
<html 
<head> 
    <script src="<%= RESOURCES['jquery_url'] %>"</script> 
</head> 
<body> <% yield %> </body> 
</html> 

तो फिर तुम बस एक कुंजी बदलना होगा। यह एपीआई कुंजी और अन्य सभी प्रकार की निर्भरताओं के लिए भी उपयोगी है जो पहले से ही करते हैं या पर्यावरण के बीच संभावित रूप से बदल सकते हैं।

+0

प्रश्न को asp.net-mvc टैग किया गया है ... यह रेल के साथ कैसे जुड़ा हुआ है? – serhio