探析倉頡語言與ArkTS的差異
- 〇、前言
- 一、IDE 的支持程度不同
- 二、內置組件的使用方式不同
- 三、頁面路由實現方式的不同
- 四、總結
〇、前言
截止到本文發布的日期為止,鴻蒙官方所推薦的開發原生鴻蒙應用的語言,有兩種,分別是擴展自 Typescript 的 ArkTS,以及華為公司自主研發的倉頡語言。那么,這兩種語言在具體開發中,有什么不一樣的地方呢?下面一一介紹。
一、IDE 的支持程度不同
鴻蒙版倉頡語言,目前只有 DevEco Studio 支持,但卻并沒有像 ArkTS 那樣出廠就支持,需要通過加裝插件的形式去賦予 IDE 解析倉頡代碼的能力:
倉頡插件下載地址
二、內置組件的使用方式不同
使用 ArkTS 開發鴻蒙應用時,如果是使用內置組件,那么是完全不用寫導包語句的,直接在 build 函數中使用即可;而到了倉頡語言這邊,這些內置組件的使用,也必須通過導包語句引入,否則編譯器就會標紅報錯:
只有顯式寫上 import ohos.component.Text
,IDE 才不會報語法錯誤:
所以,就只是使用內置組件、而不使用自定義組件的情況而言,ArkTS 腳本會比倉頡腳本的行數少很多,因為 ArkTS 腳本文件頭沒有大量的導包語句。在這里,有必要提供一個建議:在倉頡腳本用導包語句導入內置組件時,都使用 internal 進行修飾
,internal 關鍵字在倉頡語言中,具有如下作用:
在倉頡編程語言中,internal 是一個訪問修飾符,用于控制聲明的可見性。具體來說,internal 修飾的聲明在其當前包及子包(包括子包的子包)內可見。這意味著,使用 internal 修飾的元素可以在同一包內或該包的任何子包中被訪問,但不能跨模塊訪問。
在如圖的兩個構建應用UI的倉頡腳本中,共同地使用到了 Column 等內置組件,但是 second_page.cj 文件中,并沒有出現 Column 的導包語句,IDE 也沒有提示語法錯誤,這正是因為 index.cj 文件中在導入 Column 組件時,使用 internal
修飾了導包語句,對比之下,因為沒有使用 internal 修飾的 Text 組件,就需要在兩個文件中都顯示寫明導包語句。
總結地說,用好 internal 修飾符,可以讓倉頡腳本減少重復的導包語句。
其實,就在上面那張圖中,如果仔細看文件頭,就會發現 package
開頭的一行代碼,這也是倉頡腳本與 ArkTS 腳本的區別。
使用倉頡腳本去構建鴻蒙UI,類似于 Jetpack Compose 構建安卓 UI,特別時代碼腳本的頭部:
三、頁面路由實現方式的不同
同樣適用內置的 router 模塊進行頁面路由時,ArkTS 構建的頁面,必須在 resources 目錄下的 main_page.json 文件中,注冊對應的頁面 url,而用倉頡代碼構建的頁面,則無需如此操作。我猜測,倉頡腳本中 package 語句,在一定程度上具有頁面 url 聲明定義的功能。
四、總結
倉頡語言與ArkTS之前,除了上面這些大方面上的差異,還存在很多細節上的差異,有興趣的,可以自行探索。