鸿蒙开发语言与鸿蒙系统分析

前言

对于有前端基础的同学而言,鸿蒙开发的学习其实并不难。目前主流的鸿蒙操作系统可以说有俩个版本一个是openHarmony,另一个就是HarmonyOS。鸿蒙的立项最早可追溯到2012年,知道204年才获批。在发布openHarmony后,华为将其捐给了开放原子开源基金会。基于openHarmony,华为推出了基于微内核的分布式操作系统——HarmonyOS,目前HarmonyOS的最新版本是4.2,而传言中的5.0(Next)版本还未公布。而鸿蒙之父王成录博士也从华为出来创办了深开鸿,尝试基于openHarmony的鸿蒙PC版的研发。

从JavaScript到TypeScript再到ArkTs,这种更迭通常是由于前面的语言有自己的缺陷,或者时代技术发展催生了新的需求,所以才会有新语言提出。鸿蒙开发的语言是基于华为自研方舟编译器编译的ArkTS,作为TS的超集,ArkTS在保留TS基础语法的基础上做了一些拓展。所以如果要学习鸿蒙开发,TS的学习便是必要的。


不同版本语法特性

TS作为基础,其语法理解是非常重要的一个环节。关于TS中各种语法规则,变量的定义,选择循环语句的使用,函数、类、接口的定义与调用是我们学习它的重点。
在学习过程中,我们可以通过习题项目提高对该编程语言的掌握,通过反复练习加深理解。当具备语法基本功之后,针对项目去建立自己的逻辑思路,如何用代码表达意图?如何用代码实现需求?这是我们需要考虑到的。
初步学习过程中,由于目前Next版本并没有发布,我们不可避免的需要先了解当前版本ArkTS的一些语言特性,并同接下来的纯血版做一个对比。

HarmonyOS 4.0&Next(不兼容安卓,弃用aosp)
在这里插入图片描述

附录:

  • JS:弱类型语言,定义变量不需要声明类型(JS定义变量va age=15 age='pink'
  • TS:添加了数据类型定义如:number,boolen,string…(TS定义变量 let age:number=15)
  • ArkTs:TS基础语法+ArkUI(鸿蒙App元素:按钮,文本框 + 状态管理(渲染)
  • ArkTs(Next):使用的TS语法有一些和4.0不同,4.0可以理解为就是TS

1.对象中的属性需要赋默认值(后面必须要给个值如id:number=0)

class Person{
id:number=0
name:string=1
age:number=0
}

建议写代码要习惯注释(写代码毕竟不是写给自己看,在团队分工合作中我们通常需要互相调用,这个时候命名规范和注释就是很重要的。 通常公司也会有代码质量管理部门,他们的专职工作就是检测代码)

对于实际开发中不知道如何赋值的情况,先定义接口(这是一种规范),再定义类

interface UserInfo{
/** 
*头像
*/
avatar:string
/** 
*姓名
*/
name:string;
/** 
*编号
*/
number:string;
/** 
*手机号
*/
phone:string
}

接口作为类型直接用,如何调用?通常通过implements继承 。构造函数则是为了传递变量。其实接口里面加了注释,类里面可加可不加。

class UserInfoModel implements UserInfo{
    /**
     * 头像
     */
    avatar:string="";
    /**
     * 姓名
     */
    name:string="";
    /**
     * 编号
     */
    number:string="";
    /**
     * 手机号
     */
    phone:string="";

    constructor(model:UserInfo){ 
      this.avatar = model.avatar
      this.name = model.name
      this.number = model.number
      this.phone = model.phone
    }
}

new对象,其实就相当于在内存中开辟了一块空间用于储存信息

let userInfo:UserInfoModel = new UserInfoModel({} as UserInfo)

let userInfo:UserInfoModel = new UserInfoModel({} as UserInfo)

2.不支持在运行时改变对象布局(此前TS允许)

class Point{
x?:number = 0
y:number = 0
constructor(x:number, y:number){
this.x = x
this.y = y
}
}
let p1: Point = new Point(1,2)
console.log(p1)
delete p1.x //不允许使用
console.log(p1)

3.解构(析构)用法

//数组解构  next支持
let arr:number[]=[1,2,3]
let a1:number,a2:number,a3:number;
[a1,a2,a3]=arr;//解构用法

let arr:number[]=[1,2,334456]
let a1:number,a2:number,a3:number[];//注意省剩下的值,多个构成数组
[a1,a2,...a3]=arr;//解构,前面依次赋值,后面的全赋值给a3
conslole.log(a3)
//类似剩余函数用法

//对象结构:把对象值拆出来   next不支持
let p={
    name:"james";
    age="38"
    id:12
}
let {name, age, id}=p;

class Address{
     province:string="",
        city:string="",
        arear:string="",
}
class Person{
    id:number= 0,//对象里面又包含一个对象,对象嵌套
    name:string=""
//对象嵌套
    location:Address ={
        province:"",
        city:"",
        arear:"",
    }
}
let per:Person = {id:1,name:"James",location:{province:"上海",city:"上海",area:"黄埔"}};

console.log(per);
per.locatiopn.area="徐汇区";
console.log(per);

let per2:Person =per
per2.locatiopn.area="徐汇区";
console.log(per2);//引用传值,一块类型区,一改都改

//per3需要是一个新的对象,且数据是基于per对象的,但也需要将Area值进行修改,改成"徐汇区"
let per2:Person = {id:1,name:"James",location:{province:"上海",city:"上海",area:"黄埔"}};
per2.locatiopn.area="徐汇区";
console.log(per2);
//解构高效:per3需要是一个新的对象,且数据是基于per对象的,但也需要将name值进行修改,改成"Tony"    next不支持
let per3:Perspn = {...per, name:"Tony"}
console.log(per3);


总的来看HarmonyOS 4.0&Next所使用语言版本版本区别也不大,语法版本基本一致,只是语言检验会更强,API会更丰富。像扫码-拍照-导航这些功能4.0版本都没有,只能用混合开发而Next则会有。


鸿蒙系统分析

作为一款基于微内核的全场景分布式OS,HarmonyOS 有三大特征:

注释:

  • 微内核(只加载核心的,非核心的不要;方便移植)
  • 分布式(多个人干一件事,分工协作,与之相对的是集成)
  • 传统传输文件的方式要么通过USB,要么通过一些软件如微信、QQ、网盘等,这都具有明显的局限性。搭载该操作系统的设备在系统层面融为一体、形成超级终端,让设备的硬件能力可以弹性扩展,实现设备之间硬件互助,资源共享。通过分布式软总线实现全场景数据传输,数据共享 。对消费者而言HarmonyOS 能够将生活场景中的各类终端进行能力整合,实现不同终端设备之间的快速连接、能力互助、资源共享,匹配合适的设备、提供流畅的全场景体验。
    在这里插入图片描述

  • 与基于宏内核的安卓不同,安卓的开发在其他设备发布要是需要进行二次开发的,工作量和成本较大,产品可移植性差。面向开发者,实现一次开发,多端部署。对应用开发者而言,HarmonyOS 采用了多种分布式技术,使应用开发与不同终端设备的形态差异无关,从而让开发者能够聚焦上层业务逻辑,更加便捷、高效地开发应用。

  • 一套操作系统可以满足不同能力的设备需求,实现统一 OS,弹性部署。 对设备开发者而言,HarmonyOS 采用了组件化的设计方案,可根据设备的资源能力和业务特征灵活裁剪,满足不同形态终端设备对操作系统的要求。
    HarmonyOS 提供了支持多种开发语言的 API,供开发者进行应用开发。支持的开发语言包括ArkTS、JS(JavaScript)、C/C++ 、Java,但是从 API8 开始就主推 ArkTS 而放弃了 Java。


总结

关于鸿蒙开发的许多问题无法在本文详尽说明,更多经验还需要自主摸索获得。下期见。

  • 31
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值