यह निर्भर करता है।
जब हैम्ल फ़िल्टर को संकलित करता है तो यह देखने के लिए जांचता है कि फ़िल्टर टेक्स्ट contains any interpolation (#{...}
) है। यदि कोई नहीं है तो यह प्रत्येक अनुरोध को बदलने के लिए एक ही पाठ होगा, इसलिए रूपांतरण संकलन समय पर एक बार किया जाता है और परिणाम टेम्पलेट में शामिल होता है।
यदि वहां फ़िल्टर पाठ में इंटरपोलेशन है, तो प्रत्येक पाठ पर बदलने के लिए वास्तविक पाठ अलग-अलग होगा, इसलिए कॉफ़ीस्क्रिप्ट को प्रत्येक बार संकलित करने की आवश्यकता होगी।
यहां एक उदाहरण है। कोई प्रक्षेप के साथ पहली:
:coffeescript
$ ->
alert "No semicolons! Awesome"
इस कोड उत्पन्न करता है (उत्पन्न रूबी कोड को देखने के लिए haml -d
का उपयोग करें):
_hamlout.buffer << "<script>\n (function() {\n $(function() {\n return alert(\"No semicolons! Awesome\");\n });\n \n }).call(this);\n</script>\n";
इस कोड को बस बफर के लिए एक स्ट्रिंग कहते हैं, इसलिए कोई Coffeescript कंपाइल किया जा रहा है ।
प्रक्षेप के साथ
अब:
- word = "Awesome."
:coffeescript
$ ->
alert "No semicolons! #{word}"
यह उत्पन्न करता है:
word = "Awesome."
_hamlout.buffer << "#{
find_and_preserve(Haml::Filters::Coffee.render_with_options(
"$ ->
alert \"No semicolons! #{word}\"\n", _hamlout.options))
}\n";
यहाँ, के बाद से Haml देखने के लिए प्रक्षेप का मूल्य, Coffeescript हर बार कंपाइल किया जाता है प्रतीक्षा करने के लिए की जरूरत है।
आप अपने :coffeescript
फ़िल्टर के अंदर कोई इंटरपोलेशन न होने पर प्रत्येक अनुरोध पर कॉफ़ीस्क्रिप्ट को संकलित करने से बच सकते हैं।
:javascript
फिल्टर इसी तरह व्यवहार करती है, अगर कोई प्रक्षेप है देखने के लिए जाँच, लेकिन जब से :javascript
फिल्टर केवल बफर के लिए कुछ पाठ आउटपुट जब इसे चलाता द्वारा इसका उपयोग एक प्रदर्शन हिट की बहुत कम है। आप संभवतः :javascript
और :coffeescript
फिल्टर जोड़ सकता, :javascript
में अंतर्वेशित डेटा डालने और अपने :coffeescript
स्थिर रखते हुए:
- word = "Awesome"
:javascript
var message = "No semicolons! #{word}";
:coffeescript
alert message
शानदार प्रतिक्रिया। धन्यवाद! –