写点什么

闲鱼前端基于 serverless 的一种多端开发解决方案

  • 2019-11-17
  • 本文字数:1847 字

    阅读完需:约 6 分钟

闲鱼前端基于serverless的一种多端开发解决方案

背景

前端的发展太快了,前端框架和技术的发展也层出不穷,还包括不同智能设备的出现,对前端开发同学来说是个很大的跳转,简单列举下:


  • 前端框架:vue、react、angular

  • 小程序:微信小程序、支付宝小程序、字节跳动小程序

  • 智能设备:苹果设备、天猫精灵、小度


这样就滋生了一些问题,比如我要开发一个通用的页面,兼容不同的端侧和小程序,显然目前是做不到的,我们只能开发多套页面去适配不同的场景,这样的话成本就太高了。


很多同学都在尝试解决这个问题,也催生了类似 taro 这样的多端统一开发框架,这是一个好的解决方案,但是比较被动,缺乏一定的扩展性。


这篇文章我们要探讨的是,看能不能换个角度去解决这个问题,提升开发效率。

ViewModel

当我们在开发一个页面的时候,不管用的是哪一种框架,通常都会抽象出一层 viewmodel 层,它主要有 2 个作用


  • 和服务端进行交互,接受后台返回的数据,进行加工并传递给 view 层渲染

  • 接受 view 层的回调,加工数据并返回给 view 层渲染



从上图中我们可以看出,viewmodel 是一段独立的通用代码逻辑,起到了承前启后的作用。它和 view 层关系更加紧密,因此通常会放在前端测。


既然 viewmodel 是独立的,那我们能不能把它放在后端呢?这样一个最大的好处就是 viewmodel 可以进行复用,不需要在重复编写,而且只需要改动一个 viewmodel,就可以全量生效。



似乎是一个很美好的想法,但是这部分代码由谁去开发呢,总不可能寄希望于后端同学吧,当然只能是我们自己,也感谢于 serverless 架构的出现,让这件事情变成了可能。


有些同学可能会问,既然 viewmodel 后移了,那 view 呢?后续会考虑结合我们的ui2code技术,那真的就比较完美了。

什么是 serverless

我们先简单介绍一下什么是 serverless,serverless 的基础是云技术,它是云技术发展到一定阶段而出现的一种革命性的高端架构。serverless 并不是说不需要服务器,而是指不需要开发者去关心底层服务器的状态、资源和扩容等,开发者只需要关注于业务逻辑实现。


架构上,我们可以把 serverless 分为 FaaS 和 BaaS。



FaaS 是用于创建、运行、管理函数服务的计算平台,它支持多种开发语言,比如 java、nodejs、dart 等,这有利于不同端侧的开发同学介入开发。FaaS 是基于事件驱动的思想,只有当一个函数被事件触发时才会占用服务器资源执行,不然都是无需占用服务器资源的。


BaaS 提供了用于函数调用的第三方基础服务,比如身份校验、日志、数据库等,它是由服务商直接提供,开发者无需关系实现,直接调用即可。

业务落地

我们是通过gaia平台开发后端接口,gaia 可以理解为上文提到的 FaaS 平台。


日常开发中有这样一个需求,下面是这个需求的一个页面。



因为这个页面上的数据比较多,先把它切分成一个个小的模块,后台返回数据的时候也根据模块来返回数据。


我们是根据 viewmodel 来设计接口,首先肯定有一个首屏数据接口;然后是页面上的交互,比如切换卡片、切换芝麻信用按钮,切换会引起页面数据变化,我们可以统一封装一个页面更新的接口;最后是一个开通的接口。


后端接口


前后端交互最重要的数据结构的设计,我们省略了中间的业务逻辑处理,看下接口的数据结构。



首屏接口返回的数据主要有几个特征:


  • 根据前端的页面模块定义返回结构

  • 字段的颗粒度很细,页面上的每个元素都对应一个字段值

  • 有两个字段来控制模块的显示和刷新


更新接口的返回数据结构和首屏接口类似,但是入参有所不同,主要包括 2 个字段:


  • data:当前页面的数据,为了避免数据的重复获取

  • action: 定义的页面操作


前端处理


从后端返回的数据可以看到,数据是及其详细的,无需我们做任何的业务逻辑处理,直接映射到页面即可。这样,前端已经变成了很薄的一层数据,没有任务的业务逻辑处理,变的很简单,当需要迁移到其他端时,只需要迁移视图层即可。当有任何的业务变动时,只需要修改后端的接口,就能生效。

收益与总结

通过具体的实践,我们发现,对于前端开发同学来说,变的简单了,开发效率有很大的提升,前端同学甚至都不需要去理解具体的业务逻辑,就能完成页面的开发。而且,提取的 viewmodel 可以复用到不同的端侧,设置还包括 native 端。我们还可以将 viewmodel 拆分成更小粒度的 viewmodel,方便在不同的页面接口中进行复用。我们有同学还在 FaaS 侧基于 redux 的思想封装了一个通用的状态管理框架,规范了前后端的交互。


后面, 还有一些问题待我们去解决,比如开发成本、viewmodel 的逻辑拆分、具体接口问题定位等。


本文转载自公众号闲鱼技术(ID:XYtech_Alibaba)。


原文链接


https://mp.weixin.qq.com/s/VLsVTe4ZyOJ9rNyVf5aXyg


2019-11-17 08:003599

评论

发布
暂无评论
发现更多内容

MySQL运维5-Mycat配置

EquatorCoco

MySQL 标签 配置化

抖音关键词商品列表API:电商行业的成功之道及实时数据获取的魔力

Noah

Null-Aware 问题对 TiDB 优化器的影响(OOM)

TiDB 社区干货传送门

性能调优 管理与运维 故障排查/诊断 TiDB 源码解读 6.x 实践

欧睿 × 和鲸:联合打造 AI 中台赋能企业数字化转型,大幅提升模型产品研发效率

ModelWhale

人工智能 数据分析 数字化转型 企业 数智化

从信息量角度看人类智能与机器智能

Baihai IDP

人工智能 程序员 AI LLM 白海科技

解放生产力!苏哒智能加入飞桨技术伙伴计划,用大模型革新企业办公工具

飞桨PaddlePaddle

人工智能 深度学习 办公 伙伴赋能

Nodejs项目yarn和node启动的区别

JavaScript node.js typescript YARN prisma

诚邀报名 | 内核Hacker与Mogul邀您共论操作系统技术创新与发展

开放原子开源基金会

Java 开源 程序员 开发者 算法

网易游戏与华为达成鸿蒙合作

最新动态

TiDB 优化器逻辑优化之 OR 表达式条件消除

TiDB 社区干货传送门

性能调优 TiDB 源码解读

最佳 Mock 工具排行榜: 顶级5个必知选择

Liam

前端 前端开发 Mock Mock 服务 Mock.js

通过 Sysbench 在低配置低数据基础上分别压测 MySQL 和 TiDB,实际结果 TiDB 出乎我的想象。

TiDB 社区干货传送门

版本测评 性能测评 数据库架构设计 6.x 实践

【嵌入式Qt开发入门】在Ubuntu下编写C++教程。

百度搜索:蓝易云

c++ Linux ubuntu 云服务器 qt

抖音商品详情API接口在电商行业中的重要性及实时数据获取实现

Noah

义乌购商品详情数据接口|义乌购商品数据接口|义乌购API接口

tbapi

义乌购商品详情数据接口 义乌购数据接口 义乌API接口

观测云产品更新 | 智能监控、数据访问、指标分析等优化

观测云

智能监控 指标 数据访问

如何做到人均告警减少90%?B站新一代告警平台的设计与实践

TakinTalks稳定性社区

TiCDC核心原理解析

TiDB 社区干货传送门

性能调优 管理与运维 应用适配 TiCDC 源码解读

掌握接口 RPC 测试:构建高效远程调用接口

Apifox

程序员 微服务 后端 RPC 接口测试

tidb这种把数据库放入docker是否是个好主意。

TiDB 社区干货传送门

数据库架构设计

紫光展锐T820与飞桨完成I级兼容性测试 助推端侧AI融合创新

飞桨PaddlePaddle

人工智能 机器学习 程序员 硬件

闪闪发光的“她”· Ladies in Tech |相聚女性开发者论坛

开放原子开源基金会

Java 开源 程序员 开发者 算法

前方高能!2023开放原子开发者大会亮点攻略,一触即发

开放原子开源基金会

Java 开源 程序员 开发者 算法

华为云CodeArts Check常见问答汇总

华为云PaaS服务小智

华为云

VSCode+GDB+Qemu调试ARM64 linux内核教程。

百度搜索:蓝易云

Linux vscode gdb 云服务器 qemu

数据中台的学习与总结 主赛道:技术人的 2023 总结

Echo_Wish

大数据 数据中台 年度总结 2023 2023年

关于响应式布局,你需要了解的知识点

EquatorCoco

响应式 页面布局 布局

10倍提升-TiCDC性能调优实践

TiDB 社区干货传送门

迁移 性能调优 管理与运维 故障排查/诊断 备份 & 恢复

【12 月 23 日 上海线下活动预告】 数据库运维有话聊,谈谈你了解的灾备实践

TiDB 社区干货传送门

关键词搜索淘宝商品列表数据接口|淘宝商品列表接口|淘宝API接口申请指南

tbapi

淘宝电商 淘宝API接口 淘宝商品列表数据接口 关键词搜索淘宝商品接口、

KaiwuDB 连续三年荣获开源中国“优秀开源技术团队”

KaiwuDB

KaiwuDB 优秀开源技术团队

闲鱼前端基于serverless的一种多端开发解决方案_架构_还休_InfoQ精选文章