Firebase鍵值存儲看起來很有趣,並且與Dart的HTML框架一起使用會很有趣。有沒有人試過使用Dart內的Firebase JavaScript庫?
他們提供了一個用於讀/寫他們的模型的JavaScript庫。有沒有人試過用Dart使用它?
我的計劃(基於非常小飛鏢知識)是:
- 包括他們的圖書館在我的HTML
- 裝入js.dart包
- 通過js.dart 實例化一個模型
- 通過模型進行讀寫。
這似乎是正確的做法?或者,有沒有更好的方法呢?
感謝
Firebase鍵值存儲看起來很有趣,並且與Dart的HTML框架一起使用會很有趣。有沒有人試過使用Dart內的Firebase JavaScript庫?
他們提供了一個用於讀/寫他們的模型的JavaScript庫。有沒有人試過用Dart使用它?
我的計劃(基於非常小飛鏢知識)是:
這似乎是正確的做法?或者,有沒有更好的方法呢?
感謝
你可以通過js package使用任何JavaScript庫。
對於Firebase你必須:
pubspec.yaml
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})
。
太棒了!非常感謝 – 2013-02-16 18:56:10
自該初始線程以來,已經過了很多時間。現在,pub中有一個firebase包:https://pub.dartlang.org/packages/firebase – Aaron 2014-11-14 11:38:18
在更新版本的dart中,與javascript interop交互的語法已更改。此示例不適用於Firebase 3.0。 – BeatingToADifferentRobot 2016-06-17 16:54:26
當Dart到達這裏時,我收到了錯誤信息「Breaking on exception:ReferenceError:ReceivePortSync is not defined」。
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>
-----------------編輯08月15日----------
js.scoped is no longer needed in the newer version of interopt.js
提交我的答案後,_js_包引入了'interop.js'。我已經更新了它。謝謝。 – 2013-08-01 12:40:34
現在有一個包裝對於Dart中的firebase.js庫,這裏是:https://github.com/firebase/firebase-dart/(也可在pub上找到)。它使用dart:js在本主題中討論,因此仍然需要包含firebase.js!
[Firebase創始人]沒有意識到有人試圖這樣做,但我很樂意看到它的工作。如果你得到一個實施工作,請讓我們知道! – 2013-02-16 01:17:49
嗨,安迪,你能夠得到這個嗎?我是看着爲個人項目做同樣的事情。 – Riz 2013-08-20 17:30:36
有趣的你應該問。我剛回來看看Dart。有這麼多喜歡它。我只希望它實際上是Smalltalk ;-)無論如何,簡短的答案是'不',但在線程底部的一些信息看起來很有希望。 – 2013-08-21 00:23:41