【原创】快应用QuickApp--HelloWorld体验

时间:2022-09-05 20:26:32

快应用:

快应用是九大手机厂商基于硬件平台共同推出的新型应用生态。用户无需下载安装,即点即用,享受原生应用的性能体验。
3月20日在北京联合召开快应用标准启动发布会。过去1天了,官网(快应用官方网站)上的文档和教程也都大致齐备了,一起体验试试。
 
本文参考官方文档中心:环境搭建
本文代码地址:SmileSmith/quickapp-demo
吐槽一下:官网打开文档中心的默认进入了注册流程? 我是已经登录的状态了。。。

一、环境搭建

1)Node环境安装快应用toolkit

npm install -g hap-toolkit

2)Node环境用toolkit初始化demo项目

hap init <ProjectName>
得到如下文件目录:
├── node_modules
├── sign                      rpk包签名模块
│   └── debug                 调试环境
│       ├── certificate.pem   证书文件
│       └── private.pem       私钥文件
├── src
│   ├── Common                公用的资源文件和组件文件
│   │   └── logo.png          manifest.json中配置的icon
│   ├── Demo                  页面目录
│   |   └── index.ux          页面文件,文件名不必与父文件夹相同
│   ├── app.ux                APP文件(用于包括公用资源)
│   └── manifest.json         项目配置文件(如:应用描述、接口申明、页面路由等)
└── package.json              定义项目需要的各种模块及配置信息,npm install根据这个配置文件,自动下载所需的运行和开发环境

3)依赖安装

进入项目根目录安装所有依赖的npm包
npm install
如果安装速度慢,可以尝试在项目根目录创建.npmrc,并写入一个全能npm镜像指向:
registry=https://registry.npm.taobao.org
disturl=https://npm.taobao.org/dist
chromedriver_cdnurl=http://cdn.npm.taobao.org/dist/chromedriver
operadriver_cdnurl=http://cdn.npm.taobao.org/dist/operadriver
phantomjs_cdnurl=http://cdn.npm.taobao.org/dist/phantomjs
fse_binary_host_mirror=https://npm.taobao.org/mirrors/fsevents
sass_binary_site=http://cdn.npm.taobao.org/dist/node-sass
electron_mirror=http://cdn.npm.taobao.org/dist/electron/

4)IDE插件安装

如果你是VSCode用户可以参考如下:
a. 搜索Hap安装语法模板、语法高亮的支持(体验类似Vue):
b. 项目自带的eslint对ux文件似乎不起作用,依赖包里面的有个插件"eslint-plugin-hybrid",可能是对ux文件的eslint支持,但是diydyq/eslint-plugin-hybrid上已经8个月没更新了,期待后续支持
c. 格式化代码用之前的Prettier就行
【原创】快应用QuickApp--HelloWorld体验
【原创】快应用QuickApp--HelloWorld体验

5)调试器和调式平台安装

调试器APK:操作调试
开发调试平台APK:模拟真实的快应用平台,所有的前端代码编译后都是在这个平台上运行
需要注意的是:
a. 单独安装调试器是无法使用的,按钮全部置灰,需要有rpk的平台才能使用
b. 我在win下用包含arm指令集的Genymotion一直报错,只能有真机调试
 
【原创】快应用QuickApp--HelloWorld体验

二、开发调试

1)在Node环境下启动开发环境Server

npm run server

会在命令行出现二维码

2)用手机的调试器扫码打开

【原创】快应用QuickApp--HelloWorld体验
 
这里同时会打开Inspector调式页面
 
【原创】快应用QuickApp--HelloWorld体验
PS:在调试器右上角菜单点击设置:填入服务器地址,就可以点击【在线更新】刷新App

3)新开Node环境启动实时编译推送(热更新)

npm run watch
【原创】快应用QuickApp--HelloWorld体验
PS:这里每次更新确实重新编译打包了,但是手机上的通知似乎没生效,不会自动刷新App,需要点击【在线更新】后才能刷新应用
PS2:从代码逻辑上看是notify.js访问调式手机上的某个地址完成通知,实际上并没有生成所需要的client.json文件
【原创】快应用QuickApp--HelloWorld体验
【原创】快应用QuickApp--HelloWorld体验
PS3:查看快应用工具hap-tools的代码,也没看到类似写入client.json的逻辑
【原创】快应用QuickApp--HelloWorld体验

【原创】快应用QuickApp--HelloWorld体验

三、项目基础设计

这部分还没想好,这个hap开发思路类似Vue和小程序的结合版(很像wepy?),组件和路由这些都已经处理好了。其他的初步想法是尝试sass语法,类vuex的实现等

1)组件

2)路由

3)原生接口

4)全局状态管理

5)类型检测

 
待续。。。

【原创】快应用QuickApp--HelloWorld体验的更多相关文章

  1. 【笔记】快应用QuickApp(hap) -- 构建一个微博应用

    一.背景 在上次和小伙伴分享了快应用(后面简称hap)后,有很多待定的思路没有去尝试.这周有时间简单开发了一个热门微博的应用,主要涉及到的难点:富文本.长列表.画廊.这里将整个开发过程中遇到的问题以及 ...

  2. 安装eclipse及Helloworld体验

    准备工作 如果没有配置java环境变量的请移步:https://www.cnblogs.com/lhns/p/9638105.html 下载eclipse 网址:https://www.eclipse ...

  3. &lbrack;struts2学习笔记&rsqb; 第三节 创建struts 2 HelloWorld所需的六个步骤

    本文地址:http://blog.csdn.net/sushengmiyan/article/details/40349201 官方文档:http://struts.apache.org/releas ...

  4. 2016中国APP分类排行榜参选入围产品公示

    2016中国APP分类排行榜参选入围产品公示   由中国科学院<互联网周刊>.中国社会科学院信息化研究中心.eNet硅谷动力共同主办的2016中国APP分类排行榜发布暨颁奖晚宴即将举行.此 ...

  5. 2018亚太CDN峰会开幕&comma; 阿里云王海华解读云&plus;端&plus;AI的短视频最佳实践

    4月11-12日,2018亚太CDN峰会在北京隆重召开,在11日下午的短视频论坛中,阿里云高级技术专家王海华进行了<短视频最佳实践:云+端+AI>的主题演讲,分享了短视频的生命周期关键点和 ...

  6. &lbrack;转&rsqb;真正了解CSS3背景下的&commat;font face规则

    本文转自:http://www.zhangxinxu.com/wordpress/2017/03/css3-font-face-src-local/ by zhangxinxu from http:/ ...

  7. 【Java进阶面试系列之一】哥们,你们的系统架构中为什么要引入消息中间件?

    转: [Java进阶面试系列之一]哥们,你们的系统架构中为什么要引入消息中间件? **这篇文章开始,我们把消息中间件这块高频的面试题给大家说一下,也会涵盖一些MQ中间件常见的技术问题. 这里大家可以关 ...

  8. 【干货分享】前端面试知识点锦集04(Others篇)——附答案

    四.Others部分 技术类 1.http状态码有哪些?分别代表是什么意思? (1).成功2×× 成功处理了请求的状态码.200 服务器已成功处理了请求并提供了请求的网页.204 服务器成功处理了请求 ...

  9. h5面试题集合

    一.闭包的理解: 使用闭包主要是为了设计私有的方法和变量.闭包的优点是可以避免全局变量的污染,缺点是闭包会常驻内存,会增大内存使用量,使用不当很容易造成内存泄露. 闭包三个特性: 1.函数嵌套函数 ; ...

  10. AJAX初探&comma;XMLHttpRequest介绍

    AJAX初探,XMLHttpRequest介绍 AJAX      AJAX = Asynchronous JavaScript and XML. 异步的JavaScript和XML.      AJ ...

随机推荐

  1. 2016 Multi-University Training Contest 1 G&period; Rigid Frameworks

    Rigid Frameworks Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) ...

  2. js中各种事件的兼容性

    1给元素绑定一个事件 ie8attachEvent(on+"事件",event); 高级浏览器 addEventListener("事件",event,fals ...

  3. 【BZOJ-1497】最大获利 最大流

    1497: [NOI2006]最大获利 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 3800  Solved: 1848[Submit][Status] ...

  4. js计时器方法 setInterval&lpar;&rpar;&comma;setTimeout&lpar;&rpar;

    window.setInterval() 周期性地调用一个函数(function)或者执行一段代码. var intervalID = window.setInterval(func, delay[, ...

  5. iOS 判断字符串中含有某个字符串 rangeOfString

    //判断roadTitleLab.text 是否含有qingjoin if([roadTitleLab.text rangeOfString:@"qingjoin"].locati ...

  6. JavaWeb项目开发案例精粹-第6章报价管理系统-001需求分析及设计

    1. 2. 3. 4. 5. 6.

  7. Maven Integration for Eclipse 正确地址

    m2eclipse has moved from sonatype to eclipse. The correct update site is http://download.eclipse.org ...

  8. mysql密码忘记如何处理

    1,修改/etc/my.cnf添加添加skip-grant参数,重启mysql. 2,登录mysql  mysql -uroot 3, 更新user中root的密码  use mysql;   upd ...

  9. 【LeetCode】152&period; Maximum Product Subarray

    题目: Find the contiguous subarray within an array (containing at least one number) which has the larg ...

  10. jQuery如何停止元素的animate动画,还有怎样判断是否处于动画状态

    jquery的animation会自动进入队列,就出现了一个问题,这些动画会一一执行完成,而我们实际的本意是当鼠标移开的时候动画即终止. 停止元素的动画方法:stop()语法结构:stop([clea ...