鸿蒙的特点

1. 鸿蒙 => 超级小程序

  • 鸿蒙利用反对应用java开发,也反对应用js开发;
  • 应用js开发反对调用零碎级的API,例如摄像头、话筒、WI-FI等。
  • 鸿蒙本人封装了hml、css、js的

2. 鸿蒙 => 可剪裁零碎(微内核)

  • 反对内存为:128KB-128MB-4GB

3. 模改通信协议

  • 对立了IOT互联互通的规范语言

鸿蒙是不是安卓套壳?

1. 安卓零碎

2. 鸿蒙零碎

所以说鸿蒙尽管套上了安卓runtime,但不是简略的套壳,而是新增了很多本人的性能以及鸿蒙的runtime。而且在利用开发层面也定义了本人的sdk(特地是js sdk),在将来鸿蒙的生态成熟之后就能够齐全干掉安卓runtime。

学习鸿蒙开发须要哪些常识?

  1. 前端技术栈:HTML\CSS\JS,类WEB范式编程;鸿蒙零碎没有内置浏览器环境,然而为了升高学习老本;鸿蒙封装了本人的hml标签、js、css等,它们和WEB端语法相似(这些性能曾经很厉害了!)。
  2. 相熟微信小程序:包含页面构造、API、配置形式等和小程序相似。
  3. 相熟Vue2.0:鸿蒙本人实现了相似于VUE2.0D MVVM模式(观察者、数据劫持)
  4. 安卓开发教训:因为它首先要兼容安卓零碎。

鸿蒙的零碎架构

1. 应用层

  • 鸿蒙利用由一个或多个FA(Feature Ability)或者PA(Particle Ability)组成,反对按需下载和加载
  • FA是由UI界面的性能点,提供与用户交互的能力;相似于微前端。
  • PA没有UI界面的性能点,提供后盾运行工作的能力;相似于微服务。

2. 框架层

  • 提供了java/C/C++/JS等用户程序框架和Ability框架
  • 两种UI框架(Java UI框架、JS UI框架)

3. 服务层

  • 鸿蒙零碎的外围能力

4. 内核层

  • 多内核设计,微内核架构

鸿蒙的三类性能点(能力)

1. FA反对Page Ability:

  • Page Ability是FA惟一反对的模板,用于提供与用户交互的能力。一个Page实例能够蕴含一组相干页面,每个页面用一个AbilitySlice实例示意。

2. PA反对Service Ability和Data Ability:

  • Service Ability:用于提供后盾运行工作的能力。
  • Data Ability:用于对外部提供对立的数据拜访形象。

鸿蒙的前端架构

鸿蒙JS UI = VUE2.0 + 小程序;

1. JS UI框架:类web范式编程的UI界面展现,应用hml标签编写UI;具体参考:https://gitee.com/openharmony/ace_ace_engine

  • Application 应用层
  • Framework 前端框架层
  • Engine 引擎层
  • Porting Layer 适配层

2. JS 利用开发框架:实现了轻量级的MVVM(相似vue2),包含双向绑定;也能够应用es6的局部语法等;具体参考:https://gitee.com/openharmony/ace_engine_lite/tree/master

  • JS Data binding:JS数据绑定框架应用JavaScript语言提供一套根底的数据绑定能力。
  • JS runtime:JS运行时用以反对JS代码的解析和执行。(JS解析引擎为:JerryScript,轻量级的引擎;不是V8)
  • JS framework:JS框架局部应用C++语言提供JS API和组件的框架机制。

3. JS 原生(NAPI):实现js与c/c++代码相互拜访,例如:数据存储storage就是应用c++实现,而后提供api给js应用。

  • NativeEngine:JS引擎形象层,对立JS引擎在NAPI层的接口行为。(引擎为:QuickJS)
  • ModuleManager:治理模块,用于模块加载、模块信息缓存。
  • ScopeManager:治理NativeValue的生命周期。
  • ReferenceManager:治理NativeReference的生命周期。

鸿蒙利用开发

1. 利用开发在线体验:https://playground.harmonyos.com/#/cn/onlineDemo
2. 利用开发工具下载(DevEco Device Tool,须要下载2.0):https://device.harmonyos.com/cn/ide#download_release
3. 前端开发鸿蒙利用的文件构造,也有js、css、hml;然而这些文件的执行都不是浏览器环境,只是类web端的语法;目前只实现了一些基本功能。

  • hml是鸿蒙本人开发的标签;
  • js反对局部es6的语法,但不反对最新的残缺的es6+语法。
  • css也和浏览器端的有些不同,具体参考官网文档。
例如:目前console.log()只能打印字符串,不能打印对象。

4. JS Api应用,例如:

  • @system.fetch => @system外面有很多的api,是通过ts实现的。
  • 具体参考:https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-overview-0000001056361791
import fetch from '@system.fetch'export default {  data: {    responseData: 'NA',    url: "test_url",  },  fetch: function () {    var that = this;    fetch.fetch({      url: that.url,      success: function(response) {        console.info("fetch success");        that.responseData = JSON.stringify(response);      },      fail: function() {        console.info("fetch fail");      }    });  }}

开发环境搭建

1. 创立我的项目时,能够抉择一些简略页面模板

2. 创立好我的项目后的入口,app.js,其中config.json为配置文件

鸿蒙的官网文档:

https://developer.harmonyos.com/cn/docs/documentation/doc-guides/document-outline-0000001064589184

特地鸣谢:拉勾教育前端高薪训练营