技術概論
Dart是一種基於類的新式程式語言,用來建立結構化的Web應用。 Dart的目標是開發的建議性、高效性、可擴充套件性,它整合了幾種新的語言特性,具有清晰易讀的語法。
Note: 本文是該語言及其開發環境的早期預覽。現在可能還沒有一些元素,並且我們會根據反饋來調整細節。
關鍵特性
關鍵特性包括:
類
類和介面為高效定義API提供了易懂的支援機制。這樣的設計使得能夠封裝和複用方法和資料。
可選型別
Dart開發者能夠有選擇的為程式碼新增靜態型別。根據程式設計師的愛好和開發平臺,通過歸類程式碼可以從簡易的、未定義型別的試驗原型遷移到複雜的、模組化的應用上。 由於沒有文件會要求解釋程式碼中的型別到底發生了什麼,型別檢測工具只是用來除錯的。
庫
開發者可以建立任何使用者庫,在執行過程中不會發生改變的。獨立開發的程式碼片段可以以來共享庫。
工具
Dart將會包括大量可執行環境、庫、開發工具來支援語言。這些工具使得多產和動態開發成為可能,包括“編輯繼續”除錯和“超越”風格,執行時會在空白處填充。
設計目標
這裡看到的Dart語言還是早期的。以下目標會引導我們改進並精煉開源專案。:
· 建立結構化並且靈活的 web程式語言.
· Dart是輕鬆易學的 .
· 所有Dart語言結構具有高效能 和快速建立能力 .
· Dart適合所有的web裝置 —–電話,平板,筆記本,伺服器.
· 提供工具使得Dart在所以主流瀏覽器上快速執行 .
這些目標解決了以下問題:
· 小指令碼經常發展為沒有明顯結構的大型Web應用—它們很難除錯和維護,另外,這些應用不能被分立為幾個小問題來單獨解決。應用很大後生產力很底下。.
· 指令碼語言流行的原因是它們的輕量級和編寫程式碼的快速性。一般地,應用中不同結果的整合使用註釋而不是語言結構本身。結果除了作者,別人很難維護。
· 對於現存語言,開發者需要選擇到底是用靜態的還是動態的。傳統的靜態語言需要重量級的工具鏈和程式設計風格。
· 開發者還不能建立包括客戶端和伺服器的均衡系統,僅僅除了Node.js和Google Web Toolkit (GWT).
· 不同的語言和格式使得程式碼很累贅和複雜.
程式碼演示
下面是一些程式碼判斷,可以大致瞭解一下Dart.
類和介面
Dart的介面和類提供了很多積木式結果可以複用和封裝。一個interface 定義一個方法和常量的集合,有時候可以從其他介面繼承。一個class 可以實現多個介面但是隻能繼承一個父類。
下面定義了一個介面,並定義了一個類和子類來實現:
1. interface Shape {
2. num perimeter();
3. }
4.
5. class Rectangle implements Shape {
6. final num height, width;
7. Rectangle(num this.height, num this.width); // Compact constructor syntax.
8. num perimeter() => 2*height + 2*width; // Short function syntax.
9. }
10.
11. class Square extends Rectangle {
12. Square(num size) : super(size, size);
13. }
可選型別
Dart混合了靜態和動態檢測。測試到時候,程式設計師可以為簡單原型不指定型別。隨著應用的增大和更穩定,可以新增型別來除錯和在需要的地方強加型別。
比如這裡用Dart語言新建了一個Point類,有2個引數x和y,有2個方法:scale() 和distance().
1. class Point {
2. var x, y;
3. Point(this.x, this.y);
4. scale(factor) => new Point(x*factor, y*factor);
5. distance() => Math.sqrt(x*x + y*y);
6. }
7.
8. main() {
9. var a = new Point(2,3).scale(10);
10. print(a.distance());
11. }
下面是對上面程式碼的引數x,y和factor指定了型別為num,Point 包含2個num型別的值:
1. class Point {
2. num x, y;
3. Point(num this.x, num this.y);
4. Point scale(num factor) => new Point(x*factor, y*factor);
5. num distance() => Math.sqrt(x*x + y*y);
6. }
7.
8. void main() {
9. Point a = new Point(2,3).scale(10);
10. print(a.distance());
11. }
怎麼使用Dart?
可以安裝下面的方法執行Dart:
· 將Dart編譯成JavaScript可以執行在任何瀏覽器:Chrome, Safari 5+, 和Firefox 4+ (並且越來越多)
· 使用Dartboard 編寫、編輯、執行在任何瀏覽器視窗
· 很快: 直接在PC的VM中執行Dart
· 很快: 使用 新 MIME 型別, Dart執行就不需要編譯成JavaScript
Note: Dart Editor 支援 Dart-to-JavaScript的編譯。命令列工具,比如VM和Dart-to-JavaScript 編譯器,並不能直接使用。不過,可以使用Dart project 中的程式碼構建命令列工具。
Dart編輯器
Dart 編輯器可以用來建立、編輯、執行Dart應用。一次點選就能把Dart編譯為JavaScript並在瀏覽器中執行。Dart編輯器支援自動補全和重構。更多資訊檢視Dart Editor tutorial .
Dartboard
可以直接到try.dartlang.org 學習Dartboard,程式碼會執行在遠端伺服器的Dart VM中 。
更多資訊檢視 Dartboard & Language Basics tutorial .
新MIME型別
可以把Dart程式直接繫結進HTML 中,或者可以使用#import或#source宣告匯入外部檔案。下面就是規劃中的新MIME型別, “application/dart”:
1. <html>
2. <body>
3. <script type=”application/dart”>
4. main() {
5. Element element = document.getElementById(`message`);
6. element.innerHTML = `Hello from Dart`;
7. }
8. </script>
9. <div id=”message”></div>
10. </body>
11. </html>
庫
Dart會提供以下庫來支援Web開發:
包括了介面來支援普通的資料結構和操作.
DOM Library
· Iterable
· Map