2012-01-22 23 views
8

मैं कुछ डार्ट उदाहरणों से शुरू कर रहा हूं। तो मैं के साथ here वर्णित डीओएम से पूछना चाहता था, लेकिन ऐसा लगता है कि दस्तावेज़ में कोई क्वेरी विधि नहीं थी। 'New Element.tag (' p ') द्वारा एक नया तत्व भी बनाना काम नहीं करता है।"डार्ट: एचटीएमएल" और "डार्ट: डोम" पैकेज के बीच क्या अंतर है?

तब मुझे लगता है कि यह काम करेगा, जब मैं आयातित पैकेज dart:dom से dart:html पर बदलता हूं। लेकिन उनमें से दोनों का उपयोग करके मुझे duplicate definition of _XYZ का गुच्छा मिल जाता है।

तो मुझे आश्चर्य है:

  1. dart:html और dart:dom पैकेज के बीच क्या फर्क है
  2. जो एक का उपयोग करना चाहिए
  3. मैं दोनों

उत्तर

6

सभी उत्तरों के लिए एक अपडेट, और शायद यह प्रश्न अब लागू नहीं होता है कि डार्ट: डोम को हटा दिया गया है।

डार्टलांग वेबसाइट पर this post देखें।

10

थोड़ा बाहर का जवाब का उपयोग क्यों नहीं कर सकते आदेश

  1. मुझे का उपयोग करना चाहिए: आपको dart:html का उपयोग करना चाहिए, यह डीओएम के शीर्ष पर सबसे साफ अमूर्तता प्रदान करता है।

  2. क्यों नहीं कर सकते मैं दोनों का उपयोग करें: यह सख्ती की जरूरत नहीं किया जाना चाहिए, लेकिन आप वास्तव में here वर्णित एक गंदा हैक का उपयोग कर dart:html से अंतर्निहित dart:dom कार्यान्वयन करने के लिए मिल सकता है। @munificent द्वारा वर्णित अनुसार #import('dart:dom', prefix: 'dom'); आयात का नाम बदलने के लिए डार्ट की क्षमता का बेहतर और अधिक स्वच्छ समाधान उपयोग करना है।

  3. डार्ट के बीच अलग क्या है: एचटीएमएल और डार्ट: डोम पैकेज। मैं जेईसी (dart:html) बनाम जेएस डोम मैनिपुलेशन (dart:dom) के समान उनके बीच के अंतर के बारे में सोचता हूं।

डार्ट टीम का उपयोग करने के रूप में हम इस तरह के JQuery (डोम हेरफेर) के रूप में पुस्तकालयों से करने के लिए इस्तेमाल मिल गया है के रूप में आसान है और unsurprising dart:html एपीआई बनाने के लिए (अच्छा तरीका में) कठिन कोशिश कर रहा है, Tree.js (WebGL प्रोग्रामिंग) और D3 (एसवीजी ड्राइंग)। इसके अलावा वे कार्यक्षमता के इन सभी क्षेत्रों में एक एपीआई शैली का पालन करने का भी प्रयास करते हैं ताकि एसवीजी या वेबजीएल एपीआई डीओएम एपीआई के समान संरचनाओं का उपयोग करे, इस प्रकार यह सुनिश्चित करना कि सभी भाग अच्छी तरह से एक साथ खेलते हैं।

अद्यतन: 2012 dart:dom is now deprecated के अनुसार और हटा दिया जाएगा।

7

लार्स ने आपके प्रश्न के साथ एक उत्कृष्ट काम किया। मैं तो बस जोड़ देंगे करने के लिए:

क्यों नहीं कर सकते मैं दोनों

आप कर सकते हैं का उपयोग करें, वास्तव में। समस्या यह है कि दोनों पुस्तकालय कुछ चीजों के लिए समान नामों का उपयोग करते हैं (मुख्य रूप से window)। जब आप दोनों को आयात करते हैं, तो वे नाम टकराते हैं, जो डार्ट अनुमति नहीं देता है।कि हल करने के लिए, आप एक उपसर्ग के साथ उनमें से एक आयात कर सकते हैं:

#import('dart:html'); 
#import('dart:dom', prefix: 'dom'); 

तब, जब आप एक नाम dart:html से आयात को देखें, तो आप सिर्फ नाम का उपयोग करें। आप एक डोम एक चाहते हैं, तो आप अवश्य लगा दें:

window  // dart:html window 
dom.window // dart:dom window 
0

संक्षिप्त उत्तर उत्कृष्ट जवाब पहले ही दिया में जोड़ने के लिए: उपयोग डार्ट: एचटीएमएल जब भी आप कर सकते हैं। डार्ट का उपयोग करें: जब आपको अवश्य होना चाहिए (और यदि आपको करना है तो एक बग दर्ज करें)।

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