मैं वास्तव में दोनों तरफ एक सा हूँ:
- जब मुझे जावास्क्रिप्ट साइड पर डेटा की आवश्यकता होती है , तो मैं JSON का उपयोग करता हूं
- जब मुझे जावास्क्रिप्ट पक्ष पर जो चाहिए वह है प्रस्तुति जिस पर मैं कोई गणना नहीं करूंगा, मैं आमतौर पर HTML का उपयोग करता हूं
HTML का उपयोग करने का मुख्य लाभ यह है कि जब आप अपने पृष्ठ के एक पूर्ण भाग को अजाक्स अनुरोध से वापस लाना चाहते हैं:
- JS में पृष्ठ का एक भाग फिर से बनाना (काफी) कठिन है
- आपके पास संभवतः पहले से ही सर्वर पर कुछ अस्थायी इंजन हैं, जिसका उपयोग पहले स्थान पर पृष्ठ उत्पन्न करने के लिए किया गया था ... इसका पुन: उपयोग क्यों नहीं किया जाता है?
मैं आमतौर पर चीजों के "प्रदर्शन" पक्ष पर विचार नहीं करता, कम से कम सर्वर पर:
- सर्वर पर, HTML या कुछ JSON के एक हिस्से को बनाने से शायद इतना अंतर नहीं होगा
- नेटवर्क के माध्यम से जाने वाले सामान के आकार के बारे में: ठीक है, आप शायद सैकड़ों KB डेटा / HTML का उपयोग नहीं करते हैं ... जो भी आप स्थानांतरित कर रहे हैं उस पर gzip का उपयोग करना सबसे बड़ा अंतर बनाने के लिए जा रहा है (HTML के बीच चयन नहीं करना और JSON)
- एक बात जो ध्यान में रखी जा सकती है, हालाँकि, JSON डेटा से HTML (या DOM संरचना) को फिर से बनाने के लिए आपको क्लाइंट पर किन संसाधनों की आवश्यकता होगी ... तुलना करें कि पृष्ठ में HTML के एक हिस्से को आगे बढ़ाया जाए; -)
अंत में, एक बात जो निश्चित रूप से मायने रखती है:
- आपको एक नई प्रणाली को विकसित करने में कितना समय लगेगा जो JSON + कोड के रूप में डेटा भेजेगा जेएस को पेज में HTML के रूप में इंजेक्ट करने के लिए आवश्यक है?
- HTML को वापस करने में कितना समय लगेगा? और यदि आप अपने पहले से मौजूद सर्वर-साइड कोड का फिर से उपयोग कर सकते हैं तो कब तक?
और एक अन्य उत्तर का उत्तर देने के लिए: यदि आपको पृष्ठ के एक से अधिक हिस्से को अपडेट करने की आवश्यकता है, तो अभी भी उन सभी हिस्सों को एक बड़े स्ट्रिंग के अंदर भेजने का समाधान / हैक है जो कई HTML भागों को समूह करता है, और जेएस में संबंधित भागों को निकालता है।
उदाहरण के लिए, आप इस तरह दिखने वाली कुछ स्ट्रिंग लौटा सकते हैं:
<!-- MARKER_BEGIN_PART1 -->
here goes the html
code for part 1
<!-- MARKER_END_PART1 -->
<!-- MARKER_BEGIN_PART2 -->
here goes the html
code for part 2
<!-- MARKER_END_PART2 -->
<!-- MARKER_BEGIN_PART3 -->
here goes the json data
that will be used to build part 3
from the JS code
<!-- MARKER_END_PART3 -->
यह वास्तव में अच्छा नहीं लगता है, लेकिन यह निश्चित रूप से उपयोगी है (मैंने इसे कई बार उपयोग किया है, ज्यादातर जब HTML डेटा JSON में एनकैप्सुलेट होने के लिए बहुत बड़ा था) : आप पृष्ठ के कुछ हिस्सों के लिए HTML भेज रहे हैं जो प्रस्तुति की आवश्यकता है, और आप उस स्थिति के लिए JSON भेज रहे हैं जिसे आपको डेटा की आवश्यकता है ...
... और उन लोगों को निकालने के लिए, जेएस सबस्ट्रिंग विधि चाल चलेगी, मुझे लगता है ;-)