從零開始開發純血鴻蒙應用之探析倉頡語言與ArkTS的差異

探析倉頡語言與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之前,除了上面這些大方面上的差異,還存在很多細節上的差異,有興趣的,可以自行探索。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/87874.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/87874.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/87874.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Cursor/VScode ,點擊運行按鈕,就打開新的終端,如何設置為在當前終端運行文件而不是重新打開終端----一招搞定篇

我發現就是,我運行.py,點擊完運行按鈕,就給我重新打開一個終端,然后新的終端是在base環境中的,就跟麻煩 還得在當前終端輸入python3 test.py 來運行文件。能不能修改。1、打開cursor或者vscode 。 同時按下 ctrlshiftp…

【STM32實踐篇】:I2C驅動編寫

文章目錄I2C 物理層I2C 協議層1. 數據有效性2. 起始和停止信號3. 應答響應4. 總線的尋址方式5. 數據傳輸5.1 主機向從機發送數據5.2 主機由從機中讀數據5.3 I2C通信復合格式I2C 驅動編寫1. 配置 SCL 和 SDA2. I2C起始信號和停止信號3. 等待從設備應答4. 主機發送ACK和NACK信號5…

ragflow本地部署教程linux Ubuntu系統

以下是一份在 Ubuntu 系統上本地部署 RAGFlow 的詳細教程。 一、基礎環境準備 1.硬件要求 –CPU ≥ 4核 –RAM ≥ 16 GB –磁盤空間 ≥ 50 GB(建議 SSD) 2.系統配置 更新系統 sudo apt update && sudo apt upgrade -y 設置內核參數&#xff…

[netty5: WebSocketClientHandshaker WebSocketClientHandshakerFactory]-源碼分析

在閱讀這篇文章前,推薦先閱讀以下內容: [netty5: WebSocketFrame]-源碼分析[netty5: WebSocketFrameEncoder & WebSocketFrameDecoder]-源碼解析 WebSocketClientHandshakerFactory WebSocketClientHandshakerFactory 是用于根據 URI 和協議版本創…

4.2 如何訓練?個 LLM

?般??,訓練?個完整的 LLM 需要經過圖1中的三個階段——Pretrain、SFT 和 RLHF。 4.2.1 Pretrain 預訓練任務與架構 任務類型:采用因果語言模型(CLM),通過預測下一個 token 進行訓練,與傳統預訓練模型…

Qt中的QObject::moveToThread方法詳解

一、QObject::moveToThread方法QObject::moveToThread()是Qt框架中一個非常重要的功能,它允許改變QObject及其子對象的線程關聯性。這個功能在多線程編程中特別有用,可以將耗時操作移到工作線程執行,避免阻塞主線程/GUI線程。基本用法void QO…

【9】用戶接入與認證配置

本文旨在幫助網絡管理員在 SD-WAN 環境中實現安全、穩定的用戶接入與認證策略,涵蓋本地/遠程認證、權限管理、密碼策略、SSH、會話控制等關鍵配置要素。 1.密碼策略與賬戶安全 從 IOS XE SD-WAN 17.3.1 起,Cisco 引入密碼強化功能,用于統一用戶密碼的復雜度與有效性要求。密…

第十六節:第三部分:多線程:線程安全問題、取錢問題的模擬

線程安全問題介紹:取錢的線程安全問題 取錢的線程安全問題 取錢案例需求分析 線程安全問題出現的原因 代碼:模擬線程安全問題(上述取錢案例) Account類(賬戶類) package com.itheima.day3_thread_safe;pu…

APE:大語言模型具有人類水平的提示工程能力

摘要 通過以自然語言指令作為條件輸入,大型語言模型(LLMs)展現出令人印象深刻的通用計算能力。然而,任務表現嚴重依賴于用于引導模型的提示(prompt)質量,而最有效的提示通常是由人類手工設計的…

X86 CPU 工作模式

1.概述 1.實模式 實模式又稱實地址模式,實,即真實,這個真實分為兩個方面,一個方面是運行真實的指令,對指令的動作不作區分,直接執行指令的真實功能,另一方面是發往內存的地址是真實的&#xff…

Java設計模式之行為型模式(策略模式)介紹與說明

一、策略模式簡介 策略模式(Strategy Pattern)是一種行為型設計模式,它定義了一系列算法,并將每個算法封裝起來,使它們可以相互替換,且算法的變化不會影響使用算法的客戶。策略模式讓算法獨立于使用它的客…

【BIOS+MBR 微內核手寫實現】

本文基于BIOS+MBR的架構,從四部分講解微內核是如何實現的: 1)搭建微內核編譯調試環境 2)梳理微內核的代碼結構:偽指令講解 3)手寫實現微內核框架,輸出簡單的字符串 4)講解微內核啟動階段的具體運行過程 先完成內核工程創建,如下圖 我們這里使用nasm風格的匯編編寫,…

從C/C++遷移到Go:內存管理思維轉變

一、引言 在當今高速發展的軟件開發世界中,語言遷移已成為技術進化的常態。作為一名曾經的C/C開發者,我經歷了向Go語言轉變的全過程,其中最大的認知挑戰來自內存管理模式的根本性差異。 我記得第一次接觸Go項目時的困惑:沒有析構函…

正確設置 FreeRTOS 與 STM32 的中斷優先級

在裸機開發(非 RTOS)時,大多數 STM32 外設的中斷優先級通常不需要手動配置,原因如下: ? 裸機開發中默認中斷優先級行為 特點說明默認中斷優先級為 0如果你不設置,STM32 HAL 默認設置所有外設中斷為 0&…

EasyExcel之SheetWriteHandler:解鎖Excel寫入的高階玩法

引言在 EasyExcel 強大的功能體系中,SheetWriteHandler 接口是一個關鍵的組成部分。它允許開發者在寫入 Excel 的 Sheet 時進行自定義處理,為實現各種復雜的業務需求提供了強大的支持。通過深入了解和運用 SheetWriteHandler 接口,我們能夠更…

Python單例模式魔法方法or屬性

1.單例模式概念定義:單例模式(Singleton Pattern)是一種創建型設計模式,它確保一個類只能有一個實例,并提供一個全局訪問點來獲取該實例。這種模式在需要控制資源訪問、配置管理或協調系統操作時特別有用。核心特點:私有構造函數:防止外部通過…

【Kubernetes系列】Kubernetes 資源請求(Requests)

博客目錄 引言一、資源請求的基本概念1.1 什么是資源請求1.2 請求與限制的區別 二、CPU 請求的深入解析2.1 CPU 請求的單位與含義2.2 CPU 請求的調度影響2.3 CPU 請求與限制的關系 三、內存請求的深入解析3.1 內存請求的單位與含義3.2 內存請求的調度影響3.3 內存請求的特殊性 …

大型語言模型中的自動化思維鏈提示

摘要 大型語言模型(LLMs)能夠通過生成中間推理步驟來執行復雜的推理任務。為提示演示提供這些步驟的過程被稱為思維鏈(CoT)提示。CoT提示有兩種主要范式。一種使用簡單的提示語,如“讓我們一步一步思考”,…

Private Set Generation with Discriminative Information(2211.04446v1)

1. 遇到什么問題,解決了什么遇到的問題現有差分隱私生成模型受限于高維數據分布建模的復雜性,合成樣本實用性不足。深度生成模型訓練依賴大量數據,加入隱私約束后更難優化,且不保證下游任務(如分類)的最優解…

C++編程語言入門指南

一、C語言概述 C是由丹麥計算機科學家Bjarne Stroustrup于1979年在貝爾實驗室開發的一種靜態類型、編譯式、通用型編程語言。最初被稱為"C with Classes"(帶類的C),1983年更名為C。它既具有高級語言的抽象特性,又保留了底層硬件操作能力&…