2012-02-17 13 views
12

http://sugarjs.com/nodejs में sugar.js का उपयोग कैसे करें?

यह एक मुक्ति है इसलिए मैं इसे सीधे ब्राउज़र में लोड कर सकता हूं। यह एक एनपीएम पैकेज भी है, लेकिन मैं इसे moudule के रूप में कैसे उपयोग कर सकता हूं?

ब्राउज़र में, एक जेएस फ़ाइल लोड करें आसानी से वस्तुओं को बदल देगा, लेकिन नोडजेस में काम करते समय समान नहीं है, और मैं इसे समझ नहीं सकता।

उत्तर

8

चीनी सामान्य कॉमनजेएस मॉड्यूल के रूप में उपयोग नहीं किया जाता है, क्योंकि लाइब्रेरी का पूरा बिंदु बिल्ट-इन प्रोटोटाइप को संशोधित करना है। एक जिसे आपको अपनी परियोजना में इसकी आवश्यकता होती है, सभी अंतर्निर्मित वस्तुओं को बढ़ाया जाएगा और आप उन्हें वहां से उपयोग कर सकते हैं।

संपादित करें: यह अब v2.0.0 के रूप में सही नहीं है। प्रोटोटाइप संशोधन अब ऑप्ट-इन है ताकि आप निर्यात किए गए ऑब्जेक्ट का उपयोग करके किसी अन्य नोड मॉड्यूल की तरह चीनी का उपयोग कर सकें। अधिक जानकारी के लिए, https://sugarjs.com/quickstart/

28

देखना तुम बस मॉड्यूल स्थापित:

npm install sugar 

तो बस एपीआई की तरह उपयोग का कहना है:

var http = require('http'); 
var sugar = require('sugar'); 

http.createServer(function (req, res) { 

    res.writeHead(200, { 'Content-Type': 'text/html' }); 
    res.end('hey_there_good-lookin'.camelize()); 

}).listen(process.env.PORT || 8080); 
+0

अच्छा डेमो। मैं अब समझता हूँ। – jiyinyiyong

+8

क्या एक चर के लिए 'आवश्यकता ('चीनी') के वापसी मूल्य को आवंटित करने में कोई बात है? – callum

+4

@ कल्लम नोप 'की आवश्यकता है (' चीनी ')' एक खाली वस्तु लौटाता है। 'Var sugar =' भाग लिखना बेकार है। –

1

sugar.js का प्रयोग न करें - यह देशी प्रोटोटाइप को संशोधित करता है तो सब कुछ उनका उपयोग करेगा - न सिर्फ आपके मॉड्यूल। ऐसा करना अविश्वसनीय रूप से कपटी है, यह मॉड्यूलर नहीं है, और जब आप कम से कम इसकी अपेक्षा करते हैं तो यह आपको गधे में काट देगा।

यह फिर से कहने लायक है: किसी भी मॉड्यूल का उपयोग न करें जो पॉलीफिलिंग के (बहुत उचित) संदर्भ के बाहर देशी प्रोटोटाइप को संशोधित करता है। Sugar.js का प्रयोग न करें। विशेष रूप से node.js में - एक कारण के लिए वहां एक मॉड्यूल सिस्टम है। मैंने व्यक्तिगत रूप से उन चीजों के साथ भयानक मुद्दों में भाग लिया है जो देशी प्रोटोटाइप को संशोधित करते हैं। अजीब चीजें आपके कोड के आंतों में गहरी हो सकती हैं।

http://www.nczonline.net/blog/2010/03/02/maintainable-javascript-dont-modify-objects-you-down-own/

अद्यतन:

यहाँ क्यों देशी वस्तुओं को संशोधित बुरा है पर कुछ और जानकारी है ऐसा लगता है कि चीनी v2.0.0 अब (ऑप्ट-इन है, जो बेहतर है के रूप में विस्तार मूल निवासी व्यवहार करता है मूल निवासी के बाद से डिफ़ॉल्ट रूप से विस्तारित नहीं हैं)।

+0

बी टी देखें, ये पुराने हैं - और अधिकतर वैध - ब्राउज़र और मूल प्रोटोटाइप में होस्ट ऑब्जेक्ट्स को संशोधित करने के विरुद्ध तर्क। चीनी के डेवलपर इन मुद्दों के बारे में बहुत ज्यादा जागरूक हैं, और चीनी को उनके खिलाफ सुरक्षा के साथ डिजाइन किया गया है। http://sugarjs.com/native –

+0

कहा जा रहा है कि, मैं कहूंगा कि लाइब्रेरी में sugar.js का उपयोग करना अभी भी अव्यवस्थित है। लेकिन मुझे अनुप्रयोगों में इसका उपयोग न करने का कोई कारण नहीं दिखता है, और वास्तव में मेरी टीम कई वर्षों से बड़े प्रभाव के लिए बड़े, अक्सर संशोधित अनुप्रयोगों पर इसका उपयोग कर रही है। अब तक हमें एक मुद्दा सामने आया है, और यह हल करने के लिए स्पष्ट और सरल था (यह चीनी के तत्कालीन तीन साल के संस्करण के कारण हुआ था, हमें बस इसे अपडेट करना पड़ा था।) –

+0

भले ही आप इसका उपयोग कर रहे हों यह केवल आपके अनुप्रयोगों में, यह बहुत संभव है (शायद मैं कह सकता हूं?) कि यह कुछ यादृच्छिक कोड के साथ खराब तरीके से बातचीत करेगा जो आपने * लिखा * या कुछ यादृच्छिक कोड जिसे आपने आयात किया था। मैं सचमुच कभी शर्करा नहीं करूँगा। जेएस - मैंने कई बार समस्याओं में भाग लिया है, यही कारण है कि मैंने इस जवाब को पहले स्थान पर लिखा था। चीनी के डेवलपर निश्चित रूप से इस मुद्दे से अवगत हैं कि उन्होंने रैबल को कुचलने के लिए साइट पर एक पूरी जगह समर्पित की है। दुर्भाग्य से आप * sugar.js सुरक्षित नहीं कर सकते हैं। एपीआई जावास्क्रिप्ट में बस सुरक्षित नहीं है - यह नहीं कहने के लिए कि यह अन्य भाषाओं में हो सकता है –

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