7

Firebase Key-Valueストアは興味をそそられるように見え、DartのHTMLフレームワークで使用するのは楽しいでしょう。

モデルを読み書きするためのJavaScriptライブラリを提供しています。誰かがダートでそれを使ってみましたか?

私の計画(ダートの知識はほとんどありません)は次のとおりです。

  • 私のhtmlに彼らのライブラリを含めてください
  • js.dartパッケージをロードします
  • js.dartを介してモデルをインスタンス化します
  • モデルの読み取りと書き込み。

それは正しいアプローチのように思われますか?または、それを行うためのはるかに良い方法はありますか?

ありがとう

4

3 に答える 3

10

jsパッケージを介して任意のJavascriptライブラリを使用できます。

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'}));
}

上記のDartコードは、次の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})

于 2013-02-16T11:27:52.333 に答える
1

Dartにfirebase.jsライブラリのラッパーがあります:https ://github.com/firebase/firebase-dart/ (pubでも入手可能)。このスレッドで説明されているようにdart:jsを使用するため、firebase.jsを含める必要があります。

于 2014-01-02T19:38:21.730 に答える
0

Dartがここに到達したときに、「例外の発生:ReferenceError:ReceivePortSyncが定義されていません」というエラーメッセージが表示されました。

    js.scoped (() {

    });

DartでFirebaseを使用するには、追加のコード行が必要です。「packages/browser/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>

-----------------編集8月15日----------

js.scoped is no longer needed in the newer version of interopt.js 
于 2013-08-01T00:03:46.750 に答える