Dart語言詳解(一)——詳細介紹

Demo_Yang發表於2020-03-09

Dart語言詳解(一)——詳細介紹
想學Flutter,就請關注這個專欄
Flutter系列(一)——詳細介紹

Flutter系列(二)——與React Native進行對比

Flutter系列(三)——環境搭建(Windows)

Flutter系列(四)——HelloWorld

Dart語言詳解(一)——詳細介紹

文件歸檔:

github.com/yang0range/…


之前,我們一直在介紹Flutter相信大家對Flutter有一個總體的認識,,那麼現在我們就要介紹一下Flutter使用的程式語言Dart


Flutter的特性離不開Dart特別是讓很多人都非常喜歡的熱過載功能,很大的原因就是因為Flutter使用了Dart,那麼就通過這一篇文章瞭解一下,我們一起了解一下什麼是Dart

Dart的歷史

Dart 1.0是於2013年11月14日由谷歌釋出的,由Lars Bak和Kasper Lund建立。它旨在幫助開發人員構建現代的web和移動應用程式。它涵蓋了客戶機、伺服器和現在的Flutter移動裝置。它提供了一系列工具,包括虛擬機器、核心庫和包管理儲存庫。

什麼是Dart?

Dart 是由谷歌開發的通用的程式語言,它常用於構建web、伺服器、桌面和移動應用程式。

Dart是一種簡潔、清晰、基於類的物件導向的語言,它是基於JavaScript的但是結構要比JavaScript要多。

Dart是一種物件導向的、類定義的、垃圾回收語言。它支援介面、mixin、類物件,具有化泛型、靜態型別等。

物件導向

對於物件導向這個概念,相信瞭解Java的同學對這個概念一定不會陌生。

例如:我們有個Person Object他有很多特徵和行為。
這些都是這個Person Object的屬性。
也就是因為有了這些特徵,行為等等才決定了這個人是誰。

Dart語言詳解(一)——詳細介紹

那麼回到Dart當中,所有的都是物件,那麼在就可以可以跟進物件的屬性的特徵,方法等等來進行程式設計。

之所以我們在這裡又特別強調了一下物件導向的概念,是因為這個概念在Dart語言當中,至關重要!

重要的幾個概念

  1. 在Dart語言中,所有的東西都是物件,無論是變數、數字、函式、null等都是物件,所有的物件都是Object類的子類。

  2. Dart語言是強型別程式設計,一旦確定了型別,那麼就不可以改變變數型別,在編譯時會進行語法減產,但是Dart允許弱型別語言式的程式設計。

  3. Dart程式碼在執行前解析,指定資料型別和編譯時常量,可以提高執行速度。

  4. Dart語言的統一入口是main函式。

  5. Dart的私有特性是在變數或者函式名前面加上下劃線_。

  6. Dart支援async/await非同步處理。

Dart的部分特性

1.Dart是AOT(Ahead Of Time)編譯的,可編譯成快速,可預測的原生程式碼。

2.Dart可以JIT(Just In Time)編譯,開發週期快,為Flutter熱過載提供基礎。

3.Dart可以輕鬆建立60fps執行的流暢動畫和轉場。

4.Dart的宣告式程式設計佈局,易於閱讀和視覺化,不需要單獨的宣告式佈局語言,如:XML,JSX。

5.Dart非常易於學習,具有靜態和動態語言,程式設計人員都熟悉的特性。

Flutter為什麼選擇使用Dart?

相信,看過上面的內容的小夥伴,多多少少對於Dart有個簡單的認識了,那麼為什麼Flutter為什麼採用Dart語言呢?

可以歸結為以下的三個方面:

優化記憶體

Flutter框架使用函式式流,它重度依賴底層記憶體分配器對小量的、短生命週期記憶體分配的有效處理,在缺乏這種特性的語言中Flutter無法有效地工作。

開發者生產效率

Flutter的一個主要的價值主張就是節省工程資源,開發者通過同一套程式碼庫可以實現iOS和Android兩個平臺的應用開發工作。使用高產的語言提高了開發效率,也使得Flutter更具吸引力,這對於我們框架團隊和開發者都異常重要。 構建Flutter主體的語言和我們提供給使用者的是相同的,所以我們需要在100k行程式碼的基礎上保證高效,並且保證不犧牲framework和widgets對讀者的可讀性。

物件導向

對於Flutter,我們想要一個能夠符合Flutter問題域的語言,即創造視覺使用者體驗,通過面嚮物件語言構建使用者介面框架,業內已經有了幾十年的經驗。當然我們可以使用非物件導向的語言,這將意味著重複發明輪子來解決幾個艱難的問題。此外,大多數的開發者已經擁有物件導向的開發經驗,這使得Flutter開發更加易學。

可預期 高效能

通過Flutter,我們想要給開發者賦能,以開發出快速流暢的使用者體驗。為了達到這一點,我們需要能夠在每個動畫幀執行大量的程式碼。這意味著我們需要一種能夠同時提供高效和穩定效能的語言,不能有周期性的停頓,否則會造成掉幀。

高效的使用

熱過載是Flutter最顯著的特性之一,有了這個特性,我們可以快速並且輕鬆的進行實現、構建UI、新增屬性和修復Bug。熱過載的載入過程就是通過原始碼檔案注入在執行的Dart虛擬機器當中來工作。

Dart的內建庫

包名描述
dart:asynv非同步程式設計,提供Future,Stream類
dart:collection集合
dart:convert不同型別的字元編碼解碼
dart:coreDart語言核心功能,內建型別
dart:html網頁開發用到的庫
dart:io檔案讀寫,IO相關
dart:math數字常量以及函式,隨機演算法等
dart:svg事件和動畫向量圖支援

最後

要想學Flutter,先學Dart

通過這篇文章,我們詳細的介紹了一下Dart語言的“前世今生”。接下來,我們要著重的介紹一些Dart的語法,只有瞭解了相應的語法啊,才能讀懂和寫出程式碼,想要學習的小夥伴,請持續關注吧!

Flutter已經是Top20的軟體庫,通過接下來的一系列的文章,希望我和大家一起來學習Flutter,一起進步,一起有所收穫,掌握未來技術主流的主動權!

有什麼好的建議,意見,想法歡迎給我留言!

歡迎關注公共號

關注公眾號會有更多收穫!

Dart語言詳解(一)——詳細介紹

動動小手指點贊,收藏,關注一鍵三連走一波吧!


相關文章