2014-11-05 8 views
6

है, मैं एक जेएस फ़ाइल (जो एक HTML टेम्पलेट के अंदर <script> टैग होने के विपरीत) एक प्ले टेम्पलेट रखना चाहता हूं। इसका कारण यह है कि लिपि को कैश किया जा सकता है। हालांकि, मुझे स्क्रिप्ट में एक अंतर बनाने की आवश्यकता है, जहां यह शामिल है और Play's टेम्पलेट सिस्टम के साथ ऐसा करने की उम्मीद है। अगर मैं एम्बेडेड स्क्रिप्ट का उपयोग करता हूं, तो मैं पहले से ऐसा कर सकता हूं, लेकिन उनको कैश नहीं किया जा सकता है।प्ले फ्रेमवर्क टेम्पलेट जो वास्तव में एक जेएस फ़ाइल

मुझे an existing question मिला जो एक ही चीज़ पूछता है, लेकिन उत्तर पूरी तरह अलग है (अलग-अलग लक्ष्यों)।

+0

आप Play टेम्पलेट्स के रूप में अपने JavaScript फ़ाइलें निर्धारित कर सकते हैं। जैसे आप एचटीएमएल टेम्पलेट्स के लिए करते हैं। आपको केवल अपना टेम्पलेट जोड़ने और इसे नियंत्रक से प्रस्तुत करने और एक रूट जोड़ने की आवश्यकता है। लेकिन गतिशील जावास्क्रिप्ट बनाने से हमेशा बेहतर तरीके हैं। कैशिंग के लिए, क्या होगा यदि आप एक सामान्य जावास्क्रिप्ट फ़ाइल बनाते हैं और इसे खेलने के साथ सेवा करते हैं? आपको लगता है कि यह कैश नहीं किया जाएगा? क्यूं कर? –

+0

@NaderHadjiGhanbari, मैंने यह नहीं कहा कि एक सामान्य जेएस फ़ाइल कैश नहीं किया जाएगा। इसके बजाय, मुझे फ़ाइल के साथ फ़ाइल में डेटा को प्रतिस्थापित करने और वास्तविक जेएस फ़ाइल की सेवा करने में सक्षम होना चाहिए और एम्बेडेड जेएस कोड (एचटीएमएल में) नहीं। – Mike

उत्तर

15

आसान है यही कारण है, बस ... .js विस्तार के साथ दृश्य बनाते हैं, अर्थात्: views/myDynamicScript.scala.js:

def myDynamicScript = Action { 
    Ok(views.js.myDynamicScript.render(Hello Scala!")).as("text/javascript utf-8") 
} 

या साथ:

@(message: String) 

alert('@message'); 

//Rest of your javascript... 

तो आप के रूप में स्काला कार्रवाई के साथ इसे प्रदान कर सकते हैं जावा कार्रवाई:

public static Result myDynamicScript() { 
    return ok(views.js.myDynamicScript.render("Hello Java!")); 
} 
,210

आप कार्रवाई करने के लिए route (शायद आप इसे करने के लिए कुछ पैरामीटर जोड़ना चाहें,) बनाएँ:

GET /my-dynamic-script.js  controllers.Application.myDynamicScript() 

तो आप उसे HTML templite में शामिल कर सकते हैं, जैसे:

<script type='text/javascript' src='@routes.Application.myDynamicScript()'></script> 

वैकल्पिक रूप से:

तुम भी अपने HTML दस्तावेज़, अपने <head>...</head> अनुभाग में इस रखकर यानी में स्क्रिप्ट प्रदान कर सकते हैं:

<script type='text/javascript'> 
    @Html(views.js.myDynamicScript.render("Find me in the head section of HTML doc!").toString()) 
</script> 

संपादित करें: @See also samples for other templates types

+0

मैं इसके लिए "मुझे भी" धन्यवाद देने के लिए नफरत करता हूं, हालांकि यह वास्तव में एक ** पूरी तरह से अलग समस्या हल करता है ** मैं स्थिर संपत्ति बनाम प्ले के एसबीटी सबमिशन सेटअप के साथ हूं। अब मुझे * उस समस्या को हल नहीं करना है क्योंकि चुनौती के चारों ओर मुझे काम करने की ज़रूरत है। इसलिए आपका धन्यवाद :) – Techmag

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