Google Dart 介紹

3,625 views

Published on

Published in: Education, Technology, Sports
3 Comments
5 Likes
Statistics
Notes
No Downloads
Views
Total views
3,625
On SlideShare
0
From Embeds
0
Number of Embeds
9
Actions
Shares
0
Downloads
19
Comments
3
Likes
5
Embeds 0
No embeds

No notes for slide

Google Dart 介紹

  1. 1. Google Dart 介紹 Ticore Shih 2013/07/04
  2. 2. Dart 是什麼? • 一個全新的語言 • 針對結構化 Web 開發 • 直譯式執行 • 具有獨立的 VM • 高效能 • 沒有意外的 OOP • 多個 Isolate,單一執行緒 • 具有一定的相容性
  3. 3. 為什麼需要 Dart ? • 開發複雜且高效的 Web Application
  4. 4. 充滿意外的 Javascript ? • parseint radix parseInt('fuck'); // NaN parseInt('fuck', 16); // 15 • why am i a number "Why am I a " + typeof + ""; // "Why am I a number" • infinity madness parseFloat( 'Infinity' ) // returns Infinity Number( 'Infinity' ) // returns Infinity parseInt( 'Infinity' ) // returns NaN http://wtfjs.com/
  5. 5. Dart 全面改善 結構、語法、語意 核心庫、效能 測試、除錯、工具
  6. 6. Dart 背景 • Power by Google • Lars Bak - V8, JVMs • Gilad Bracha - Java JVM Spec. • 80+ Engineers • Syntax – Java, C#, C++, ActionScript, JavaScript
  7. 7. Dart 跨平台 用同一種語言開發多種平台 – Web Server – Web Application – Mobile Application – Command-line Application
  8. 8. Dart 效能 • DartVM 2x of V8 • Dart2JS ~= Plain JS http://www.dartlang.org/performance http://github.com/xxgreg/deltablue
  9. 9. DeltaBlue
  10. 10. Dart 相容性 • 語法特色能完整編譯為 JS • 支援各種瀏覽器最後兩版 • 利用既有 JS 庫 - JS Interop • 支援 SourceMap 除錯
  11. 11. 和諧 Harmony • 從另一個角度看 Web 開發 • 長期可能取代 Android Java • Dart 亦實作 ECMA 6 部分特色
  12. 12. Dart 開發工具 • Dart Editor – Dartium - Chromium w/ Dart VM – Dart SDK • dart • dart2js • analyzer • dartdoc • pub http://www.dartlang.org/docs/editor/
  13. 13. Hello Dart! (Command-line App) main() => print("Hello Dart!"); main () { print("Hello Dart!"); }
  14. 14. Hello Dart! (Web App) <!DOCTYPE html> <html> <body> <script type="application/dart"> main() { print("Hello Dart!"); } </script> </body> </html>
  15. 15. Dart in HTML 限制 • 一頁只能有一個 Dart Script Tag • 整頁載入後才執行 main 進入點 • 不能使用 Inline Listener • 不能動態注入 Script Tag http://www.dartlang.org/articles/embedding-in-html/
  16. 16. Dart Web UI • ToDoMVC – Dart Editor Built-in Example • Dart Widgets – http://kevmoo.github.io/widget.dart/
  17. 17. Dart Web Server • HTTP Time Server – Dart Editor Built-in Example • WebSocket Chat Server & Client – http://www.dartlang.org/docs/dart-up- and-running/contents/ch05.html
  18. 18. Dart StageXL http://www.stagexl.org/
  19. 19. ToolKit for Dart StageXL http://toolkitfordart.github.io/
  20. 20. DARTENDO NES 模擬器 http://dartendo.appspot.com/
  21. 21. Rikulo Framework http://www.rikulo.org/
  22. 22. Dart 語言特色 • 只有 true 為真 • null vs. undefined • 簡易物件相等性 • 所有東西皆為物件 • 所有物件皆有 hashCode
  23. 23. Dart 字串 • 代換字串 "Hello $name!"; "Hello ${ name }!"; • 原始字串 r'raw string. x00an'; • 多行字串 '''Multi-line string.'''; • 鄰接字串 "String 1" 'String 2';
  24. 24. Dart 語彙空間 • 真實語彙空間 • for loop 語彙空間 • No hoisting
  25. 25. Dart 型別 • 選擇性型別宣告 • 型別檢查 – 開發期、執行期、不檢查 • runtimeType • 支援泛型
  26. 26. Dart 函式 • 一級公民 • Closure • 具名可選參數 • 循序可選參數 • 定義函式變數型別
  27. 27. Dart 類別宣告 • 類別即介面 • 抽象類別 • Mixin • 泛型
  28. 28. Dart 類別建構 • 工廠模式 • 具名建構子 • 常數建構子
  29. 29. Dart 類別成員 • 私有成員 • getter / setter • 模擬函式呼叫 • noSuchMethod
  30. 30. Dart 運算子 • 多載運算子 < , > , <= , >= , == , - , + , / , ~/ , * , % , | , ^ , & , << , >> , []= , [] , ~ • 階層運算子 ..
  31. 31. Dart 註解 • 單行註解 // 一般註解 /// 文件註解 • 多行註解 /* 一般多行註解 */ /** 文件多行註解 */ • 巢狀註解 /* /* 巢狀註解 */ */ http://www.dartlang.org/articles/doc-comment-guidelines/
  32. 32. Dart 結構化管理 • allow top-level variable, function, getter/setter, class • declare library part files • import library import as, hide, show export • library's visibility
  33. 33. Dart 非同步特色 • mixing sync, async call • mixing parallel, sequential async call • async try-catch-finally • pass value or error object
  34. 34. Dart Async Future new Future ( ... ) .then ( onValue : ... , onError : ... ) .catchError ( ... , { bool test : ... } ) .whenComplete ( ... ); Future.wait( <Future> [ ... ] );
  35. 35. Dart Async Error Flow new Future( ... ) .then ( onValue : ... , onError : ... ) .catchError ( ... ) .whenComplete ( ... );
  36. 36. Dart 更多特色 • Lazy Load Library http://blog.sethladd.com/2013/04/lazy-load-libraries-in-dart.html http://api.dartlang.org/docs/bleeding_edge/dart_async/DeferredLibrary.html • Reflection (Mirror) http://www.dartlang.org/articles/reflection-with-mirrors/ • Metadata (Annotation) http://futureperfect.info/2013/06/20/a-case-for-metadata.html • Enum http://news.dartlang.org/2013/04/enum-proposal-for-dart.html • SIMD http://www.dartlang.org/slides/2013/02/Bringing-SIMD-to-the-Web-via- Dart.pdf
  37. 37. Dart 語法代換表 http://synonym.dartlang.org/
  38. 38. Dart Built-in API http://api.dartlang.org/docs/releases/latest/
  39. 39. Dart 3rd Packages http://pub.dartlang.org/packages
  40. 40. Dart Style Guide http://www.dartlang.org/articles/style-guide/
  41. 41. http://www.dartlang.org/ http://try.dartlang.org/ http://blog.dartwatch.com/

×