Кто-нибудь пробовал использовать библиотеку JavaScript Firebase из Dart?

на Firebase key-value store выглядит интригующе и было бы интересно использовать с HTML-фреймворком Dart.

Они предлагают библиотеку JavaScript для чтения / записи в свою модель. Кто-нибудь пробовал использовать его с Дротиком?

мой план (основанный на очень небольшом знании дротика) состоит в том, чтобы:

  • включить свою библиотеку в мой html
  • загрузите js.дротик пакет
  • создать экземпляр модели через js.Дарт!--10-->
  • читать и пишите через модель.

кажется ли это правильным подходом? Или есть лучший способ сделать это?

спасибо

3 ответов


вы можете использовать любую библиотеку Javascript через пакет js.

на Firebase вы должны :

dependencies:
  js: any
  • добавить следующее <script> на вашу 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'}));
}

приведенный выше код дротика эквивалентен следующему коду 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'});

по сути :

  • когда вам нужно создать экземпляр объекта Javascript, используйте new js.Proxy(js.context.MyJavascriptObjectName, arg1, arg2, arg3)),

  • когда вам нужно предоставить анонимный объект Javascript, используйте js.map({'attr1', value1}, {'attr2', value2}).


теперь есть обертка для базы.библиотека js в Dart здесь:https://github.com/firebase/firebase-dart/ (также доступный на пабе). Он использует dart: js, как описано в этом потоке, поэтому включение firebase.js по-прежнему требуется!


я получил сообщение об ошибке "разрыв на исключение: ReferenceError: ReceivePortSync не определен", когда Дарт попал сюда.

    js.scoped (() {

    });

дополнительная строка кода необходима для использования Firebase с Dart. Добавить строку " пакеты/браузер/взаимодействие.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>

----------------- Изменить Aug 15 ----------

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