Ich beginne mit einigen der Dart-Beispiele. Dann wollte ich das DOM mit document.query('#someId')
abfragen, wie hier beschrieben hier , aber es scheint, dass es keins gab Abfragemethode im Dokument. Auch das Erstellen eines neuen Elements mit 'new Element.tag (' p ') funktioniert nicht.
Dann finde ich heraus, dass es funktioniert, wenn ich das importierte Paket von dart:dom
nach dart:html
ändere. Aber die Verwendung von beiden gibt mir eine Menge duplicate definition of _XYZ
.
Also frage ich mich:
dart:html
und dart:dom
package Ein Update auf alle Antworten, und wahrscheinlich macht diese Frage nicht mehr anwendbar, dass dart: dom veraltet ist.
Siehe diesen Beitrag auf der dartlang-Website.
Beantworten Sie ein bisschen außer Betrieb
Welches sollte ich verwenden : Sie sollten dart:html
verwenden, da es die sauberste Abstraktion über dem DOM bietet.
Warum kann ich nicht beide verwenden : Es sollte eigentlich nicht benötigt werden, aber Sie können tatsächlich zu den zugrunde liegenden dart:dom
Implementierungen von dart:html
gelangen, indem Sie einen schmutzigen Hack verwenden, der hier . Die bessere und sauberere Lösung besteht darin, Darts Fähigkeit zu nutzen, Importe umzubenennen, zB #import('dart:dom', prefix: 'dom');
, wie von @munftig unten beschrieben / p>
Was ist der Unterschied zwischen dart: html und dart: dom package . Ich denke, der Unterschied zwischen ihnen ist ähnlich zu JQuery ( dart:html
) vs JS DOM Manipulation ( dart:dom
).
Das Dart-Team bemüht sich, die dart:html
API so einfach und überraschend zu machen, wie wir es von Bibliotheken wie JQuery (dom manipulation) und Tree.js (WebGL-Programmierung) und D3 (SVG Zeichnung). Außerdem versuchen sie, einem API-Stil über alle diese Funktionsbereiche hinweg zu folgen, so dass die SVG- oder WebGL-API ähnliche Konstrukte wie die DOM-API verwendet, wodurch sichergestellt wird, dass alle Teile gut zusammenspielen.
Update : ab Mai 2012 dart: Dom ist jetzt veraltet und wird entfernt.
Lars hat mit deiner Frage einen ausgezeichneten Job gemacht. Ich füge nur hinzu:
warum kann ich nicht beide verwenden
Das kannst du eigentlich. Das Problem ist, dass beide Bibliotheken für einige Dinge denselben Namen verwenden (hauptsächlich window
). Wenn Sie beide importieren, kollidieren diese Namen, was Dart nicht zulässt. Um das zu lösen, können Sie eines davon mit einem Präfix importieren:
Wenn Sie dann auf einen aus dart:html
importierten Namen verweisen, verwenden Sie einfach den Namen. Wenn Sie eine DOM-Datei wünschen, geben Sie ihr ein Präfix: