如何从 HTML 5 快速转型开发快应用?

作为移动互联网的全新应用分发形态,快应用可以提供智能化场景分发,即点即用,让用户从手机系统快速进入快应用,无需下载安装,一步直达服务。快应用拥有原生性能体验和系统级服务能力,也让快应用有比 HTML 5 更好的转化率和商业价值。

本次 Chat 将带你学习如何从 HTML 5 快速转型开发快应用,具体内容包括以下部分:

  1. 什么是快应用;
  2. 快应用项目的搭建实践,并了解和传统前端开发的联系与区别;
  3. 开发快应用的一些注意事项;
  4. 快应用性能优化。

引言

2018 年 3 月份,由小米、中兴、华为等 10 家手机厂商成立了快应用联盟,共同发布了快应用的标准。

自此我们可以采用一套标准去开发应用,无缝的运行在各个手机厂商上。一次开发,一次上传,自动分发到所有联盟厂商的设备。根据快应用官方的说法,快应用是采用前端的技术栈来开发的,这篇文章以一个前端开发者的角度,来介绍怎么开发快应用,快速入门快应用的开发。

什么是快应用

  • 快应用是基于手机硬件平台的新型应用形态;标准是由主流手机厂商组成的快应用联盟联合制定;

  • 快应用标准的诞生将在研发接口、能力接入、开发者服务等层面建设标准平台;以平台化的生态模式对个人开发者和企业开发者全品类开放;

  • 快应用具备传统 APP 完整的应用体验,无需安装,即点即用。

快应用技术特点

  • 采用前端技术栈,运行和开发效率高,学习成本低,代码可以复用;

  • 原生渲染能力,功能完备,体验等同于应用,资源消耗小。

从上面我们可以了解到:

  1. 快应用不是 HTML5,但是可以用前端技术直接上手开发;

  2. 快应用是原生渲染,有着比 H5 更加完备的功能及原生体验;

  3. 快应用即点即用,无需安装。

快应用 VS HTML5 开发

首先,我们来回顾一下,在 Web 项目中是怎么进行开发的:

简单的说下,可以分为以下 9 个步骤:

  • 拿到 PSD 设计图

  • 切图

  • 将 PSD 转成 html

  • 写 JS 业务逻辑

  • mock 数据,自测

  • 与后端联调

  • 提交测试

  • 上线

  • 迭代与优化

    如下图所示:

    如何从 HTML 5 快速转型开发快应用?_第1张图片

做过前端的同学对这个步骤应该很熟悉了,快应用的开发步骤和这差不多,主要有 2 点差别,

我们来比较一下:

  • HTML5 开发是基于浏览器的,直接写完后在浏览器下就可以运行,看效果。但是快应用开发是基于 Node.js 环境的,所以我们开始需要搭建一下开发环境;

  • 在将 PSD 转成 html 的时候,快应用提供了一个脚手架,当然 HTML5 的一些项目里面也有脚手架,比如 Vue、React 项目,官方都提供了一个脚手架,方便开发者进行开发。

如下图所示,下面是快应用的开发过程:

如何从 HTML 5 快速转型开发快应用?_第2张图片

下面从 搭建环境,hap-toolkit 的使用,静态页面书写(PSD 转成 html),js 业务逻辑的书写,调试这 5 个方面来说说如何开发快应用。其他的步骤都是 HTML5 开发常见的步骤,和 HTML5 一样,直接迁移过来就行。

搭建开发环境

快应用开发是基于前端技术栈的,官方团队提供了基于 Node.js 的开发环境,可以参考官网的详细教程。

主要是:

  • Node.js(推荐 Node 8 以上版本);
  • hap-toolkit 编译工具;
  • 快应用调试器和快应用预览版(方便调试和查看效果)。

当然快应用官方也提供了一个IDE,可以直接安装使用。

hap-toolkit 的使用

安装好 hap-toolkit 后,可以在控制台输入 hap -v 看看当前的版本:

如何从 HTML 5 快速转型开发快应用?_第3张图片

当前的最新版本是 0.1.1。

下面是 hap-toolkit 的一些常见用法:

如何从 HTML 5 快速转型开发快应用?_第4张图片

具体可以参考https://doc.quickapp.cn/tools/toolkit-tools.html 使用,这里就不在赘述了。

静态页面书写

快应用提供了组件和指令,方便 PSD 转成 html。

组件

快应用中组件与 Vue 中组件类似,一个快应用,可以组织为一个嵌套的组件树,如下图所示:

如何从 HTML 5 快速转型开发快应用?_第5张图片

组件分类:

  • 原生组件
  • 自定义组件

当一个页面的业务逻辑变得复杂时,就需要将页面拆成多个模块,完成解耦。所以,快应用提供了自定义组件的能力,定义自定义组件与开发页面一致

  1. text、div 等为原生组件,由各平台 Native 底层渲染;

  2. 自定义组件是一个开发者编写的组件,使用起来和 Native 一样,最终按照组件的