V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
ljzxloaf
V2EX  ›  程序员

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

  •  
  •   ljzxloaf · 2021-07-29 23:00:27 +08:00 · 3173 次点击
    这是一个创建于 1237 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

    请问,这是怎么做到的?还是说,这个首页板块,他们用的是 HTML
    3dwelcome
        6
    3dwelcome  
       2021-07-30 09:23:51 +08:00
    ykrank
        7
    ykrank  
       2021-07-30 10:32:59 +08:00
    现在一般都是三条路:
    自定义动态模板然后原生渲染,只适合固定类型的布局动态化,不逻辑完备,但性能好。
    RN 这种 js 逻辑,然后原生控件渲染的。
    Flutter,WebView 这种完全自己渲染的。
    还有小程序这种动态化邪教,就是 js 逻辑,webview 渲染,两者分开的,相当于第二第三种的混合
    pecopeco
        8
    pecopeco  
       2021-07-30 11:02:23 +08:00
    也可能只是预装模块,到了某个时间点本地切换而已
    CrownLeo
        9
    CrownLeo  
       2021-07-30 12:23:13 +08:00 via iPhone
    @Obrigado0815 #5 我们是这么处理的,App 端只做配置的解析,配置是对整个页面样式以及业务逻辑的抽象,然后配置的生成和下发是在服务端完成的
    Obrigado0815
        10
    Obrigado0815  
       2021-08-03 16:47:12 +08:00
    @CrownLeo “通过不同的配置参数,渲染相对应的页面模块”,那它这个配置参数,岂不是很庞大?配置的时候,岂不是会很抽象;一般用什么方式去创建、产生配置参数的,
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5934 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:21 · PVG 10:21 · LAX 18:21 · JFK 21:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.