2013-02-15 17 views
7

Składnica klucz-wartość o numerze Firebase wygląda intrygująco i będzie zabawnie używać ze strukturą HTML Dart.Czy ktoś próbował używać biblioteki javascript Firebase z poziomu Dart?

Oferują bibliotekę JavaScript do odczytu/zapisu do swojego modelu. Czy ktoś próbował użyć go z Dart?

Mój plan (na podstawie bardzo mało wiedzą Dart) jest:

  • Dołącz bibliotekę w moim html
  • Załaduj pakiet js.dart
  • instancji modelu poprzez js.dart
  • odczyt i zapis poprzez model.

Czy wydaje się to właściwym podejściem? Czy jest o wiele lepszy sposób na zrobienie tego?

Dzięki

+0

[Założyciel Firebase] Jestem nie zdaje sobie sprawy z tego, że ktoś próbuje tego do tej pory, ale chciałbym zobaczyć, jak to działa. Jeśli otrzymasz działającą implementację, daj nam znać! –

+0

cześć Andy, czy byłeś w stanie to zrobić? patrząc na to samo dla osobistego projektu. – Riz

+0

Śmieszne, powinieneś zapytać. Właśnie wróciłem, żeby spojrzeć na Dart. Jest w tym tyle rzeczy do polubienia. Chciałbym tylko, żeby to był rzeczywiście Smalltalk ;-) W każdym razie krótka odpowiedź brzmi "nie", ale niektóre informacje na dole wątku wyglądają obiecująco. –

Odpowiedz

10

można użyć dowolnej biblioteki JavaScript przez js package.

Dla Firebase trzeba:

dependencies: 
    js: any 
  • dodać następujące <script> na stronę html:
<script src='https://cdn.firebase.com/v0/firebase.js'></script> 
<script type="application/dart" src="youDartCode.dart"></script> 
<script src="packages/browser/dart.js"></script> 
<script src="packages/browser/interop.js"></script> 
import 'package:js/js.dart' as js; 

void main() { 
    final myDataRef = new js.Proxy(js.context.Firebase, 
     'https://xxx.firebaseio-demo.com/'); 
    myDataRef.on('child_added', (snapshot, String previousChildName) { 
    final message = snapshot.val(); 
    print("${message.name} : ${message.text}"); 
    }); 
    myDataRef.push(js.map({"name": 'myName', "text": 'js interop rocks'})); 
} 

Powyższy kod Dart jest równoznaczne z poniższego kodu JavaScript:

var myDataRef = new Firebase('https://xxx.firebaseio-demo.com/'); 
myDataRef.on('child_added', function(snapshot, previousChildName) { 
    var message = snapshot.val(); 
    console.log(message.name + " : " + message.text); 
})); 
myDataRef.push({name: 'myName', text: 'js interop rocks'}); 

Zasadniczo:

  • kiedy trzeba instancję Obiekt JavaScript, użyj new js.Proxy(js.context.MyJavascriptObjectName, arg1, arg2, arg3)),

  • Gdy musisz podać obiekt anonimowy Javascript, użyj js.map({'attr1', value1}, {'attr2', value2}).

+0

Genialny! Bardzo dziękuję –

+1

Dużo czasu minęło od tego pierwszego wątku. W pubie jest teraz pakiet firewalla: https://pub.dartlang.org/packages/firebase – Aaron

+0

Składnia interakcji z interakcją javascript zmieniła się w nowszych wersjach dart. Ten przykład nie zadziała w Firebase 3.0. – BeatingToADifferentRobot

0

dostałem komunikat o błędzie „Przełamując na wyjątek: ReferenceError: ReceivePortSync nie jest zdefiniowana” kiedy Dart dostał się tutaj.

js.scoped (() { 

    }); 

Dodatkowa linia kodu jest potrzebna do użycia Firebase z Dart. Dodaj wiersz "pakiety/przeglądarka/interop.JS”

<script type="application/dart" src="ScrollViewDemo.dart"></script> 
    <script src="packages/browser/dart.js"></script> 
    <script src="packages/browser/interop.js"></script> 
    <script src='https://cdn.firebase.com/v0/firebase.js'></script> 

----------------- Edycja 15 sierpnia ----------

js.scoped is no longer needed in the newer version of interopt.js 
+1

Po zgłoszeniu odpowiedzi pakiet _js_ wprowadził plik 'interop.js'. Zaktualizowałem to. Dzięki. –

1

Jest teraz otoki dla biblioteki firebase.js w Dart tutaj: https://github.com/firebase/firebase-dart/ (dostępne również w pubie) .Karta ta wykorzystuje dart: js, jak omówiono w tym wątku, więc nadal wymagane jest włączenie firebase.js!

Powiązane problemy