网页:网页不需要安装,体验不是很好;
原生应用:原生应用体验流畅,但需要从应用商店下载安装,难以一步直达用户,安装包消耗大量流量;
快捷应用:深度融入移动操作系统,用户无需下载安装即可直接在手机上运行,并能流畅体验应用内容。
与微信小程序类似,微信小程序嵌套在微信应用中,快应用嵌套在手机系统中。
入口比较齐全,包括:URL链接、全局搜索、应用商店、浏览器、负一屏、系统桌面、PUSH、语音助手、安全中心、垃圾清理、信息助手、天气、短信模板、日历、个性化主题、文件管理...
开发技术
快应用采用的是前端技术栈,由基本标签、样式、js脚本等组成,类似于Vue的开发方式。
快速应用程序是使用 MVVM 设计模式开发的。 开发者无需直接添加或删除DOM节点,采用数据驱动的方式完成节点更新。
开发实时编译渲染,完成后打包生成rpk包上传平台。
快速开始
1.安装应用快速开发工具://
2.新建一个快应用项目
3. 代码结构
4、开发与调试
5.编译、打包并提交测试
6.上传至官网开发者中心并提交审核发布。
遇到的问题及解决方案 缺点
实际开发经历中遇到的问题:
遇到的问题及解决方案
1. 开发工具运行滞后
现象:快速应用开发工具运行时间较长后会出现卡顿现象。
解决办法:可以退出并杀死快速应用开发工具,然后重新打开。
2. 运行开发工具时出错
现象:初次安装时报错,开发过程中报错,编译时偶尔报错。
解决方案:查看右侧预览错误信息 => 查看底部错误信息输出 => 监控 => 代码二分排查 => 重启开发工具 => 重启电脑
阐明:
3.生命周期函数执行问题
页面执行顺序 => =>
仅自定义组件=>
现象:加载过一次的页面只有返回重新进入时才会执行。 此时,页面中自定义组件的生命周期函数将不会被执行。
解决办法:在页面中添加if并修改为false。 100ms后,将其更改为true以强制子组件刷新。
4.定位不支持z-index控制级别
现象:z-index无效。 当多个定位元素相互覆盖时,后面渲染的元素会在上面。
解决方案:使用堆栈组件代替。 堆叠容器子组件以级联布置方式布置。 每个直接子组件按顺序堆叠,覆盖前面的子组件; 使用代码逻辑来控制顶层显示的最终渲染。
5.私有自动登录API导致预览无法使用。
现象:使用OPPO私有自动登录API时,模块不存在并报错,导致开发者工具右侧预览失败,无法实时开发调试。
解决方案:封装登录方法,调试阶段引入参数控制硬编码的登录token,不要走私登录API。
6.页栈中过多的数据被破坏
现象:由于阅读页和详情页的ID不同,所以每次都会生成一个新的页栈。 如果页堆栈的数量超过5,则内存中最早缓存的页数据将被破坏。 一般的表现就是主页会变成空白,因为最新的就是主页了。
解决方案:使用 . 阅读页、详情页等带ID的页面替换.push; 如果监控页栈数量超过5则记录,返回首页时重新加载数据。
7.定时器问题
现象:定时器中的函数执行报错“”。 A页面跳转到B,后台继续监听A页面的定时器,当定时器执行完毕后,A页面已经被销毁,报错。
解决方案:添加一个方法,在执行函数之前判断页面是否存在。 所有定时器都使用以下方法:
const bindPageLC = () => {
Function.prototype.bindPage = function (vmInst) {
const fn = this
return function () {
if (!vmInst) {
throw new Error('使用错误:请传递VM对象')
}
if (vmInst.$valid) {
return fn.apply(vmInst, arguments)
} else {
console.error('页面销毁时,不执行回调函数')
}
}
}
}
bindPageLC()
setTimeout(function() {
}.bindPage(this), 500)
8.系统字体设置更改导致内容错位
现象:手动修改系统字体大小而不适配导致页面错位。 目前还没有相关的API可以监控系统字体大小的变化。
解决方案:.json 关闭字体大小响应 "": "none"。
9. 系统显示设置更改导致内容错位
现象:如果手动修改系统显示尺寸,富文本容器中嵌入的HTML元素会变大且错位。 "": "none" 只能关闭,不响应系统字体变化。
解决方案:不要使用富文本容器嵌入HTML,而是使用div、text等组件。
10.屏幕适配
快应用和负一屏卡默认尺寸为“”:750,750的设计图可以1:1写样式;
如果“”:1080、375张图片需要乘以3,可以在公共样式中定义变量,@3:3px;
具体用法::156*@3;:16*@3 16*@3 0;
11.夜间适应
现象:监听夜间模式,然后改变最外面的样式来改变颜色。 发现不行。 每个元素都需要单独更改才能有效。
解决方案:快应用可以使 @media (-color-: dark) {} 适应夜间媒体查询。 .json中 "": -1,跟随主题颜色,"": true,启用反色
图片暗夜src替换:监听主题模式切换ed并获取当前主题模式。 ()
组件单独关闭反色:=“false”
自定义样式:使用媒体查询来调整 @media (-color-: dark) {}
12.阅读页面垂直翻转模式1.0广告问题
现象:多个广告组件for循环,绑定触发加载,每个组件会多次触发事件; 广告组件回调会被多次触发。
解决方案:添加索引缓存,过滤掉已加载的组件; 将广告对象提取到外部公共引用,将数据传输到广告组件以渲染数据,并执行数据缓存过滤。
13. 2.0 原生广告注意事项
:最外层通过if重新渲染加载新广告
成功:返回的数据不再有广告ID
点击:广告曝光和点击只会触发一次。 再次点击不会触发广告点击报告,不会有收入; if不会用来触发广告跳转区域
控制,不然点击没有反应,用show来控制
关闭:使用show而不是if来自定义广告元素的关闭,这样就不会跳转到广告链接了。
14.安全审计问题
需要设置为关闭;
同意隐私协议之前发生的互联网行为:所有请求必须在同意该协议之后提出;