2009-12-22 13 views
7

हमारे पास कुछ मुट्ठी भर एएसपीनेट पेज हैं जिनमें उस पृष्ठ के लिए विशिष्ट जावास्क्रिप्ट की 50 से अधिक पंक्तियां शामिल हैं। हम अपने क्रूज़ कंट्रोल बिल्ड प्रक्रिया के दौरान उस जावास्क्रिप्ट को छोटा करना चाहते हैं।ASP.net के निर्माण के दौरान इनलाइन जावास्क्रिप्ट को छोटा करें?

हम पहले से ही हमारे पूर्ण जावास्क्रिप्ट और सीएसएस फ़ाइलों को संपीड़ित करने के लिए वाईयूआई कंप्रेसर का उपयोग करते हैं। लेकिन हम इनलाइन जावास्क्रिप्ट को कैसे करना है, यह नहीं समझ सकते हैं।

क्या एएसपीनेट पृष्ठों के माध्यम से स्पिन करने और जावास्क्रिप्ट को कम करने के लिए कोई एमएसबिल्ड कार्य है?

उत्तर

4

एक दिलचस्प ब्लॉग और NuGet पैकेज इस

http://weblogs.asp.net/imranbaloch/archive/2012/07/25/bundling-and-minifying-inline-css-and-js.aspx

+0

हाय दोस्त, इस इनलाइन स्क्रिप्ट minifier मेरी विजेट टेम्पलेट बाहर खिलवाड़ कर रहा है। यह

1

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

आप MbCompression भी जांचना चाहेंगे जो आपके एएसपीनेट पृष्ठों सहित बहुत से संपीड़ित हो सकता है, हालांकि मुझे विश्वास नहीं है कि यह इनलाइन जावास्क्रिप्ट को भी कम करता है।

2

मैं जावास्क्रिप्ट को विधियों में निकाल दूंगा और उन्हें .js फ़ाइलों में ले जाउंगा। और पृष्ठों के प्रासंगिक पैरामीटर के बजाय कार्यों को कॉल करें। एक जटिल प्रक्रिया नहीं है और बनाए रखने के लिए बहुत आसान है (कम कोड)। आप क्लाइंट साइड कंटेंट कैशिंग से भी लाभ उठा सकते हैं।


यह भी सुनिश्चित नहीं है कि यह मदद करता है लेकिन Google का क्लोजर वास्तव में अच्छा दिखता है।

http://code.google.com/closure/

संपीड़न विकल्प: http://code.google.com/closure/compiler/docs/api-tutorial3.html

जावा निष्पादन योग्य या वेब सेवा के रूप में उपलब्ध है।

0

यह बंडल करने के लिए संभव है और कम करें इनलाइन जावास्क्रिप्ट है संभाल करने के लिए कहा जाता है undleMinifyInlineJsCss नहीं है।

public static MvcHtmlString AddScriptSource(this HtmlHelper helper, Func<dynamic, HelperResult> source, string key) 
{ 
    string scriptSource = source(null).ToHtmlString(); 

    // Cache scriptSource here 

    return MvcHtmlString.Empty; 
} 

जो तुम इस तरह का प्रयोग करेंगे::

@Html.AddScriptSource(@<text>$(document).ready(function() { $('h1').text('The current controller is @ViewContext.RouteData.Values["controller"].ToString()'); });</text>, "test") 

मैं कम से कुछ सप्ताह पहले एक बंडलर और इस के आसपास minifier बनाया टेम्प्लेट की उस्तरा सहायकों के साथ आप नीचे एक की तरह एक विस्तार विधि बना सकते हैं:

https://github.com/philpeace/CodePeace.StrawberryJam

0

ASP.NET अब bundling गया है और minification MVC 4 के रूप में में बनाया गया है (यह भी रूप में अच्छी तरह से वेब फ़ॉर्म और वेब पृष्ठों के लिए उपलब्ध है)

http://www.asp.net/mvc/tutorials/mvc-4/bundling-and-minification

+3

यह केवल पृष्ठ के बाहरी स्क्रिप्ट को छोटा कर देगा, इनलाइन के रूप में इनलाइन की आवश्यकता नहीं है – azog

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