2011-04-17 15 views
19

मैं स्वचालित क्लोजर रैपर को कैसे छोड़ सकता हूं जो वैश्विक चर से मेरे चर को छुपाता है?कॉफीस्क्रिप्ट के क्लोजर रैपर से छुटकारा पाएं

(function() { 
    // my compiled code 
}).call(this); 

बस CoffeeScript + SproutCore के साथ प्रयोग करना है, और निश्चित रूप से, मैं के रूप में यह है गुंजाइश छोड़ने के लिए पसंद करते हैं: इस मामले में अधिलेखित करने से कुछ भी की रक्षा के लिए कोई जरूरत नहीं है।

मुझे पता है कि मैं घोषणा में @ या this. का उपयोग कर सकता हूं, लेकिन यह बहुत ही सुरुचिपूर्ण नहीं है।

+0

आपको _really_ ऐसा करने से बचना चाहिए। आप नहीं चाहते हैं कि आपके स्थानीय चर वैश्विक स्तर पर रिसाव करें। – shesek

+5

@shesek शायद वह एक बंडलर का उपयोग कर रहा है? जो पहले से ही एक गुंजाइश में सबकुछ लपेटता है? या RequJS का उपयोग करता है? मुझे लगता है कि रैपर स्कोप वैकल्पिक होना चाहिए। – benqus

+0

@ बेंकस - सहमत हैं, मैं या तो अपने स्वयं के आवरण का उपयोग करता हूं या उदाहरण के लिए गंदगी का उपयोग करके एक बड़ी रैपर में एकाधिक फ़ाइलों को गठबंधन करता हूं। लेकिन अन्यथा अगर आप इसे बदसूरत या कुछ पाते हैं, तो आपको इसे छोड़ना नहीं चाहिए। –

उत्तर

42

त्वरित और गंदे समाधान: कंसोल ध्वज -b (नंगे) का उपयोग करें। चेतावनी: अगर आप ऐसा करते हैं तो बिल्ली के बच्चे मर जाएंगे!

स्वच्छ समाधान: ऐसा न करें।

Usage: coffee [options] path/to/script.coffee 

    -c, --compile  compile to JavaScript and save as .js files 
    -i, --interactive run an interactive CoffeeScript REPL 
    -o, --output  set the directory for compiled JavaScript 
    -j, --join   concatenate the scripts before compiling 
    -w, --watch  watch scripts for changes, and recompile 
    -p, --print  print the compiled JavaScript to stdout 
    -l, --lint   pipe the compiled JavaScript through JSLint 
    -s, --stdio  listen for and compile scripts over stdio 
    -e, --eval   compile a string from the command line 
    -r, --require  require a library before executing your script 
    -b, --bare   compile without the top-level function wrapper 
    -t, --tokens  print the tokens that the lexer produces 
    -n, --nodes  print the parse tree that Jison produces 
     --nodejs  pass options through to the "node" binary 
    -v, --version  display CoffeeScript version 
    -h, --help   display this help message 
+11

यह उत्तर सही है, लेकिन यह ध्यान देने योग्य है कि '-b' लगभग सभी मामलों में भारी हतोत्साहित है। [यहां क्यों है] (http://stackoverflow.com/questions/5211638/pattern-for-coffeescript-modules/5212449#5212449)। –

+0

धन्यवाद! किसी भी तरह से मैंने इसे याद किया ... – Zeppelin

+0

कॉफी-बी – coool

7

मैंने एक और विकल्प का उपयोग किया जो मेरे वैश्विक चर में मेरे कार्य के दायरे में वैश्विक वस्तु को संलग्न करना था। मैंने अपनी 'खिड़की' से जुड़ा हुआ है। यह आपकी जावास्क्रिप्ट को encapsulated रखता है और केवल वैरिएबल का खुलासा करता है जिसे आपको वैश्विक दायरे में चाहिए।

+0

सर्वर पर, इसके बजाय 'this' का उपयोग करें। बेहतर अभी तक, दोनों के लिए '@' का उपयोग करें। –

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