鸿蒙的特点
1. 鸿蒙 => 超级小程序
- 鸿蒙利用反对应用java开发,也反对应用js开发;
- 应用js开发反对调用零碎级的API,例如摄像头、话筒、WI-FI等。
- 鸿蒙本人封装了hml、css、js的
2. 鸿蒙 => 可剪裁零碎(微内核)
- 反对内存为:128KB-128MB-4GB
3. 模改通信协议
- 对立了IOT互联互通的规范语言
鸿蒙是不是安卓套壳?
1. 安卓零碎
2. 鸿蒙零碎
所以说鸿蒙尽管套上了安卓runtime,但不是简略的套壳,而是新增了很多本人的性能以及鸿蒙的runtime。而且在利用开发层面也定义了本人的sdk(特地是js sdk),在将来鸿蒙的生态成熟之后就能够齐全干掉安卓runtime。
学习鸿蒙开发须要哪些常识?
- 前端技术栈:HTML\CSS\JS,类WEB范式编程;鸿蒙零碎没有内置浏览器环境,然而为了升高学习老本;鸿蒙封装了本人的hml标签、js、css等,它们和WEB端语法相似(这些性能曾经很厉害了!)。
- 相熟微信小程序:包含页面构造、API、配置形式等和小程序相似。
- 相熟Vue2.0:鸿蒙本人实现了相似于VUE2.0D MVVM模式(观察者、数据劫持)
- 安卓开发教训:因为它首先要兼容安卓零碎。
鸿蒙的零碎架构
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
特地鸣谢:拉勾教育前端高薪训练营