2014-09-04 5 views
9

AngularJS 1.3 के साथ, <base> टैग की आवश्यकता है जब एचटीएमएल 5 मोड में और मुझे यह सोचने के लिए एचटीएमएल 5 मोड बनाम हैश मोड के फायदे/नुकसान क्या हैं।एचटीएमएल 5 मोड बनाम हैश मोड के फायदे/नुकसान AngularJS

हैश मोड के साथ, नकारात्मकता यह है कि यूआरएल थोड़ा बदसूरत है और सहज नहीं है अगर आप उपयोगकर्ताओं को यूआरएल टाइप करने की उम्मीद करते हैं। एचटीएमएल 5 मोड (1.3 के साथ) का नकारात्मक पक्ष यह है कि <base> टैग की आवश्यकता है जो कई मुद्दों को बना सकता है (जैसे एसवीजी के साथ थोड़ा दर्द करना)।

क्या कोई अन्य तरीका है जो मैं सोच नहीं रहा हूं?

+0

क्या [एसओ पर यह जवाब] [http://stackoverflow.com/a/19753427/2057033) मदद कर सकता है? – Blackhole

+0

@ ब्लैकहोल मैंने कोशिश की थी कि बिना किसी किस्मत के मुद्दे को और अधिक देखकर, ऐसा लगता है कि iconic.js लाइब्रेरी में कुछ ऐसा मुद्दा पैदा कर रहा है क्योंकि जब मैं केवल एसवीजी इंजेक्टर लाइब्रेरी और उस लिंक में उल्लिखित तकनीक का उपयोग करता हूं, तो आइकन ठीक काम करते हैं । मैं अभी भी AngularJS में HTML5 मोड/हैश मोड के बीच अंतर जानना चाहता हूं (इसे प्रदर्शित करने के लिए मेरे प्रश्न को अपडेट किया गया है)। – ryanzec

+0

विभिन्न वेबसाइटों पर 3 साल के दौरान एचटीएमएल 5 मोड के साथ किसी भी परेशानी का ध्यान नहीं दिया, एसवीजी को छोड़कर (कुछ ग्रेडिएंट पथ की समस्या थी, जैसा कि आपने लिखा था, आधार से संबंधित, पूर्ण पथ निर्दिष्ट करना था) – Rantiev

उत्तर

1

इतिहास API का उपयोग करने से आपको एक वास्तविक यूआरएल मिल सकता है जिसमें सर्वर द्वारा सीधे प्रदान की गई उचित सामग्री हो सकती है।

यह:

  • आप सही स्थिति में पेज लोड करने के लिए भले ही उपयोगकर्ता द्वारा दौरा पहले पृष्ठ होमपेज पर नहीं है की अनुमति देता है।
  • अनुक्रमण के लिए खोज करने के लिए इंजन अच्छी सामग्री देता है (यह होमपेज पर राज्य में यह तो लोड हो रहा है hashbang पढ़ने के बाद जे एस के साथ इसे बदलने की तुलना में तेजी है) (गूगल के भयानक (और अब हटा दिया गया) का उपयोग किए बिना hashbang hack)
  • यूआरएल की अनुमति देता है जावास्क्रिप्ट fails for any reason पर भी काम करने के लिए।

Breaking the Web With Hash Bangs भी देखें।

hashbang दृष्टिकोण:

प्राचीन ब्राउज़रों
  • में
    • वर्क्स एक सर्वर साइड वापस आने के लिए बहाना नहीं है अगर आप एक के निर्माण में प्रयास निवेश नहीं करते हैं।

    एनबी: जब आप इतिहास API का उपयोग करते हैं तो प्राचीन ब्राउज़र सर्वर उत्पन्न पृष्ठ के लिंक का पालन करने के लिए वापस आ सकते हैं।


    उस ने कहा, एंगुलर का इतिहास एपीआई का उपयोग बहुत खराब है। नीचे

    उद्धरण the documentation से कर रहे हैं:

    इस विधा का उपयोग कर सर्वर साइड पर पुनर्लेखन, मूल रूप से आप अपने आवेदन के प्रवेश बिंदु (जैसे index.html) करने के लिए अपने सभी लिंक को फिर से लिखने के लिए है यूआरएल की आवश्यकता है।

    यह सलाह भयानक है। यदि आप इतिहास API का उपयोग कर रहे हैं, तो आपको दिमाग में progressive enhancement के साथ अपना सर्वर साइड कोड लिखना चाहिए। प्रत्येक यूआरएल को एचटीएमएल दस्तावेज़ में दोबारा लिखकर जो कोणीय को बूटस्ट्रैप्स करता है और कुछ और नहीं करता है, आप अलग-अलग यूआरएल बनाते हैं जो सर्वर व्यर्थ द्वारा नियंत्रित होते हैं। आप पूरी तरह से जेएस पर काम करते हैं क्योंकि सर्वर विफल होने पर सामग्री वितरित करने का कोई तरीका नहीं है।

    संक्षेप में, यह दृष्टिकोण पूरी तरह से कॉस्मेटिक कारणों के लिए इतिहास API का उपयोग करता है और फिर 404 त्रुटियों से बचने के लिए एक गंदे हैक का उपयोग करता है।

    एचटीएमएल 5 इतिहास एपीआई का समर्थन करने वाले ब्राउज़र के लिए, $ स्थान पथ और खोज लिखने के लिए HTML5 इतिहास API का उपयोग करता है। यदि इतिहास एपीआई ब्राउज़र द्वारा समर्थित नहीं है, तो $ स्थान एक हैशबैंग यूआरएल की आपूर्ति करता है।

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

  • +0

    और जेएस विफल होने पर यह कैसे काम करना चाहिए ? ब्राउजर उस यूआरएल को निश्चित रूप से लोड करेगा लेकिन कौन सा उपयोगकर्ता देखेंगे? कुछ भी नहीं, क्योंकि यदि जेएस विफल रहता है तो राउटर काम नहीं करता है। – Rantiev

    +0

    @Rantiev - यह "सर्वर द्वारा सीधे प्रदान की गई उचित सामग्री" रखने का बिंदु है। यह भी देखें [यह] (https://en.wikipedia.org/wiki/Unobtrusive_JavaScript) और [यह] (https://en.wikipedia.org/wiki/Progressive_enhancement)। – Quentin

    +0

    आपको इसे इंगित करना होगा, क्योंकि किसी के पास इस सेट को सामान्य रूप से नहीं है। बहुत से एसपीए किसी भी सर्वर पक्ष के बिना स्थिर वेबसाइट के रूप में जाते हैं जो किसी भी एपीआई से जानकारी लेता है। तो सर्वर साइड यूआरएल हैंडलिंग एक बहुत ही विशिष्ट मामला है। ज्यादातर मामलों में यदि जेएस विफल रहता है तो इसका मतलब है कि आपकी वेबसाइट विफल हो जाती है। – Rantiev

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