GoogleのDart開発チームからビデオで挨拶
Dartの基本的な文法を話してくれるスピーカーが雪の影響で遅れて、場つなぎの説明があって
会場の注意事項とかパフォーマンスの話しとか
型はあるけど、実行時に型情報を捨てている。
Dartとは
Googleが開発したプログラミング言語
JavaScriptに置き換わるブラウザ組み込みのスクリプト言語を目指して開発された
開発環境
DartEditor
EclipseベースのIDE
DartでHello World
Dartの動作環境
・DartVM搭載のブラウザで直接動作
Dart1.1はJSより25%高速
・”dart2js”でJSに変換して動かす
Dartの歴史
2011年10月Dart発表(early preview)
2013年11月SDK1.0正式リリース
2014年2月 Dart FLIGHT SCHOOL
Jsはネストが深くなる→Callback Hell→Dartなら深くならない
参考:What’s New in Dart :Youtube
ローカル変数
querySelector(xxxxx)
ServerSide Dart
サーバーもクライアントもDartで書ける
FlogCはdart2jsになる前のもの。
——
前半:文法まわり
class Hug{ ←クラスが作れる
final num strength;
Hug(this.strength); ←コンストラクタ
Hug.bear(); strength =100;
Hug operator +(Hug(other){
return new Hug(strength +
JavascriptはJqueryとかCoffeeスクリプトとかいろんなものを入れてるから、クリーンじゃない。それを解決するために、Dartができた
Dartはthisはthis。javaの感覚で使ってよい
後半:ライブラリなど
Pub(package manager for Dart) https://pub.dartlang.org
Bootjack is a porting of Twitter Bootstrap 3.0.x in Dart.
DartEditorに統合されており、簡単に利用することができる(yamlに1行かくだけ)
New Fileは意外と賢い。入力したファイルタイプでひながたを作ってくれる。たとえば、a.htmlとかするとhtmlのひな形入りのファイルを作ってくれる
dart:html
DOM操作を行うためののライブラリ。
HTMLの要素を選択するquerySelectorやInputElementなどのHTMLの要素のクラスが含まれています。
UnkwownElementがなんなのか分からなかった。ドイツ語のページに行っちゃう(´・ω・`)
単一の要素の選択
ElementList querySelectorAll
“リストはリスト”
イベントハンドラ
HTML要素のイベントハンドラはStreamで提供されます。
Streamとは、連続するデータを扱う枠組みです。dart:asyncのライブラリの紹介時に説明
dart:io
ファイル、ソケット、HTTP、プロセスなどをサポートするサーバーアプリケーション向けのライブラリ。
ブラウザベースでは動かない
dart:async
非同期処理を行うためのライブラリでFutureやStreamなどが含まれる。
Future:
将来返る値を受け取るためのオブジェクト。
多くのライブラリにおいてDartではCallbackではんく、Futureを利用する
FutureはCompleterがセット。
Stream:
連続するデータを受け取る箇所で利用される。
HTML要素のonClickはクリックイベントを連続する要素としてみてStreamとして提供されています。
Dartはコールバックを使うのではなくて、FutureとかStreamを使って非同期処理を行う。
Dartはシングルスレッドのモデル。
EventQueueの内容をEventLoopが順次実行していく。
Isolate
デバッガやStackTraceで見かけるIsolateとはいったい何か?
→IsolateはDartの並行処理モデル
・スレッドに似た独立したワーカー
・Isolate間でメモリは一切共有しない
・ReceivePort,SentPortを利用して文字列のメッセージによる通信でIsolate間は連携を行う。
常に値はコピーされて送信される。
メモリは共有しないため排他制御を行わなくてよい!
使い方
Isolate.spawn(entryPoint, receivePort.sendPort)
DartはDOM構築が終わった後にmain()が実行されることを保証している。
なので、jsみたいにDOM構築が終わったらという条件判断を入れる必要がない。
privateはライブラリ単位。
なので、おなじライブラリの中にあるクラスの中のprivateの値は、そのライブラリのクラスの外からアクセス可能
—–
Dartのコードラボ
AngularDartのコードラボ
comments powered by Disqus