क्यों @ लिपियों का उपयोग करें। रेंडर ("~ / बंडलों / jquery")


217

कैसे

@Scripts.Render("~/bundles/jquery")

html से स्क्रिप्ट को इस तरह संदर्भित करने से अलग

<script src="~/bundles/jquery.js" type="text/javascript"></script>

क्या कोई प्रदर्शन लाभ हैं?


मैं टाइप कैसे जोड़ूँ = "टेक्स्ट / सीएसएस" - stackoverflow.com/questions/15662096/…
LCJ

जवाबों:


288

बंडलिंग एक पृष्ठ लोड करने के लिए बैंडविथ और अनुरोधों की संख्या को बचाने के लिए एक एकल फ़ाइल में बिना किसी स्वरूपण के (कई रूप में निर्दिष्ट) के रूप में कई जावास्क्रिप्ट या स्टाइलशीट फ़ाइलों को संपीड़ित करने के बारे में है।

उदाहरण के रूप में आप अपनी खुद की बंडल बना सकते हैं:

bundles.Add(New ScriptBundle("~/bundles/mybundle").Include(
            "~/Resources/Core/Javascripts/jquery-1.7.1.min.js",
            "~/Resources/Core/Javascripts/jquery-ui-1.8.16.min.js",
            "~/Resources/Core/Javascripts/jquery.validate.min.js",
            "~/Resources/Core/Javascripts/jquery.validate.unobtrusive.min.js",
            "~/Resources/Core/Javascripts/jquery.unobtrusive-ajax.min.js",
            "~/Resources/Core/Javascripts/jquery-ui-timepicker-addon.js"))

और इसे इस तरह से प्रस्तुत करें:

@Scripts.Render("~/bundles/mybundle")

@Scripts.Render("~/bundles/mybundle")मूल निवासी <script src="~/bundles/mybundle" />का एक और लाभ यह है कि डीबग सेटिंग का @Scripts.Render()सम्मान करेगा web.config:

  <system.web>
    <compilation debug="true|false" />

यदि debug="true"इसके बाद यह प्रत्येक स्रोत स्क्रिप्ट के लिए अलग-अलग स्क्रिप्ट टैग प्रस्तुत करेगा, बिना किसी संशोधन के।

स्टाइलशीट के लिए आपको एक स्टाइलबंडल और @ स्टाइल्स.रेंडर () का उपयोग करना होगा।

एकल स्क्रिप्ट (स्क्रिप्ट या लिंक टैग के साथ) प्रत्येक स्क्रिप्ट या शैली को लोड करने के बजाय, सभी फाइलें एक एकल जावास्क्रिप्ट या स्टाइलशीट फ़ाइल में संकुचित होती हैं और एक साथ लोड होती हैं।


9
बस सोच रहा था: क्या उस बंडल के लिए कहीं एक फ़ाइल संग्रहीत है या यह सिर्फ स्मृति में मौजूद है?
इलियट

15
यह कैश में संग्रहीत है।
NicoJuicy

4
यदि CDN उपलब्ध नहीं है, तो यह स्वतः ही CDN का उपयोग करने और स्थानीय स्क्रिप्ट में कमबैक के लिए सेट किया जा सकता है। यह बहुत चालाक है।
दान एस्पेरज़ा

39
ऐसा करने का एक अतिरिक्त लाभ है। डिबगिंग करते समय, Scripts.Render प्रत्येक फाइल को अनबंडल्ड आउटपुट करेगा, जो स्थानीय विकास को एक दर्द से बहुत कम करता है, लेकिन एक जीवित वातावरण में, यह बंडल / मिनिफ़ाइड परिणाम का उत्पादन करेगा, जो ऊपर वर्णित अनुसार प्रदर्शन लाभ प्राप्त कर सकता है, लेकिन बिना किसी भी कोड को बदलना।
सेथक्रान

9
MVC4 (विज़ुअल स्टूडियो) के "बुनियादी" टेम्पलेट में, बंडल "बंडलकॉन्फ़िग्स" (App_Start फ़ोल्डर) में तैयार किए जाते हैं।
अपोलो

51

आप भी उपयोग कर सकते हैं:

@Scripts.RenderFormat("<script type=\"text/javascript\" src=\"{0}\"></script>", "~/bundles/mybundle")

परिदृश्य में अपने आउटपुट के प्रारूप को निर्दिष्ट करने के लिए जहां आपको चारसेट, टाइप आदि का उपयोग करने की आवश्यकता होती है।


3
आवश्यकता वाले मॉड्यूल को लोड करने के लिए भी बहुत उपयोगी है
फिल

13
... या asyncविशेषता जोड़ने के लिए।
क्रिस्टोफ फिंक

7
@Scripts.RenderFormat("<script type=\"text/javascript\" async src=\"{0}\"></script>", "~/bundles/mybundle")
रॉबर्ट मैककी

1
... या क्रॉसोरिजिन = "अनाम" विशेषता जोड़ने के लिए
अलेक्जेंड्रे स्विकोलो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.