2016-09-27 9 views
6

मैं अपने आवेदन aspnetcore-स्पा प्रतिक्रिया-redux बॉयलरप्लेट (http://blog.stevensanderson.com/2016/05/02/angular2-react-knockout-apps-on-aspnet-core/ पर देखा जा सकता)एएसपीनेटकोर-स्पा एप्लिकेशन पर सर्वर साइड रेंडरिंग को अक्षम कैसे करें?

हालांकि सर्वर साइड प्रतिपादन बहुत समय (~ 30 सेकंड) लेता है और मैं इसे अक्षम करना चाहते हैं का उपयोग कर निर्माण कर रहा हूँ। क्या आप कृपया मुझे बता सकते हैं कि कोड को तोड़ने के बिना सर्वर साइड प्रतिपादन को कैसे अक्षम किया जाए?

+1

आप सुनिश्चित करें कि सर्वर तरफा प्रतिपादन सक्रिय है? फ़ायरफ़ॉक्स में F12 दबाएं और नेटवर्क टैब पर जाएं और फ़ाइलों को डाउनलोडेड देखें। ध्वनि सर्वर पक्षीय प्रतिपादन अधिक की तरह सक्षम नहीं है और अपने कोणीय ऐप्लिकेशन डाउनलोड की जो सर्वर है, जो चारों ओर 30-60 सेकंड लेता है के लिए भेजा 400-800 अनुरोधों में जो परिणाम हर एक फ़ाइल (बंडलों के बजाय),। एएसपी.नेट कोर से फ़ाइलों को भी लाने में काफी धीमी गति होती है, जब डीबगर सक्षम होता है तो इसमें और भी समय लगता है। हो सकता है कि यहां – Tseng

+0

धन्यवाद अपने 'System.config.js' फ़ाइल पोस्ट @Tseng, मैं सिर्फ पहली अनुरोध कब से webpack ~ 16 सेकंड में बंडल उत्पन्न करता है लेता है एहसास हुआ रिलीज मोड पर अपने आवेदन भाग गया। उसके बाद यह तेजी से चलता है। मैं – Hasan

उत्तर

17

वह टेम्पलेट asp-prerender-module टैग सहायक को <div id="react-app"...> टैग Home\Index.cshtml में टैग करता है। यदि आप उस टैग सहायक को हटाते हैं तो आप सर्वर साइड प्रतिपादन को अक्षम कर देंगे।

टैग सहायक /Views/_ViewImports.cshtml में आयात किया जाता है:

@addTagHelper "*, Microsoft.AspNetCore.SpaServices"

से पहले आपको साथ एप्लिकेशन को चलाने के कमांड लाइन से बंडलिंग कर सकते हैं ...

> webpack --config webpack.config.vendor.js 
> webpack 

स्टीव सैंडर्सन ने एनडीसी सिडनी में इस पर presentation दिया।

aspnet-prerender-module टैग सहायक SpaServices है, जो सभी Yeoman aspnetcore-spa टेम्पलेट्स द्वारा उत्पन्न परियोजनाओं के लिए आधार है का हिस्सा है। इसलिए, इस आप कैसे सक्षम/उन टेम्पलेट्स में से किसी में पूर्व प्रतिपादन अक्षम करें, Angular 2, Aurelia, Knockout, और React (with Redux) सहित होता है। एक ही किसी भी कस्टम परियोजना या टेम्पलेट है कि आप Node पैकेज aspnet-prerendering और ऊपर उल्लिखित टैग सहायक का उपयोग कर बनाने के लिए लागू होगा।

+0

स्टीव सैंडरसन के ब्लॉग का पालन किया है और डेटा तालिकाओं के primeng जोड़ लिया है, datatable मॉड्यूल केवल अगर मैं अपने index.cshtml फ़ाइल में तत्व से "aspnet-prerender मॉड्यूल" विशेषता को दूर काम करता है। क्या दोनों को रखना संभव है? मैं इस प्री-रेंडर-मॉड्यूल और किसी भी तृतीय पक्ष node_module रखना चाहता हूं। वही हुआ जब मैंने केंडो डेटा टेबल नोड मॉड्यूल स्थापित करने का प्रयास किया। क्या कोई संगतता मुद्दा है या मैं कुछ गलत कर रहा हूं? क्या हमारे पास इसका कोई समाधान है? –

+0

@sohaibjaved आपकी स्थिति शायद अपने खुद के प्रश्न के हकदार है। मेरे पास कुछ कामकाज हैं, लेकिन मुझे नहीं लगता कि वे उस विशेष लिबररी पर लागू होंगे। कुछ पुस्तकालय अभी आइसोमोर्फिक प्रतिपादन के साथ संगत नहीं हैं। मैंने कई अलग-अलग परिदृश्यों में भाग लिया है जहां सर्वर प्रीरेंडर असंभव प्रतीत होता है, लेकिन वे वर्कअराउंड ढूंढने में कामयाब रहे हैं जिनमें निम्न में से एक या संयोजन शामिल है: –

+0

@ सोहाइबज्वेड 1. 'कोणीय 2-सार्वभौमिक' से आयात {isBrowser} (जिसे चाहिए शायद अब तक कोर से आ रहे हैं) और सशर्त रूप से कुछ कार्यक्षमता को स्थगित/स्थगित कर दें जब तक आप जानते हों कि आप ग्राहक संदर्भ में हैं। 2. यदि आपको साइड इफेक्ट्स के लिए एनपीएम पैकेज लोड करना है (आपकी स्थिति पर लागू नहीं होता है) तो आप 'boot-client.ts' में ऐसा कर सकते हैं। 3।उस प्रतीक को पकड़ने के लिए किसी ऑब्जेक्ट को घोषित करें जिसका आप उपयोग करना चाहते हैं। फिर, 'आयात' का उपयोग करने के बजाय, सशर्त रूप से' आवश्यकता 'का उपयोग करें जिसे आपने पहले घोषित किया था। दुर्भाग्य से मुझे नहीं लगता कि इनमें से कोई भी आपकी विशेष स्थिति में काम करेगा। –

7

कोणीय 2 प्रोजेक्ट के लिए मैंने asp-prerender-module को 0.sसे इंडेक्स.schtml में टैग हटाकर हल किया है।

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