(翻譯)Dart語言概覽

davelet發表於2011-11-19

技術概論

 

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開發:

Core Library

包括了介面來支援普通的資料結構和操作.

    DOM Library

·        Iterable

·        Map

·        Comparable, Hashable, and Pattern


相關文章