2015-12-13 9 views
14

मैं अपने MVC 6 पर कुछ d3js को चलाने के लिए कोशिश कर रहा हूँ और इस उदाहरण https://github.com/DustinEwers/D3-DotNetMVC-Demos/blob/master/D3Demos/Views/TagDemos/BasicBarChart.cshtml देख रहा था और यहक्या MVC में @ Scripts.Render के लिए प्रतिस्थापन 6

@Scripts.Render("~/bundles/d3") 
@section Scripts{ 

का उपयोग करता है लेकिन मैं

प्राप्त करता है, तो मुझे क्या करना है कि

नाम 'स्क्रिप्ट' वर्तमान संदर्भ

तो वहाँ MVC 6 में यह करने के लिए एक नया तरीका है में मौजूद नहीं है?

उत्तर

15

एएसपी.नेट 5 में, ऐसी कोई Scripts.Render विधि नहीं है। स्क्रिप्ट प्रस्तुत करने के लिए, आप पर्यावरण टैग सहायक का उपयोग कर सकते हैं।

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

यहां वाक्यविन्यास है, आप इसे अपनी लेआउट फ़ाइल में शामिल कर सकते हैं।

<environment names="Development"> 
    <script src="~/lib/jquery/dist/jquery.js"></script> 
    <script src="~/js/d3.js"></script> 
</environment> 
<environment names="Staging,Production"> 
    <script src="//ajax.aspnetcdn.com/ajax/jquery/jquery-2.1.4.min.js" 
      asp-fallback-src="~/lib/jquery/dist/jquery.min.js" 
      asp-fallback-test="window.jQuery"> 
    </script>    
    <script src="~/js/d3.min.js" asp-file-version="true"></script> 
</environment> 

मान लिया जाये कि आप स्क्रिप्ट फ़ाइलें d3.jsand d3.min.js~/js निर्देशिका में मौजूद है।

इसके अलावा, आप

public void Configure(IApplicationBuilder app, IHostingEnvironment env, 
                  ILoggerFactory loggerFactory) 
{ 
    //Other configuration goes here 
    app.UseStaticFiles(); // This enables static file serving from the app. 
    app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 
} 

UseStaticFiles() विस्तार विधि स्थिर js सहित फ़ाइलें, सीएसएस फ़ाइलें आदि की सेवा फ़ाइल के लिए सक्षम बनाता है कि आप (अंदर Startup.cs) Configure() विधि के अंदर UseStaticFiles() विधि लागू है सुनिश्चित करने की आवश्यकता ..

जब आप विकास मोड में एप्लिकेशन चलाते हैं, तो यह स्क्रिप्ट टैग को पर्यावरण के अंदर "Development" प्रस्तुत करेगा और जब आप इसे स्टेजिंग या प्रोडक्शन में चलाएंगे, तो यह स्क्रिप्ट टैग को प्रस्तुत करेगा "Staging,Production" पर्यावरण।

आप परियोजना पर राइट क्लिक करके पर्यावरण मूल्य बदल सकते हैं और properties->Debug का चयन करें और पर्यावरण चर का मान निर्दिष्ट कर सकते हैं Hosting:Environment

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

यदि आपके पास पहले से ही एक छोटा संस्करण नहीं है, तो आप इसे छोटा करने के लिए गल्प कार्य चलाकर उत्पन्न कर सकते हैं। (यह डिफ़ॉल्ट gulp.js फ़ाइल में शामिल है जो नए वेब ऐप टेम्पलेट में है)। आपको बस कार्य धावक खोलने और खनन कार्य चलाने की आवश्यकता है।

enter image description here

आप मैन्युअल रूप से यह हर बार चलाने के लिए नहीं करना चाहते हैं, आप Bindings -> Before build ताकि यह स्वचालित रूप से आप अपने प्रोजेक्ट का निर्माण कि purticular घूंट कार्य हर चलेंगे चुन सकते हैं।

+1

बहुत बढ़िया उत्तर btw :) –

+0

ऐसा लगता है कि माइक्रोसॉफ्ट कम से कम डिफ़ॉल्ट रूप से गुलप से दूर चले गए हैं। टेम्पलेट प्रोजेक्ट अब 'BundlerMinifier.Core' टूल पर भरोसा करते हैं, जैसा कि https://docs.microsoft.com/en-us/aspnet/core/migration/mvc –

0

आप सिर्फ इतना है कि स्क्रिप्ट चलाने के लिए wan't, बस एक एचटीएमएल स्क्रिप्ट टैग बनाएँ:

<script src="js/d3.js?version=1"></script> 

लेकिन मैं वास्तव में सुझाव है कि आप बंडल और अपने परिसंपत्ति फ़ाइलें कम करें। Gulp और ग्रंट जैसे कार्यकर्ताओं की सहायता से आप अपनी जावास्क्रिप्ट/सीएसएस फ़ाइलों को बंडल, छोटा करें, स्थानांतरित करें (और बहुत कुछ) कर सकते हैं। कैसे घूंट का उपयोग करने पर

सूचना यहां पाया जा सकता: http://rudiv.se/Article/asp-net-5-bundling-with-bower-and-gulp

और फिर Shyju पद भार सही फ़ाइलों की मदद से जब आप अपने विकास या स्टेजिंग वातावरण चलाते हैं।

+1

में वर्णित है यूआरएल शॉर्टनर्स का उपयोग न करें, वे सिर्फ एक और हैं एक श्रृंखला में लिंक जो टूट सकता है। – DavidG

+0

जानकारी के लिए धन्यवाद डेविड जी –

+1

@StefanKarlsson लिंक अब और काम नहीं करता – MaLiN2223

2

अब यह थोड़ा और अधिक जटिल है, लेकिन documentation काफी अच्छी तरह से यह बताते हैं:

ASP.NET MVC 5 स्टार्टर वेब का उपयोग टेम्पलेट ASP.NET के अंतर्निहित bundling के लिए समर्थन करते हैं। ASP.NET MVC 6 में, इस कार्यक्षमता बेहतर ग्राहक चरणों का निर्माण का उपयोग कर ...

तो लिपियों बंडल के लिए एक साथ आप gulp-concat जैसे किसी उपकरण का उपयोग कर सकते हैं किया जाता है। और एक स्क्रिप्ट शामिल करने के लिए, बस इसे जिस तरह से आप चाहते हैं में जोड़ने अगर यह स्थिर सामग्री थे:

<script src="~/lib/bundle.js"></script> 

सामग्री सहित के अधिक पूर्ण उदाहरण के लिए, @Shyju द्वारा जवाब उत्कृष्ट है।

+1

यह पूरी तरह से जवाब नहीं देता है कि मिनीफाइड फ़ाइलों को स्वचालित रूप से कैसे देखें! जैसा कि मैंने इसे अभी देखा है, हमें प्रत्येक फ़ाइल को अलग से निर्दिष्ट करना होगा। – Maxim

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