Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Unified Diff: pkg/js/README.md

Issue 1411503002: pkg/js: improved readme, added example (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: nits Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | pkg/js/example/chart.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/js/README.md
diff --git a/pkg/js/README.md b/pkg/js/README.md
index 67580adc58d6d592eba9fb06f33db2b976e5af94..af4b9314e7f07024394cffccb9ac6d15f784a1a1 100644
--- a/pkg/js/README.md
+++ b/pkg/js/README.md
@@ -1,7 +1,86 @@
-The package now only contains annotations specifying the shape of the
-JavaScript API to import into Dart.
+Methods and annotations to specify interoperability with JavaScript APIs.
-The core implementation is defined directly in Dart2Js, Dartium, and dev_compiler.
+*Note: This package is beta software.*
+
+*Note: This packages requires Dart SDK `>=1.13.0-dev.7`.*
+
+### Adding the dependency
+
+Add the following to your `pubspec.yaml`:
+
+```yaml
+dependencies:
+ js: ^0.6.0-beta
+```
+
+#### Passing functions to JavaScript.
+
+If you are passing a Dart function to a JavaScript API, you must wrap it using
+`allowInterop` or `allowInteropCaptureThis`.
+
+### Examples
+
+#### Calling methods
+
+```dart
+// Calls invoke JavaScript `JSON.stringify(obj)`.
+@Js("JSON.stringify")
+external String stringify(obj);
+```
+
+#### Classes and Namespaces
+
+```dart
+@Js('google.maps')
+library maps;
+
+// Invokes the JavaScript getter `google.maps.map`.
+external Map get map;
+
+// `new Map` invokes JavaScript `new google.maps.Map(location)`
+@Js()
+class Map {
+ external Map(Location location);
+ external Location getLocation();
+}
+
+// `new Location(...)` invokes JavaScript `new google.maps.LatLng(...)`
+//
+// We recommend against using custom JavaScript names whenever
+// possible. It is easier for users if the JavaScript names and Dart names
+// are consistent.
+@Js("LatLng")
+class Location {
+ external Location(num lat, num lng);
+}
+```
+
+#### Maps
+
+Dart `Map` objects, including literals, are "opaque" in JavaScript.
+You must create Dart classes for each of these.
+
+```js
+// JavaScript
+printOptions({responsive: true});
+```
+
+```dart
+// Dart
+void main() {
+ printOptions(new Options(responsive: true));
+}
+
+@Js()
+external printOptions(Options options);
+
+@Js()
+class Options {
+ external bool get responsive;
+
+ external factory Options({bool responsive});
+}
+```
## Contributing and Filing Bugs
@@ -11,5 +90,5 @@ We also love and accept community contributions, from API suggestions to pull re
Please file an issue before beginning work so we can discuss the design and implementation.
We are trying to create issues for all current and future work, so if something there intrigues you (or you need it!) join in on the discussion.
-All we require is that you sign the
+Code contributors must sign the
[Google Individual Contributor License Agreement](https://developers.google.com/open-source/cla/individual?csw=1).
« no previous file with comments | « no previous file | pkg/js/example/chart.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698