【文章內容使用 Gemini 1.5 Pro 自動翻譯產生】
宣佈 Dart 2 穩定版和 Dart Web 平台
今天,我們宣佈 Dart 2 穩定版正式發佈,其中包括 Dart Web 平台的重寫,它提供了生產力、效能和可擴展性的獨特組合。
Flutter 開發者已經享受 Dart 2 的許多優點,因為 Flutter 幾個月來一直在捆綁 Dart 2 SDK 的預發佈版本。然而,由於框架和語言之間的緊密耦合,Dart 2 的穩定版是 Flutter 穩定版發佈的另一個重要里程碑。如果您還沒有安裝 Flutter,請由此開始。
隨著 Dart 2 的發佈,Web 開發者現在可以利用相同的語言、函式庫和工具以及許多 Web 專用的增強功能。Web 開發者應從開始使用頁面開始,以獲取有關安裝工具和建立第一個應用程式的說明。
Dart:越來越受歡迎
Dart 2 標誌著 Dart 作為一種主流程式語言的重生,專注於為行動和 Web 應用程式實現快速開發和出色的使用者體驗。我們希望讓構建客戶端應用程式的開發人員提高生產力,使用一種語言、框架和組件來減少樣板程式碼,讓他們專注於業務邏輯,並使用能夠及早識別錯誤、實現強大除錯功能並提供小型、快速執行時程式碼的工具。
在過去的一年中,Dart 經歷了巨大的成長。我們自己的分析表明,外部使用量成長了十倍。在上個季度,根據拉取請求的衡量標準,Dart 是 GitHub 上成長最快的語言之一;StackOverflow 問題的成長也生動地展示了 Dart 的發展勢頭:
在內部,Dart 是 Google 用於 Web 應用程式開發的少數幾種語言之一,擁有來自數十個不同專案的數百萬行程式碼,包括 Google Ads、Google Shopping 和我們自己的內部基礎架構團隊。
事實上,您可能已經在使用 Dart 而沒有意識到:流行的 Sass 樣式表預處理器 最近用 Dart 重寫,使其更快、更可攜帶且更容易編寫。Sass 現在作為 Homebrew 和 Chocolatey 上的獨立可執行檔發佈,並在 npm 上編譯為純 JavaScript。Dart 可以輕鬆地在任何地方安裝應用程式,而無需外部相依性,並且可以融入使用 Dart 和不使用 Dart 的人的工作流程中。
Dart 2 專注於三個領域:強化和收緊語言、開發我們對 Web 和行動框架的支援,以及將支援 Google 使用 Dart 的一些工具和組件帶到外部世界。本文的其餘部分將探討這些主題。
Dart 2:客戶端優化的語言
正如我們在二月 強調的,Dart 類型系統是健全的。這意味著在使用者執行您的應用程式之前(在分析和編譯期間)就會發現一大類問題。當我們將 Dart 擴展到 Google 內部極其龐大的應用程式時,類型系統在開發週期的早期捕獲了更多錯誤,從而提高了生產程式碼的品質。
使用 Dart 2,您無法進入表達式求值結果與表達式的靜態類型不符的狀態。這意味著您可以將程式碼庫擴展到數百萬行,處理大型重構專案,並自信地部署程式碼。
別擔心:健全性並不意味著大量的樣板程式碼。類型系統包括進階推斷,即使是泛型類型參數。
1 | final _field = [3.14, 6.28]; |
要了解更多關於 Dart 2 類型系統的資訊,請查看此頁面。
如先前的部落格文章所述,Dart 2 還減少了幾個關鍵領域的語言儀式:例如,new
關鍵字現在是可選的,而 const
關鍵字在常數環境中是可選的。
最後,我們在幕後做了很多工作來統一各種支援工具,使用一個共同的前端,現在支援我們的編譯器和執行時。這確保了我們使用者的現在的一致性,並承諾在 Dart 持續發展的過程中提高新功能的速度和品質。
Web 上的 Dart:豐富而強大的框架
Web 應用程式從一開始就是 Dart 使命的核心。事實上,Google 的大多數 Dart 開發都是針對 Web 應用程式。其中最大的一個是 Google Ads,它為數十億美元的網路經濟提供動力。在將他們的程式碼遷移到 Dart 的過程中,他們將 UI 程式碼庫的大小減少了 40%,同時提高了開發人員的生產力和應用程式品質。
雖然核心 Dart SDK 提供了存取現代瀏覽器 API 的函式庫,但我們也支援一個強大的受 Angular 啟發的框架,用於構建複雜的 Web 應用程式。作為 Dart 2 的一部分發佈的 AngularDart 5 利用了 Dart 的健全類型系統和新的構建系統(如下所述)在開發過程中提供快速增量構建,並在您準備部署時提供更小的已編譯 JavaScript。
此版本的一個主要重點領域是改進在頁面加載時處理的程式碼量,顯著減少了網頁的「互動時間」。與 AngularDart 4 相比,許多應用程式的程式碼大小減少了一半以上。
為了展示 Dart Web 平台的改進,我們構建了一個基於 Dart 的 HackerNews 網站客戶端實作,作為一個漸進式 Web 應用程式;這與其他範例實作一起發佈在流行的 HNPWA 網站上。使用構建 Dart Web 應用程式的最佳實務,我們能夠提供功能齊全的體驗,在現代設備上在一秒鐘內即可完全互動,在中等行動設備上在緩慢的 3G 網路上在五秒鐘內即可完全互動。即使與針對較小型應用程式進行優化的輕量級 Web 框架相比,這也具有競爭力。
我們的框架投資延伸到我們的核心組件,我們也更新了這些組件。您現在可以存取 100 個新的類別,包括許多日期、時間和選單 Material 組件。您可以在組件庫中瀏覽我們的所有組件。
Dart 2 的彈性工具
使用 Dart 2,Dart 成為一流的編譯為 JavaScript 的語言,具有 Web 開發人員期望的開發週期和出色的執行時效能特徵。這是同時提供大多數以 JS 為目標的語言不提供的優點:健全的類型系統和出色的原生行動應用程式支援。
使用 Dart 2,我們的 Web 工具採用 100% JavaScript 開發模型,並使用兩個互補的 JavaScript 編譯器。開發編譯器 dartdevc 提供快速增量編譯,同時產生易於閱讀和除錯的 JavaScript。這讓我們的生產編譯器 dart2js 可以專注於為行動裝置的漸進式 Web 應用程式和桌面的複雜企業體驗產生高度優化的 JavaScript。這兩種編譯器都利用 Dart 的健全類型系統來優化它們的輸出。
我們的 Web 工具基於新的構建系統構建,該系統旨在快速、可除錯且可擴展。現在,諸如產生序列化程式碼、將 Sass 編譯為 CSS 以及將 Dart 編譯為 JavaScript 之類的任務都發生在一個工具鏈中,該工具鏈支援在您變更應用程式部分內容時進行快速增量更新。構建系統也被設計為支援 Web 以外的用途。例如:Flutter 開發人員正在使用它來產生 JSON 序列化程式碼。
使用 Dart 2,我們還擁有一套擴展的開發人員工具。除了支援 Android Studio 和 JetBrains 套件工具(包括 IntelliJ IDEA 和 WebStorm)之外,我們還支援 Visual Studio Code 和 Dart Code 擴展。我們也有一個很棒的實驗暫存區:DartPad,它已針對 Dart 2 進行了完全更新。
最後,Dart SDK 還附帶了一套其他有用的工具:與我們的套件網站一起使用的套件管理器、靜態分析器、您可以從命令列或作為套件使用的 linter,以及用於Web 文件和符合 Dart 樣式指南的程式碼格式化的工具。
了解更多
查看開始使用 Flutter 和 Dart Web 工具集的說明。
發行說明提供了自 Dart 1 以來進行的許多其他較小改進的詳細技術說明,其中一些是對舊 Dart 程式碼的重大變更。如果您遇到 Google 搜尋無法解決的問題,我們建議您從 StackOverflow開始。訂閱 Dart 公告郵件列表並在 Twitter 上關注我們以獲取更新。我們也希望在我們的社群中看到您,例如 Gitter聊天室和 r/dartlang subreddit。
謝謝
Dart 已成為一種針對 Web 和行動開發進行優化的通用語言。我們已經開發 Dart 2 多年,在此期間,它觸及了我們生態系統的各個方面,並且需要遷移數百萬行程式碼和數百個套件。
我們感謝 Dart 和 Flutter社群以及數百名幫助我們完成這段旅程的 Google 工程師。沒有你們,我們不可能做到這一點!
宣佈 Dart 2 穩定版和 Dart Web 平台 最初發佈於 Medium 上的 Dart,人們在那裡透過突出顯示和回應這個故事來繼續討論。