当前位置: 首页 > news >正文

AWTK-WEB 快速入门(2) - JS 应用程序

AWTK 可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用 Web 界面与设备进行交互,本文介绍一下如何使用 JS 语言开发 AWTK-WEB 应用程序。


用 AWTK Designer 新建一个应用程序

先安装 AWTK Designer:

https://awtk.zlg.cn/web/index.html

1. 新建应用程序

这里假设应用程序的名称为 AwtkApplicationJS,后面会用到,如果使用其它名称,后面要做相应修改。

  • 在窗口上放置一个按钮;

  • 将按钮的名称改为 “close”;

  • 将按钮的文本改为 “关闭”。

34529dc1e659a6ba184c42ece407ee2a.jpeg

2. 为按钮编写代码

2.1 删除 src 目录下全部文件(留着也可以,只是看起来比较乱),在 src 目录创建 js 目录。

2.2 在 src/js 下创建 application.js ,内容如下:

function applicationInit() { 

 home_page_open();

}
applicationInit()

2.3 在 src/js 下创建 home_page.js,内容如下:

function home_page_open() {

 var win = TWindow.open('home_page');

 var close = win.lookup("close", true);


 close.on(TEventType.CLICK, function(evt) { 

   var e = TPointerEvent.cast(evt); 

   var target = TButton.cast(e.target);
   console.log("click at " + e.x + " " + e.y + " on " + target.name);    console.log("global: " + TGlobal.getPointerX() + " " + TGlobal.getPointerY() + " " + TGlobal.isPointerPressed()); 

   return TRet.OK;  });
 win.layout();

}

注意:控件的名称一定要和 home_page.xml 保持一致。

3. 在 AWTK Designer 中,执行“打包” “编译” “模拟运行”

774d02fecd0d93739c87d873292acf18.jpeg正常情况下可以看到如下界面:34329da9cb711e94f1ad6fa3e32226ea.jpeg点击“关闭”按钮,退出应用程序。


编写配置文件

具体格式请参考,特殊平台编译配置:

https://github.com/zlgopen/awtk/blob/master/docs/build_config.md

这里给出一个例子,可以在此基础上进行修改,该文件位于:

examples/AwtkApplicationJS/build.json


{ 

  "name": "AwtkApplicationJS", 

  "version": "1.0", 

  "app_type":"js",

"copyright": "Guangzhou ZHIYUAN Electronics Co.,Ltd.", "themes":["default"], "sources": [ "src/js/*.js" ]

}


编译 WEB 应用程序

进入 awtk-web 目录,不同平台使用不同的脚本编译:

  • Windows 平台

./build_win32.sh examples/AwtkApplicationJS/build.json release

  • Linux 平台

./build_linux.sh examples/AwtkApplicationJS/build.json release

  • MacOS 平台

./build_mac.sh examples/AwtkApplicationJS/build.json release

请根据应用程序所在目录,修改配置文件的路径。


运行

1. 正常启动

  • ./start_web.sh

2. 调试启动

  • start_web_debug.sh

3. 用浏览器打开

 URL:http://localhost:8080/AwtkApplicationJS,可以看到:

0cc466eaa82189bdd30cbe215bcb767a.jpeg

4. 用浏览器打开 http://localhost:8080/AwtkApplicationJS/simulator.html,可以看到:

d19065f05c132ee2386abcf9c6a034c4.jpeg

5. 用浏览器打开 http://localhost:8080/AwtkApplicationJS/app.html,可以看到:

238a7a5d53c644c5195294de40b85609.jpeg


AWTK-WEB-JS 和 AWTK-JS 不同

两者在 API 上基本上是一样的,但是由于浏览器和 Jerryscript 的差异,导致少量功能无法做到完全一致,需要应用程序自行规避。

  1. AWTK-WEB-JS 不支持模态对话框。
  2. AWTK-WEB-JS 中的 print 函数是打印。请使用 console.log 输出调试信息。
  3. AWTK-WEB-JS 不支持自动回收在 wasm 中分配的对象(如:color/rect/value 等)。如果希望两者通用,请避免使用这类函数。

相关文章:

AWTK-WEB 快速入门(2) - JS 应用程序

AWTK 可以使用相同的技术栈开发各种平台的应用程序。有时我们需要使用 Web 界面与设备进行交互,本文介绍一下如何使用 JS 语言开发 AWTK-WEB 应用程序。 用 AWTK Designer 新建一个应用程序 先安装 AWTK Designer: https://awtk.zlg.cn/web/index.html…...

dolphinscheduler服务注册中心源码解析(三)RPC提供者服务整合注册中心注册服务实现源码

RPC提供者服务整合注册中心注册服务实现源码 1.概述2.源码解读思路3.实现2.1.应用服务的RPC服务接口定义2.1.1.MasterServer应用中提供的RPC接口服务2.1.2.WorkerServer应用中提供的RPC接口服务2.2.应用服务的RPC服务接口实现2.2.1.MasterServer应用中提供的RPC接口服务实现类2…...

电脑不小心删除了msvcr120.dll文件怎么办?“缺失msvcr120.dll文件”要怎么解决?

一、文件丢失与损坏的常见原因及解决办法 1. 不小心删除系统文件 常见情况:有时在清理电脑垃圾文件时,可能会不小心删除一些重要的系统文件,如msvcr120.dll等。解决办法: 恢复文件:如果刚删除不久,可以尝…...

js 深度克隆

深度克隆(Deep Clone)是指复制一个对象或数组及其所有嵌套结构的副本,使得克隆后的对象与原对象完全独立。JavaScript 提供了一些方法实现深度克隆,但每种方法有其优缺点。 1. 常用方法 1.1 使用 JSON.parse 和 JSON.stringify …...

深度学习之超分辨率算法——FRCNN

– 对之前SRCNN算法的改进 输出层采用转置卷积层放大尺寸,这样可以直接将低分辨率图片输入模型中,解决了输入尺度问题。改变特征维数,使用更小的卷积核和使用更多的映射层。卷积核更小,加入了更多的激活层。共享其中的映射层&…...

软件测试之压力测试【详解】

压力测试 压力测试是一种软件测试,用于验证软件应用程序的稳定性和可靠性。压力测试的目标是在极其沉重的负载条件下测量软件的健壮性和错误处理能力,并确保软件在危急情况下不会崩溃。它甚至可以测试超出正常工作点的测试,并评估软件在极端…...

电脑出现 0x0000007f 蓝屏问题怎么办,参考以下方法尝试解决

电脑蓝屏是让许多用户头疼的问题,其中出现 “0x0000007f” 错误代码更是较为常见且棘手。了解其背后成因并掌握修复方法,能帮我们快速恢复电脑正常运行。 一、可能的硬件原因 内存问题 内存条长时间使用可能出现物理损坏,如金手指氧化、芯片…...

分布式系统架构:限流设计模式

1.为什么要限流? 任何一个系统的运算、存储、网络资源都不是无限的,当系统资源不足以支撑外部超过预期的突发流量时,就应该要有取舍,建立面对超额流量自我保护的机制,而这个机制就是微服务中常说的“限流” 2.四种限流…...

G口带宽服务器与1G独享带宽服务器:深度剖析其差异

在数据洪流涌动的数字化时代,服务器作为数据处理的核心,其性能表现直接关系到业务的流畅度和用户体验的优劣。随着技术的飞速发展,G口带宽服务器与1G独享带宽服务器已成为众多企业的优选方案。然而,这两者之间究竟有何细微差别&am…...

Flamingo:少样本多模态大模型

Flamingo:少样本多模态大模型 论文大纲理解1. 确认目标2. 分析过程(目标-手段分析)3. 实现步骤4. 效果展示5. 金手指 解法拆解全流程核心模式提问Flamingo为什么选择使用"固定数量的64个视觉tokens"这个特定数字?这个数字的选择背…...

推荐一款免费且好用的 国产 NAS 系统 ——FnOS

一、系统基础信息 开发基础:基于最新的Linux内核(Debian发行版)深度开发,兼容主流x86硬件(ARM还没适配),自由组装NAS,灵活扩展外部存储。 使用情况:官方支持功能较多&am…...

2025系统架构师(一考就过):案例题之一:嵌入式架构、大数据架构、ISA

一、嵌入式系统架构 软件脆弱性是软件中存在的弱点(或缺陷),利用它可以危害系统安全策略,导致信息丢失、系统价值和可用性降低。嵌入式系统软件架构通常采用分层架构,它可以将问题分解为一系列相对独立的子问题,局部化在每一层中…...

开机存活脚本

vim datastadard_alive.sh #!/bin/bashPORT18086 # 替换为你想要检查的端口号 dt$(date %Y-%m-%d)# 使用netstat检查端口是否存在 if netstat -tuln | grep -q ":$PORT"; thenecho "$dt Port $PORT is in use" > /opt/datastadard/logs/alive.log# 如…...

车载网关性能 --- GW ECU报文(message)处理机制的技术解析

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所谓鸡汤,要么蛊惑你认命,要么怂恿你拼命,但都是回避问题的根源,以现象替代逻辑,以情绪代替思考,把消极接受现实的懦弱,伪装成乐观面对不幸的…...

CosyVoice安装过程详解

CosyVoice安装过程详解 安装过程参考官方文档 前情提要 环境:Windows子系统WSL下安装的Ubunt22.4python环境管理:MiniConda3git 1. Clone代码 $ git clone --recursive https://github.com/FunAudioLLM/CosyVoice.git # 若是submodule下载失败&…...

传统网络架构与SDN架构对比

传统网络采用分布式控制,每台设备独立控制且管理耗时耗力,扩展困难,按 OSI 模型分层,成本高、业务部署慢、安全性欠佳且开放性不足。而 SDN 架构将控制平面集中到控制器,数据转发由交换机负责,可统一管理提…...

如何打造用户友好的维护页面:6个创意提升WordPress网站体验

在网站运营中,无论是个人博主还是大型企业网站的管理员,难免会遇到需要维护的情况。无论是服务器迁移、插件更新,还是突发的技术故障,都可能导致网站短暂无法访问。这时,设计维护页面能很好的缓解用户的不满&#xff0…...

【hackmyvm】Zday靶机wp

HMVrbash绕过no_root_squash静态编译fogproject 1. 基本信息^toc 这里写目录标题 1. 基本信息^toc2. 信息收集2.1. 端口扫描2.2. 目录扫描 3. fog project Rce3.1. ssh绕过限制 4. NFS no_root_squash5. bash运行不了怎么办 靶机链接 https://hackmyvm.eu/machines/machine.ph…...

redis使用注意哪些事项

1. 数据类型选择: • Redis支持多种数据类型,如字符串(String)、哈希(Hash)、列表(List)、集合(Set)、有序集合(Sorted Set)等。在选择…...

步进电机位置速度双环控制实现

步进电机位置速度双环控制实现 野火stm32电机教学 提高部分-第11讲 步进电机位置速度双环控制实现(1)_哔哩哔哩_bilibili PID模型 位置环作为外环,速度环作为内环。设定目标位置和实际转轴位置的位置偏差,经过位置PID获得位置期望,然后讲位置期望(位置变化反映了转轴的速…...

Win11 WSL2 + Ubuntu 24.04 下,如何让nRF开发板(DK)被VS Code和NCS v3.0.0正确识别?

Win11 WSL2环境下nRF开发板与NCS v3.0.0深度集成指南 当嵌入式开发遇上WSL2的Linux高效编译环境,硬件连接往往成为最后一道障碍。本文将彻底解决nRF开发板在Windows主机与WSL2 Ubuntu子系统间的识别难题,打造无缝硬件调试体验。 1. 环境准备与核心工具链…...

Unity 2023.2 项目升级C# 9.0?先看看这5个不支持的语法特性(附替代方案)

Unity 2023.2项目升级C# 9.0避坑指南:5个不支持的语法特性与实战解决方案 当你将Unity项目升级到2023.2版本,发现IDE智能提示中闪烁着诱人的C# 9.0新特性时,先别急着重构代码。上周我的团队就遭遇了这样的场景:在将大型项目迁移到…...

QClaw驱动与技能插件安装,联动环境搭建的底层心法与实操指南

在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...

Local Moondream2实操手册:上传图片即获详细描述的全流程

Local Moondream2实操手册:上传图片即获详细描述的全流程 想让你的电脑学会“看图说话”吗?今天我们来聊聊一个特别有意思的工具——Local Moondream2。简单来说,它就像给你的电脑装上了一双智能的眼睛和一个能说会道的嘴巴。你给它一张图片…...

容器安全扫描:镜像漏洞检测与运行时保护

容器安全扫描:镜像漏洞检测与运行时保护 随着容器技术的广泛应用,其安全性问题日益凸显。容器安全扫描成为保障云原生环境安全的关键环节,涵盖镜像构建阶段的漏洞检测与运行时的动态防护。本文将深入探讨容器安全的核心实践,帮助…...

芯片测试工程师必看:Mentor DFT OCC时钟控制器实战配置与三大设计模式详解

芯片测试工程师必看:Mentor DFT OCC时钟控制器实战配置与三大设计模式详解 在芯片测试领域,时钟控制器的设计与配置一直是工程师面临的核心挑战之一。作为DFT(Design for Testability)工程师,我们每天都需要与各种时钟…...

从MCAS系统失效到监管失察:波音737MAX空难的工程伦理再审视

1. MCAS系统:一个被简化的技术补丁 当波音工程师面对737MAX机型发动机安装位置带来的气动特性变化时,他们选择了一个看似聪明的解决方案——机动特性增强系统(MCAS)。这个系统的设计初衷非常简单:当飞机仰角过大时&…...

FastAPI子应用挂载:别再让root_path坑你一夜稼

Julia(julialang.org)由Stefan Karpinski、Jeff Bezanson等在2009年创建,目标是融合Python的易用性、C的高性能、R的统计能力、Matlab的科学计算生态。 其核心设计哲学是: 高性能:编译型语言(JIT&#xf…...

mbino:Arduino上实现mbed HAL的轻量级嵌入式抽象层

1. 项目概述mbino 是一个面向 Arduino 平台的轻量级嵌入式抽象层移植库,其核心目标是将 mbed OS 2 的标准化硬件抽象 API(Hardware Abstraction Layer, HAL)无缝引入以 AVR 8-bit 微控制器(如 ATmega328P、ATmega2560)…...

2026年怎么搭建OpenClaw?2分钟新手本地部署OpenClaw及百炼Coding Plan教程

2026年怎么搭建OpenClaw?2分钟新手本地部署OpenClaw及百炼Coding Plan教程。本文面向零基础用户,完整说明在轻量服务器与本地Windows11、macOS、Linux系统中部署OpenClaw(Clawdbot)的流程,包含环境配置、服务启动、Ski…...