大厂的 app 是怎么渲染页面的

2021-07-29 23:00:27 +08:00
 ljzxloaf

是一次性从后端拿到组装完整的数据再渲染,还是分模块去调不同的业务接口(或者是其他方式?),也就是数据是前端自己组装的还是后端组装的。如果是前端组装的话,怎么动态去改变页面布局,一定要等到发版或者跨平台技术?如果是后端组装的话,怎么样保证数据还没到前端的时候的用户体验。

脑洞 1: 后端数据组装完成后,用 http stream 先传 metadata,主要是一些模块的元数据,前端先把框架渲染出来,渲染过程中后面的模块数据也接收到了,再渲染具体模块。app 前端只针对模块类型写渲染逻辑和将 metadata 解析成页面的逻辑,不写具体的页面。

脑洞 2:把这些模块再抽象一层,是不是就成了类似 html 的东西了。像 flutter 这种技术,是不是就是新时代的 js 和 html ?

2993 次点击
所在节点    程序员
10 条回复
liuxu
2021-07-29 23:10:44 +08:00
不知道你说的大厂多大算大,我看 google drive 的接口调用是分模块调用不同业务接口
3dwelcome
2021-07-30 00:03:23 +08:00
最近手机 QQ 有开源核心代码,用的是 HTML 的 Flex 之类构建语法,但又不是基于 webview 的技术。

可能大厂大神多,组内自己写通讯协议,自己写原生组件,都是驾轻就熟。
Rocketer
2021-07-30 00:10:45 +08:00
何不再抽象一层?前端先向后端请求逻辑,也就是应该怎么组装数据,然后再根据逻辑请求真正的数据,这样就怎么样都行了
ericgui
2021-07-30 04:51:03 +08:00
@3dwelcome 哪里有?谢谢
Obrigado0815
2021-07-30 09:16:09 +08:00
我觉得也是,大厂级别的软件,他们的动态性都很强。

比如,双 11 来了,即使我在不更新软件的情况下,整个首页板块,都会和以往不一样。

请问,这是怎么做到的?还是说,这个首页板块,他们用的是 HTML
3dwelcome
2021-07-30 09:23:51 +08:00
ykrank
2021-07-30 10:32:59 +08:00
现在一般都是三条路:
自定义动态模板然后原生渲染,只适合固定类型的布局动态化,不逻辑完备,但性能好。
RN 这种 js 逻辑,然后原生控件渲染的。
Flutter,WebView 这种完全自己渲染的。
还有小程序这种动态化邪教,就是 js 逻辑,webview 渲染,两者分开的,相当于第二第三种的混合
pecopeco
2021-07-30 11:02:23 +08:00
也可能只是预装模块,到了某个时间点本地切换而已
CrownLeo
2021-07-30 12:23:13 +08:00
@Obrigado0815 #5 我们是这么处理的,App 端只做配置的解析,配置是对整个页面样式以及业务逻辑的抽象,然后配置的生成和下发是在服务端完成的
Obrigado0815
2021-08-03 16:47:12 +08:00
@CrownLeo “通过不同的配置参数,渲染相对应的页面模块”,那它这个配置参数,岂不是很庞大?配置的时候,岂不是会很抽象;一般用什么方式去创建、产生配置参数的,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/792582

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX