前端避坑指南丨辛辛苦苦开发的 APP 竟然被判定为简单网页打包?

时间:2022-12-23 17:56:42

传统混合移动App开发模式,通常会使用WebView作为桥接层,但随着iOS和Android应用商店审核政策日趋严格,有时会被错误判定为简单网页打包成App,上架容易遭到拒绝。

既然可能存在风险,那我们可以不使用WebView,通过其他方式来进行渲染,比如使用APICloud推出的JavaScript跨平台开发框架avm.js,其升级后的App引擎不依赖WebView,提供百分百的原生渲染,可以帮助开发者提升渲染的效率和效果,同时还支持组件化开发,提供可靠的后端支持。此外avm.js与Vue语法类似,并兼容 React JSX,APICloud官网还提供了大量的案例和教程,学习成本低,非常适合开发者快速使用。

渲染效率提升明显

下方左图是用avm.js的Grid-View组件实现的列表,右图是使用WebView渲染HTML页面实现的列表,可通过GPU呈现模式分析曲线看到蓝色,绿色平均线降低很多,表示测量和绘制视图列表所需要的时间大幅减少。

前端避坑指南丨辛辛苦苦开发的 APP 竟然被判定为简单网页打包?

Grid-View组件代码举例:

<template>
<grid-view id="gridView" class="main" column-count="3" aspect-ratio="1" inset="10" scroll-y enable-back-to-top onscrolltolower={this.onscrolltolower}>
<cell class="cell" onclick={this.itemClick}>
<text class="title">{item.title}</text>
</cell>
<list-footer class="footer">
<text>加载中...</text>
</list-footer>
</grid-view></template><style>
.main {
width: 100%;
height: 100%;
}
.cell {
justify-content: center;
align-items: center;
background-color: #5cdfdc;
}
.title {
font-weight: bold;
color: #000;
}
.footer {
justify-content: center;
align-items: center;
height: 44px;
}</style><script>
export default {
name: 'test',
methods:{
apiready() {
this.initData(false);
},
initData(loadMore) {
var that = this;
var skip = that.dataList?that.dataList.length:0;
var dataList = [];
for (var i=0;i<99;i++) {
dataList[i] = {
title: '项目' + (i + skip)
};
// 瀑布流效果
// dataList[i].itemHeight = Math.floor(200 + Math.random()*50);
}
var gridView = document.getElementById('gridView');
if (loadMore) {
that.dataList = that.dataList.concat(dataList);
gridView.insert({
data: dataList
});
} else {
that.dataList = dataList;
gridView.load({
data: dataList
});
}
},
onscrolltolower() {
this.initData(true);
},
itemClick(e) {
api.alert({
msg: '点击了项:' + e.currentTarget.index
});
}
}
}</script>

组件化开发

avm.js组件丰富,可自定义开发组件,目前提供系统级基础组件31个,ACT多端框架组件库和开发者贡献多端组件120多个。对于开发团队,随着项目的不断深入、迭代、优化,累积沉淀自己的组件库对于满足敏捷的项目交付要求和快速的迭代维护要求意义重大。

前端避坑指南丨辛辛苦苦开发的 APP 竟然被判定为简单网页打包?

学习成本低,上手容易

avm.js框架语法和Vue语法类似,并兼容React JSX。如果是Vue、React的用户的话,将更易上手avm.js,几乎不需要学习成本。avm.js具备数据驱动特性,编写直观简洁的代码,可以将数据源绑定到应用用户界面,降低逻辑复杂性和开发难度,数据变更将自动实时反馈到用户界面。

  • 使用STML定义一个组件 / 页面

STML组件兼容Vue单文件组件(SFC)规范,使用语义化的HTML模板及对象化JS风格定义组件或页面。STML最终被编译为JS组件 / 页面,渲染到不同终端。

<template>
<view class='header'>
<text>{this.data.title}</text>
</view> </template> <script>
export default {
name: 'api-test',
data(){
return {
title: 'Hello APP'
}
}
}</script><style scoped>
.header{
height: 45px;
}</style>
  • 使用JS定义一个组件 / 页面

JS组件 / 页面符合Web Components 规范,使用define函数进行组件定义,使用render函数渲染到终端。

avm.define('api-test', class extends Component {

    data = {
title: 'Hello APP'
} css(){
return `.header {
height: 45
}`
} render() {
return (
<view class='header'>
<text>{this.data.title}</text>
</view>
);
}});

案例及视频教程

基于提升开发效率的这一目的,avm.js官方页面提供了App与小程序的实战开发培训教程,大量各行业各场景的模板和源码免费使用,在保障App体验效果的同时简化开发流程,提升开发效率。

点餐模版前后端源码教程

《点餐》项目是一个餐饮商户单商家堂食下单应用。 主要功能包括浏览商家主页信息、查看推荐菜品、下单商品、取餐等号等功能。 可以适用于小吃快餐餐饮商户的堂食点单管理,也可以进行稍微二开成为外卖、店铺或者是虚拟服务等电商小应用。

教育培训模板

本项目的一个教育培训服务APP。提供在线浏览机构信息、名师风采和课程预约订购等功能。

模板包含前后端,其中前端代码使用avm.js多端技术开发,可同时编译为Android & iOS App以及微信小程序;后端使用APICloud数据云3.0云函数自定义接口。

服饰商城模板

本模板为在线服饰商城类型,主要功能包括商品展示、商品搜索、购物车、订单管理等。

模板包含前后端,其中前端代码使用avm.js多端技术开发,可同时编译为Android & iOS App以及微信小程序;后端使用APICloud数据云3.0云函数自定义接口。

拼团商城模板说明

本模板为拼团商城类型,主要功能包括商品分类、商品详情、商品搜索、拼团、订单管理等。

模板包含前后端,其中前端代码使用avm.js多端技术开发,可同时编译为Android & iOS App以及微信小程序;后端使用APICloud数据云3.0云函数自定义接口。

后端开发支持

APICloud还为avm.js的使用者提供了服务端开发运维平台,数据云3.0提供了从后端开发、接口联调到上线运营维护等一整套方案。

开发者无需考虑数据库和服务器等基础设施,无需关心服务器测试环境的搭建,数据的备份及服务扩容等与业务无关的工作,只需关心逻辑本身。通过云引擎,云数据库,云函数,内置模型、等功能模块方便用户快速实现常用的后端功能。通过模型库复用快速把常用第三方功能引入到自己的项目中,节省开发时间。同时内置了管理后台、API调试等功能,在增加了自己编写后端服务灵活性的同时方便了前后端开发者的联调和测试。

数据云3.0可以实现很多后端常见的场景,例如:

  • 一个小程序可以在APICloud上存储数据并通过自定义接口实现自己的业务逻辑。
  • 一个移动app应用可以直接基于云平台提供的能力完成后端工作。
  • 一个网站可以展示来自APICloud上的数据,网站的前端也可以放到APICloud平台。
  • 快速开发出项目最小化可行产品来验证市场。
  • 企业内部数字化业务的快速落地。

论坛支持

APICloud官方论坛设有AVM讨论区,开发过程中如果有问题可以到论坛搜索,或发帖寻找有经验的开发者进行讨论,还可以及时获取官方技术的支持。

前端避坑指南丨辛辛苦苦开发的 APP 竟然被判定为简单网页打包?

总体而言,使用avm.js一个技术栈即可同时开发Android & iOS原生App、小程序和iOS轻App,且多端渲染效果统一。avm.js提供了更趋近于原生的编程体验,通过简洁的模型来分离应用的用户界面、业务逻辑和数据模型,适合高度定制的应用开发,感兴趣的前端小伙伴可以来学习尝试下~

前端避坑指南丨辛辛苦苦开发的 APP 竟然被判定为简单网页打包?的更多相关文章

  1. Harmony OS 开发避坑指南——源码下载和编译

    Harmony OS 开发避坑指南--源码下载和编译 本文介绍了如何下载鸿蒙系统源码,如何一次性配置可以编译三个目标平台(Hi3516,Hi3518和Hi3861)的编译环境,以及如何将源码编译为三个 ...

  2. CEF避坑指南(一)——下载并编译第一个示例

    CEF即Chromium Embedded Framework,Chrome浏览器嵌入式框架.它提供了接口供程序员们把Chrome放到自己的程序中.许多大型公司,如网易.腾讯都开始使用CEF进行前端开 ...

  3. electron 编译 sqlite3避坑指南---尾部链接有已经编译成功的sqlite3

    electron 编译 sqlite3避坑指南(尾部链接有已经编译成功的sqlite3) sqlite很好用,不需要安装,使用electron开发桌面程序,sqlite自然是存储数据的不二之选,奈何编 ...

  4. 今天 1024,为了不 996,Lombok 用起来以及避坑指南

    Lombok简介.使用.工作原理.优缺点 Lombok 项目是一个 Java 库,它会自动插入编辑器和构建工具中,Lombok 提供了一组有用的注解,用来消除 Java 类中的大量样板代码. 目录 L ...

  5. Canal v1&period;1&period;4版本避坑指南

    前提 在忍耐了很久之后,忍不住爆发了,在掘金发了条沸点(下班时发的): 这是一个令人悲伤的故事,这条情感爆发的沸点好像被屏蔽了,另外小水渠(Canal意为水道.管道)上线一段时间,不出坑的时候风平浪静 ...

  6. Linux下Python3&period;6的安装及避坑指南

    Python3的安装 1.安装依赖环境 Python3在安装的过程中可能会用到各种依赖库,所以在正式安装Python3之前,需要将这些依赖库先行安装好. yum -y install zlib-dev ...

  7. Hive改表结构的两个坑&vert;避坑指南

    Hive在大数据中可能是数据工程师使用的最多的组件,常见的数据仓库一般都是基于Hive搭建的,在使用Hive时候,遇到了两个奇怪的现象,今天给大家聊一下,以后遇到此类问题知道如何避坑! 坑一:改变字段 ...

  8. Android连接远程数据库的避坑指南

    Android连接远程数据库的避坑指南 今天用Android Studio连接数据库时候,写了个测试连接的按钮,然后连接的时候报错了,报错信息: 2021-09-07 22:45:20.433 705 ...

  9. spring-boot-starter-thymeleaf 避坑指南

    第一步:pom配置环境 先不要管包是做什么的 总之必须要有 否则进坑 <!--避坑包--> <dependency> <groupId>net.sourceforg ...

随机推荐

  1. SqlServer性能优化 提高并发性能二(九)

    补充上一篇修改用非聚集索引: update Employee set age=age+1 from Employee with(index=nc_Employee_Age) where age< ...

  2. offline &period;net3&period;5

    1.加载虚拟光驱 2.dism.exe /online /enable-feature /featurename:netfx3 /Source:D:\sources\sxs

  3. Java 设计模式泛谈&amp&semi;装饰者模式和单例模式

    设计模式(Design Pattern) 1.是一套被反复使用.多人知晓的,经过分类编目 的 代码设计经验总结.使用设计模式是为了可重用代码,让代码更容易维护以及扩展. 2.简单的讲:所谓模式就是得到 ...

  4. Entity Framework访问MySQL数据库的存储过程并获取返回值

      一.创建MySql存储过程 1, CREATE PROCEDURE `InsertAlarmInfo`(in businessindex int, in providerindex int, in ...

  5. 第四篇 Replication:事务复制-订阅服务器

    本篇文章是SQL Server Replication系列的第四篇,详细内容请参考原文. 订阅服务器就是复制发布项目的所有变更将传送到的服务器.每一个发布需要至少一个订阅,但是一个发布可以有多个订阅. ...

  6. Oracle数据库操作常见异常总结

    1.非法的sql语句结束符\n,抛 java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符 实际就是在sql语句的结尾多了标点符号. 2.无效的序列 通常都 ...

  7. Java三大特征之多态&lpar;三&rpar;

    面向对象编程有三大特性:封装.继承.多态. 封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据.对外界而已它的内部细节是隐藏的,暴露给外界的只是它的访问方法. 继承 ...

  8. 记录python接口自动化测试--利用unittest生成测试报告&lpar;第四目&rpar;

    前面介绍了是用unittest管理测试用例,这次看看如何生成html格式的测试报告 生成html格式的测试报告需要用到 HTMLTestRunner,在网上下载了一个HTMLTestRunner.py ...

  9. Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?

    只有想不到,没有做不到,最近抖音风靡好友圈,马上就有技术宅本着“代码改变世界”的理念开始了搞事之路. 需要注意的事,漂亮不漂亮没有明确的界限,每个人都有每个人的审美,只有外表而没有心灵的美也是空洞的. ...

  10. java、maven、tomcat 环境变量配置

    Linux 配置java.maven.tomcat 环境变量 打开 /etc/profile 在下面写上 # java env JAVA_HOME=/usr/local/tools/java   (j ...