JavaScript 轻应用开发|学习笔记

简介: 快速学习 JavaScript 轻应用开发

开发者学堂课程【AliOS Things 物联网开发教程JavaScript 轻应用开发】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/835/detail/13991


JavaScript 轻应用开发


内容介绍:

一、课前准备

二、JavaScript 轻应用简介


一、课前准备

课程包括 JavaScript 简介、JavaScript 引擎和教育样板间三部分,在实际讲解过程中有略微的差别。在课程开始之前,为了达到更好的效果,需要做如下三点准备:

1、安装 VSCode Haas Studio 插件

可以参考 Haas Studio 的技术文档,本文包括了 Haas Studio 工具的获取、开发模式以及整个开发流程的介绍,需要的同学可以进行参考。

2、下载 ALIOS Things 源码

可以到 Gitee 的 AliOS-Things 的代码仓库进行下载。

3、准备 Haas EDU K1 开发版

接下来进入本节课的正式内容,本节课主要将从 JavaScript 轻应用简介与JavaScript 轻应用实践两方面进行讲解。


二、JavaScript 轻应用简介

1、概念

轻应用是可运行在轻量级嵌入式设备上的 JavaScript 应用,轻应用框架则是开发轻运用的软件框架、工具及服务,简单概括为用 JavaScript 开发嵌入式。

image.png

2、特点

(1)轻巧

基于事件驱动的 JavaScript 轻应用短小精悍,免编译、免烧录。

(2)快速

结合阿里云物联网平台,一键完成应用代码热更新。

(3)简单

JavaScript API 简洁易懂,大幅降低 IoT 嵌入式设备应用开发门槛。

(4)兼容

轻松移植 JavaScript 生态软件包,与各类云端业务浑然一体。

以上特点将会在接下来的讲解中有所展现。

3、组件支持

(1) 基础组件  

①文件系统 FS  

②系统信息 SYS  

③键值对存储 KV  

④电源管理 LPM  

⑥硬件 I/OUART/GPIO/I2C/SPI  

⑦模数/数模转换 ADC/DAC  

⑧脉宽调制 PWM  

⑨定时器TIMER 实时时钟 RTC  

⑩看门狗 WDG  

⑪网络协议 UDP/TCP/HTTP/MQTT

(2)高级组件

①物联网平台连接组件

②支付组件

③语音组件

④传感器服务组件

⑤定位服务组件

⑥外设驱动库

a  编码电机/步进电机/伺服电机/继电器

b麦克风/语音录放模块/扬声器

c  PS2摇杆/电容触摸/按键

d  TFT彩屏/数码管/三色灯

e  加速度计/陀螺仪/电子罗盘/气压计/磁力计

f  温湿度/颜色/光照强度

g  更多

4、基本原理

轻应用的原理如下图所示:

image.png

首先将 JS 代码打包成二进制文件,即图中带引号的字符串推送到设备文件系统中,通过引擎调用底层的 Native   C 的 API,从而实现对计算器的访问。

5、开发流程

开发轻应用流程需要以下两个步骤:

(1)编写轻应用代码

只需编写 app.js 和 app.json 两个文件,其中 app.js 包含了业务代码,app.json 定义了相关配置。

举个例子,如果在 app.js 中用到了串口的功能,在 app.json 中就要指定第几路串口以及串口的波特率等配置。

(2)一键热更新

通过轻应用工具 amp 将代码和配置推送至开发版即可。

6、与传统嵌入式的差异

通过前面的介绍,我们对轻应用已经有了一定的了解,接下来继续学习轻应用与传统嵌入式之间最直观的不同,如下图所示:

image.png

(1)开发链路

传统嵌入式的开发链路较长,而轻应用的开发链路相对较短;

(2)功能实现过程

①区别

传统嵌入式需要历经移植、编译、链接,烧写、生产五个步骤来量产产品,而轻应用依托庞大的JS生态库和持续丰富的底层驱动,仅用编写代码、推送代码两个步骤。

②联系

但是轻应用也不是凭空产生的,而是依托于传统嵌入式的基础,将最基础的驱动编写完毕后,以固件的形式烧进设备,没有驱动的增熵,就不用经过传统嵌入式的五个步骤,开发者也无需再去翻阅大量晦涩难懂的协议文档,计算器手册无需再编写更多门槛更高的 C 代码,简洁的几行 JS 代码就可以进行业务的开发。轻应用的“轻”得益于将繁杂的细节留在了底层,而把重要且简单的 API 抽象出来供开发者使用。

③代码演示

准备两份代码,一份是 Native  C 代码,即轻应用的固件代码,另一份是轻应用的业务代码。通过这两份代码可以直观对比两者的编译、烧录过程。

轻应用代码

app > JS app.js > …

console.log ('hello amp!');

setInterval(fuction ()  {

console.log ('Hello World,time:'+ new Date());

},1000);

分别运行两段代码,可以发现 Native  C 代码与轻应用代码最大的不同在于后者大大缩短了运行时间。

7、轻应用在整个 Haas 生态中的位置

轻应用在整个 Haas 生态中的位置可以通过下图来观察到:

image.png(1)在整个Haas 生态中架构中,最底层是Haas硬件,其中包括了的Haas Edu k1、Haas 600、Haas 200、Haas 100和 Haas 定制模组&芯片等等,其会持续根据不同行业、不同应用场景推出相对应的硬件方案;

(2)Haas 硬件上一层是 AliOS Things,是阿里针对物联网推出的 RTOS 操作系统,目前已经完全对外开源,可通过 github 和 gitee 平台下载;

(3)AliOS Things上一层是 Native C驱动,包含了 Haas 100和 Haas Edu K1的轻应用依赖的最新驱动特性,有拓展需要的同学可以参考前面的Haas智能硬件开发训练营中如何拓展传感器的课程;

(4)Native C驱动上一层是轻应用框架。这部分内容会在后面的课程中进行讲解。

(5)轻应用框架上一层是各类云端服务,其可以包括包括轻应用使用的热更新服务、日志服务、千里传音等等。值得一提的是,基于服务的一众 App 应用或者小程序,与 JavaScript 语言之间亲和度极高,其中有些甚至是直接基于 JavaScript 语言进行开发的。

整体来看整个架构,可以发现 Haas 生态是不断进行抽象的过程。从 Haas 硬件到AliOS Things、再到轻应用、再到服务、再到应用,每一次的抽象都在降低开发的门槛,节约开发者的成本。

8、轻应用的整体架构

如下图所示:

image.png

最下层是与 AliOS Things 的适配层,与底层 Native  C 的 API 对接;其上方是 JS 引擎,把对接的 API 打成常见的 JS 库形式以供开发者使用,常见的是之前所说的各类基础组件和高级组件;再上层是各类工具,包括了 IDE 工具、命令行工具等等;再上一层基于组件开发的解决方案,有 CAT1 定位案例、播报音箱案例、设备驱动案例、数据采集案例、传感器驱动案例、支付案例还有 DTO 案例等等。

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
数据可视化 JavaScript 前端开发
没有GPS也想定位,试试JavaScript轻应用的基站定位
本篇我们将基于HaaS 600Kit开发板,以及阿里云开发工具IoT-Studio来搭建一个简单的定位功能,说到设备定位,同学们可能都会想到GPS定位,其实除了像GPS这种卫星定位之外,我们身边的设备如:智能手机、智能手表、穿戴设备等能联网的设备都可以用来定位,通过连接运营商(电信、联通、移动)基站来定位的方式称之为基站定位,或者又称之为移动位置服务(LBS--Location Based Service)。
没有GPS也想定位,试试JavaScript轻应用的基站定位
|
JavaScript 前端开发 Linux
JavaScript轻应用UI介绍
本文档在此基础上介绍下轻应用UI是如何开发的。与前者相比,从应用代码的文件结构看,需要增加页面文件,并在全局配置中增加页面路径相关的信息即可。
JavaScript轻应用UI介绍
|
传感器 JavaScript 前端开发
HaaS轻应用(JavaScript)快速开始 @ HaaS610
HaaS610 开发板是由阿里云、广和通、旗点科技联合推出的一款基于 fibocom 4G Cat.1 产品 L610 openCPU 模组物联网开发板。具备 Arduino 接口, 可以支配 Arduino 接口配件板,搭配 GPS 定位、WiFi、六轴定位传感器、温度传感器、8MB Flash、麦克 风、喇叭、LCD 显示屏、摄像头、2Kb EEPROM、4*4 矩阵按键组使用。
HaaS轻应用(JavaScript)快速开始 @ HaaS610
|
JavaScript 前端开发 物联网
HaaS轻应用(JavaScript)快速开始 @ N58
N58开发板是一款搭载HaaS轻应用(JavaScript)的物联网开发板,可以非常方便的使用JS来开发应用。
HaaS轻应用(JavaScript)快速开始 @ N58
|
JavaScript 前端开发 网络协议
HaaS轻应用(JavaScript)快速开始 @HaaS EDU K1
HaaS EDU K1是HaaS Education Kit1的缩写,是基于四核高性能HaaS1000芯片打造的、集颜值和内涵于一身的物联网教育开发板。作为云端一体全链路解决方案的软硬件积木平台,深度集成了AliOS Things物联网操作系统、HaaS轻应用、小程序和阿里云物联网平台等技术和服务,让开发者可以轻松的学习和开发云端一体全链路实战项目,解决实际场景或孵化创新应用。
HaaS轻应用(JavaScript)快速开始 @HaaS EDU K1
|
JavaScript 前端开发 网络协议
HaaS轻应用(JavaScript)快速开始 @HaaS100
HaaS100开发板阿里云IoT团队推出的物联网通用性云端一体开发板,不但硬件资源丰富,而且还支持HaaS轻应用开发,可以方便的使用JavaScript或Python进行物联网应用开发。
HaaS轻应用(JavaScript)快速开始 @HaaS100
|
JavaScript 前端开发 开发者
JavaScript轻应用电源模块介绍
这里介绍的轻应用框架提供的电源管理模块。
JavaScript轻应用电源模块介绍
|
存储 NoSQL JavaScript
JavaScript轻应用基础模块介绍
这里介绍的轻应用框架提供的基础模块。基础模块是与平台无关,在多种场景下都会使用到的通用能力,主要包括以下几种:系统信息、文件系统、键值存储。
JavaScript轻应用基础模块介绍
|
JavaScript 前端开发 物联网
JavaScript轻应用高级组件
除了基础的功能组件外,JavaScript轻应用还提供了阿里云智能物联网平台连接以及语音播报等能力,具体介绍如下。
JavaScript轻应用高级组件
|
JSON 网络协议 JavaScript
JavaScript轻应用网络模块介绍
JavaScript轻应用提供了网络管理相关的功能,APP可以通过JSAPI获取网络相关的信息,并且可以接收网络连接、断开的事件。
JavaScript轻应用网络模块介绍