सवाल एक छोटे से स्पष्ट करने के लिए: Protovis कोड एक विशेष टैग का उपयोग कर लिखा है,
<script type="text/javascript+protovis">
के बाद Protovis पुस्तकालय शामिल किया गया है। हालांकि, यह कोड को HTML के साथ रेखांकित किया जाना चाहिए। ब्राउज़र text/javascript+protovis
प्रकार को नहीं पहचानता है, इसलिए यह टैग को अनदेखा करता है; Protovis इसे src
से जुड़ी किसी भी फाइल को लोड करने के प्रयास किए बिना टैग में शामिल पाठ में पढ़ता है और पढ़ता है।
प्रोटॉविस ऐसा क्यों करता है? चूंकि यह जावास्क्रिप्ट 1.8 कोड जावास्क्रिप्ट 1.6 कोड में कनवर्ट करने के लिए कोड के माध्यम से रेगेक्स-आधारित पार्सर चलाता है; इस तरह, आप अत्याधुनिक जावास्क्रिप्ट सुविधाओं का उपयोग कर सकते हैं, और आपका कोड अभी भी पुराने ब्राउज़र में चलाएगा। बहुत ही शांत।
जबकि आप निश्चित रूप से कॉफीस्क्रिप्ट कोड लिख सकते हैं, इसे संकलित कर सकते हैं, और फिर इसे पेस्ट कर सकते हैं, जो एक बहुत ही कठिन निर्माण प्रक्रिया के लिए तैयार होगा। अच्छी खबर यह है कि यह असंभव (असंभव?) है कि आपको कॉफीस्क्रिप्ट कंपाइलर से कोड मिलेगा जो जेएस 1.6 फीचर्स से परे कुछ भी उपयोग करता है; इनमें से अधिकतर सुविधाओं को कॉफीस्क्रिप्ट में कुछ रूप में बेक किया जाता है। उदाहरण के लिए, अज्ञात कार्यों के लिए सरणी समझ, और एक संक्षिप्त वाक्यविन्यास। इसका मतलब है कि आप सिर्फ
<script type="text/javascript" src="myProtovisCode.js"></script>
अपने संकलित CoffeeScript कोड के लिए
उपयोग कर सकते हैं (या text/coffeescript
coffee-script.js
पुस्तकालय के साथ, विकास के लिए)।
वास्तविक चाल प्रोटोकिस उदाहरणों का अनुवाद कर रही है, उनके अपरिचित जेएस 1.8 वाक्यविन्यास के साथ, कॉफीस्क्रिप्ट में। उदाहरण के लिए,
cell.add(pv.Dot)
.def("x", function(k0, k1) pv.Scale.linear(flowers, function(d) d[k0]).range(0, s))
.def("y", function(k0, k1) pv.Scale.linear(flowers, function(d) d[k1]).range(0, s))
, संक्षिप्त जे एस 1.8 अज्ञात फ़ंक्शन सिंटैक्स का उपयोग करता है, जहां function(x) x * x
function(x) { return x * x; }
के लिए आशुलिपि है।बेशक, इस CoffeeScript को आसानी से अनुवाद:
cell.add(pv.Dot)
.def("x", (k0, k1) -> pv.Scale.linear(flowers, (d) -> d[k0]).range(0, s))
.def("y", (k0, k1) -> pv.Scale.linear(flowers, (d) -> d[k1]).range(0, s))
आगे संदर्भ के लिए, बाहर New in JavaScript 1.8 से अधिक मोज़िला डॉक्स पर जाँच (केवल फ़ायरफ़ॉक्स ब्राउज़र है कि मूल रूप से वर्तमान में जे एस 1.8 का समर्थन करता है किया जा रहा है)।
संपादित प्रश्न: यदि संभव हो तो मैं मैन्युअल संकलन चरण से बचना चाहता हूं ... – nicolaskruchten
आप पृष्ठ को प्रस्तुत करने के समान सिनात्रा या कुछ ऐसा इस्तेमाल कर सकते हैं और फ्लाई पर जावास्क्रिप्ट को कॉफ़ीस्क्रिप्ट में परिवर्तित कर सकते हैं। –