背景
通过 几篇文章 逐步了解了快应用。一开始没太在意,但听的多了,看的多了,用的多了,就觉得还不错。大家都可以尝试一下,相信会有不错的收获。
新手篇
上手超级容易的,只是偶尔写着写着就遇到一些小坑,加上新生态,所以难免要自己多折腾下。
初始化
- 建项目
hap init <ProjectName>
cd ProjectName
npm install
npm run server
npm run watch
-
安装 快应用调试器 后扫描
npm run server
在控制台输出的二维码,点击开始调试。 -
修改任意文件点击保存,手机和 PC 端的调试器将会进行同步更新。
开发
- 目录结构
一开始根据自己的经验建立了目录,然后又都删了,规规矩矩的按照文档来。虽然我不太喜欢把页面平铺到和工具、资源等同级目录,但按照文档来其实是在方便自己:使用默认配置,减少出错几率,加大开发速度。
以下是我的目录结构,可供参考:
├─ sign rpk包签名模块
├─ src
│ ├─ Common 公用的资源和组件文件
│ │ ├─ componentA 组建 A
│ │ ├─ img 图片
│ │ └─ less 样式
│ ├─ Demo 页面目录
│ │ └─ index.ux 页面文件,可自定义页面名称
│ ├─ util 存放请求、验证等通用方法
│ ├─ app.ux APP文件,可引入公共脚本,暴露公共数据和方法等
│ └─ manifest.json 项目配置文件,配置应用图标、页面路由等
└─ package.json 定义项目需要的各种模块及配置信息
- 添加 less 支持
npm install -D less && npm install -D less-loader
- 配置可参见 官方文档。主要是 router 和 features,
versionCode
记得每次发布递增就好 - 顺着看一下官方文档目录
- 尽情的书写代码吧
打包
- 生成签名
openssl req -newkey rsa:2048 -nodes -keyout private.pem -x509 -days 3650 -out certificate.pem
- 在工程的 sign 目录下创建 release 目录,将私钥文件 private.pem 和证书文件 certificate.pem 拷贝进去
npm run release
dist/com.liandi.chainbook_release_5_20181130033054.rpk
就是你的发布包了
避坑指南
- 组建中 public 数据无法获取,只能使用官方不建议使用的 data
- 目录结构不要自己折腾了,否则 router 配置比较麻烦
- 父组建的 style 子组建无法使用,需要提取公用的再 import
- 三元表达式换行,{{}} 无法进行计算,将会直接显示 {{...}},需要使用 private 计算后再渲染
- A 页面跳转到 B 页面且 B 页面中没有子组建时,在 onInit 中,使用 fetch,vmInst.$visible 会为 false,导致 fetch 中使用了推荐的 bindPage 后,回调无法继续执行。因此需要在 onShow 中使用
- A 页面跳转到 B 页面且 B 页面中有子组建,且子组建需要进行 fetch 时:B 页面中需使用 onShow
- B 页面是初始化页面且 B 页面中有子组建,且子组建需要进行 fetch 时:B 页面中需使用 onInit
上线篇
不已上线为目的的开发都是耍流氓
步骤
- 到 厂商帐号绑定 页面逐一绑定
- 绑定过程中记得要到各产商开发者平台上认证公司账号
- 努比亚和魅族的开发者平台提示需要购买授权码才可以注册,这时候不要急着购买,先绑定账号,然后他会在厂商帐号绑定页面把授权码发给你
- 等各产商都认证授权后就可以开始上架你的应用
挫折
- 第一次上架感觉审核的不太严,后面的是换人了还是怎么了,好严。但基本都是由于快应用本身的 bug 拒绝我更新我的应用。感觉好冤 😢
- bug 1:第三方 QQ 注册,提示一键登录 QQ 需将 QQ 升级至最新版本,但 QQ 已为最新版本。让我暂时关闭 QQ 注册
- bug 2:使用 webview 时页面顶部文字被遮挡。说下一个版本产商会解决
- bug 3:华为扫码错误。直接拒绝,没有反馈,公司大就不鸟人么。
- 仅华为一家需要软著,不然不给上架。然后给了我一个链接,说 600 元一个月就可以申请下来了。所以我非常被动的放弃了华为。
统计
- 虽然各大平台有统计,且快应用也有提供 API 接口,但为了方便和省事,选择了接入 轻粒子
- 吐槽下轻粒子,网站居然不是 https,统计为毛要每个页面都折腾一下。但还是祝愿你越走越好
总结
虽然存在很多问题,并且需要很多手机厂商的大力支持。但整个事情还是很有意义的,用户体验也不错,希望能越做越好。
最后秀一下自己的工作成果:《链书》