前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版
基础篇
进阶篇
高频篇
精选篇
手写篇
面经篇
AI 篇
原理篇
每日一题
小程序题库
知识卡片
  • 场景篇按分类整理的大前端场景考点
  • 历年面经按年份追踪真实考点
  • 算法题库NEW在线编码即时判题
  • 专项自测100 题快速查漏
  • 前端基础
    • HTTP从报文一路讲到 HTTPS
    • 浏览器渲染、事件循环、进程
    • 计算机基础Linux、网络、操作系统
  • 进阶专项
    • 设计模式23 种模式怎么用
    • 前端系统进阶学习大型项目工程化
    • 前端综合文章长期沉淀的实践文
  • 工程与工具
    • Node学习指南从环境搭建到服务端
    • NPM工作流script、依赖与发布
    • Docker容器化部署上手
    • Canvas图形与动画实战
  • 路线与导图
    • 思维导图知识点全景图
    • 学习路线按图索骥不跑偏
  • 动态
    • 公众号动态公众号历史文章
    • 博客动态站长的技术博客
    • 开发者导航常用工具与文档站
  • AI 助手随时提问,即时解析
  • AI 模拟面试模拟真实面试 + 报告
  • AI 知识地图串起全站知识点
  • AI 定制路线按你的简历现排
AI 热点
旧版

快应用入门小结篇

首页2018-08-21 18:05:43Front-End
快应用
  • MD原文件 https://github.com/poetries/poetries.github.io/blob/dev/source/_posts/quick-app-summary.md
  • 博客链接 http://blog.poetries.top/2018/08/21/quick-app-summary/

# 前言

# 与微信小程序的比较

  • 二者都采用前端技术栈,快应用是native 渲染,性能体验会比较好,而小程序目前是webview渲染
  • 二者开发框架和规范不同,所以代码写法上有差异,快应用的css支持能力较弱
  • 快应用基于native,可以调起丰富的系统api,小程序在此方面会有些无力

# 快应用入口

  • 应用商店
  • 桌面图标
  • 全局搜索
  • 浏览器搜索
  • 网页跳转
  • 负一屏
  • 智能推送
  • 智慧识屏
  • 场景化入口(短信按钮、应用卸载替换、二维码、传送门)

# 快应用优点

  • 轻松调起更多系统api
  • 各厂商的流量扶持
  • native渲染,deeplink入口,原生桌面入口,push能力

# 一、环境搭建

# 1.1 安装NodeJS

需安装6.0以上版本的NodeJS

# 1.2 安装hap-toolkit

// hap -V // 会显示安装版本信息
npm install -g hap-toolkit
@前端进阶之旅: 代码已经复制到剪贴板

# 1.3 创建项目工程

hap init projectName

// 增加编译支持
hap update --force

cd projectName && npm i
@前端进阶之旅: 代码已经复制到剪贴板

生成的目录结构

├── sign rpk //包签名模块
│ └── debug //调试环境
│ ├── certificate.pem //证书文件
│ └── private.pem //私钥文件
├── src
│ ├── Common //公用的资源和组件文件
│ │ └── logo.png //应用图标
│ ├── Demo //页面目录
│ | └── index.ux //页面文件,可自定义页面名称
│ ├── app.ux //APP文件,可引入公共脚本,暴露公共数据和方法等
│ └── manifest.json //项目配置文件,配置应用图标、页面路由等
└── package.json //定义项目需要的各种模块及配置信息
@前端进阶之旅: 代码已经复制到剪贴板
  • src:项目源文件夹
  • sign:签名模块,当前仅有debug签名,如果内测上线,请添加release文件夹,增加线上签名;签名生成方法详见文档编译工具

编译项目

  • npm run release # 发布程序包,在 /dist/.signed.rpk,注意需要使用 release 签名模块
  • npm run build # 生成 build 和 dist 两个目录。前者是临时产出,后者是最终产出
  • npm run watch # 文件保存时自动编译和调试

手动编译项目

在项目的根目录下,运行如下命令进行编译打包,生成rpk包

npm run build
@前端进阶之旅: 代码已经复制到剪贴板
  • 编译打包成功后,项目根目录下会生成文件夹:build、dist
  • build:临时产出,包含编译后的页面js,图片等
  • dist:最终产出,包含rpk文件。其实是将build目录下的资源打包压缩为一个文件,后缀名为rpk,这个rpk文件就是项目编译后的最终产出

自动编译项目

  • 每次修改源代码文件后,都自动编译项目
npm run watch
@前端进阶之旅: 代码已经复制到剪贴板

在安卓手机上安装调试工具

https://www.quickapp.cn/docCenter/post/69

# 1.4 连接手机进行调试

注意:一定要注意手机连接的wifi与电脑所连接的网络需要在同一局域网和网段,需要能够相互访问。

  • 在项目根目录下执行如下命令,启动HTTP调试服务器:(server前需要先npm run build)
npm run server
@前端进阶之旅: 代码已经复制到剪贴板
  • 开发者可以通过命令行终端或者调试服务器主页看到提供扫描的二维码
  • 开发者通过快应用调试器扫码安装按钮,扫码安装待调试的rpk文件
  • 开发者点击快应用调试器中的开始调试按钮,开始调试

打开之前安装的快应用调试助手扫描即可预览

扫描二维码之后点击开始调试,会调出devtool工具本地调试

# 1.5 安装Hap Extension

启动Visual Studio Code,打开项目,点击左上侧扩展,搜索hap,点击安装Hap Extension

  • 更多详情 https://doc.quickapp.cn/tutorial/getting-started/code-edit-conf.html

# 二、快应用结构分析

# 2.1 文件组织

一个应用包含:描述项目配置信息的manifest文件,放置项目公共资源脚本的app.ux文件,多个描述页面/自定义组件的ux文件

├── sign                            rpk包签名模块
    └── debug                       调试环境
            └── certificate.pem     证书文件
            └── private.pem         私钥文件
├── src
   ├── Common                       公用的资源和组件文件
            └──logo.png             应用图标
   ├── Demo                         页面目录
            └── index.ux            页面文件,可自定义页面名称
   ├── app.ux               APP文件,可引入公共脚本,暴露公共数据和方法等
   └── manifest.json                项目配置文件,配置应用图标、页面路由等
└── package.json                    定义项目需要的各种模块及配置信息
@前端进阶之旅: 代码已经复制到剪贴板

目录的简要说明如下

  • src:项目源文件夹
  • sign:签名模块(当前仅有debug签名,如果内测上线,请添加release文件夹,增加线上签名)

# 2.2 源码文件

APP,页面和自定义组件均通过ux文件编写,ux文件由template模板、style样式和script脚本3个部分组成,一个典型的页面ux文件示例如下

<template>
  <!-- template里只能有一个根节点 -->
  <div class="demo-page">
    <text class="title">欢迎打开{{title}}</text>
    <!-- 点击跳转详情页 -->
    <input class="btn" type="button" value="跳转到详情页" onclick="routeDetail">
  </div>
</template>

<style>
  .demo-page {
    flex-direction: column;
    justify-content: center;
    align-items: center;
  }

  .title {
    font-size: 40px;
    text-align: center;
  }

  .btn {
    width: 550px;
    height: 86px;
    margin-top: 75px;
    border-radius: 43px;
    background-color: #09ba07;
    font-size: 30px;
    color: #ffffff;
  }
</style>

<script>
  import router from '@system.router'

  export default {
    // 页面级组件的数据模型,影响传入数据的覆盖机制:private内定义的属性不允许被覆盖
    private: {
      title: '示例页面'
    },
    routeDetail () {
      // 跳转到应用内的某个页面,router用法详见:文档->接口->页面路由
      router.push ({
        uri: '/DemoDetail'
      })
    }
  }
</script>
@前端进阶之旅: 代码已经复制到剪贴板

# 2.3 manifest配置

https://doc.quickapp.cn/framework/manifest.html

{
    # 包名,区分不同应用的唯一id,因为名称其实是可以一样的
    "package": "com.application.demo",

    # 应用名称
    "name": "hi",

    # 版本管理的话,每次更新将versionCode自增1即可
    "versionName": "1.0.0",
    "versionCode": "1",
    "minPlatformVersion": "101",

    # 程序的入口icon,所有关于文件的引用统一使用根目录
    # 根目录对应src文件夹
    "icon": "/Common/logo.png",

    # 
    "features": [
        { "name": "system.prompt" },
        { "name": "system.router" },
        { "name": "system.shortcut" }
    ],

    "permissions": [
        { "origin": "*" }
    ],

    # 配置相关
    "config": {
        # 这里的设置是log输出的最低等级
        # 如果是warn的话,info类型将不会输出
        # 等级请参考js中的console日志
        "logLevel": "off"
    },

    # 路由
    # 这里会配置应用入口的页面
    # 所有的页面都需要在这里配置
    # 会把页面与对应的页面文件对应起来
    # 经过配置之后可以通过/Demo访问到Demo目录下的index.ux页面
    "router": {
        "entry": "Demo",
        "pages": {
            "Demo": {
                # 这里对应的Demo文件夹里的index.ux
                "component": "index"
            },
            "DemoDetail": {
                "component": "index"
            },
            "About": {
                "component": "index"
            }
        }
    },
    
    # 配置页面UI显示
    # 主要分为两种,页面公有与页面私有
    "display": {
        # 这三个都是所有页面公有的,顶部titleBar内容
        "titleBarText": "public title"
        "titleBarBackgroundColor": "#f2f2f2",
        "titleBarTextColor": "#414141",

        # 会增加一个导航栏
        "menu": true,

        # 页面私有内容
        "pages": {
            "Demo": {
                # 这里面的内容就是每个页面私有的了
                "titleBarText": "示例页",
                "menu": false
            },
            "DemoDetail": {
                "titleBarText": "详情页"
            },
            "About": {
                "menu": false
            }
        }
    }
}
@前端进阶之旅: 代码已经复制到剪贴板
fe
  • 前言
    • 与微信小程序的比较
    • 快应用入口
    • 快应用优点
  • 一、环境搭建
    • 1.1 安装NodeJS
    • 1.2 安装hap-toolkit
    • 1.3 创建项目工程
    • 1.4 连接手机进行调试
    • 1.5 安装Hap Extension
  • 二、快应用结构分析
    • 2.1 文件组织
    • 2.2 源码文件
    • 2.3 manifest配置
    • 2.4 app.ux
    • 2.5 style样式
    • 2.6 template模板
    • 2.7 script脚本
      • 2.7.1 模块声明
      • 2.7.2 对象
        • 2.7.2.1 页面级组件
        • 2.7.2.2 自定义组件
        • 2.7.2.3 公共对象
        • 2.7.2.4 应用对象
        • 2.7.2.5 页面对象
      • 2.7.3 方法
        • 2.7.3.1 数据方法
        • 2.7.3.2 公共方法
        • 2.7.3.3 事件方法
        • 2.7.3.4 应用方法
        • 2.7.3.5 页面方法
    • 2.8 指令
  • 三、生命周期
    • 3.1 APP的生命周期
    • 3.2 页面生命周期
  • 四、置顶对象
  • 五、全局对象
  • 六、元素属性方法
  • 七、页面设计
  • 八、组件
  • 九、页面切换和参数传递
    • 9.1 参数传递
    • 9.2 页面间通信
  • 十、组件通信
  • 十一、Deeplink
  • 十二、事件监听与触发
  • 十三、打包及发布
    • 13.1 编译工具
    • 13.2 IDE发布
  • 十四、快应用分享专题
  • 十五、上传到快应用中心审核
  • 十六、一些问题
  • 十七、快应用开发资源
    • 官方资讯
    • 官方文档
    • 工具
    • 示例
    • 插件
    • 教程
    • 讨论
    • 分享

← 初识Vue与环境搭建 数据驱动与脚手架入门(一)JavaScript数组方法总结 改不改原数组一次记牢 →