SS Sub
免费、付费机场节点和订阅

为什么 WEB 技术发展到现在都变成单页模式了?以后一直这样下去么?

V2EX = way to explore

V2EX 是一个关于分享和探索的地方

现在注册

已注册用户请  登录

• 请不要在回答技术问题时复制粘贴 AI 生成的内容

zsvc

V2EX  ›  程序员

为什么 WEB 技术发展到现在都变成单页模式了?以后一直这样下去么?

  •  
  •   zsvc · 20 小时 32 分钟前 · 6832 次点击

    现在

    在大或是超大项目中单页模式看不有什么优势每次修改都需要重新打包编译部署。都是全量更新。
    在上古时代 jsp 模式下都是修改哪块改哪块,部署那块。不用每次全量部署更新。
    为什么越发展感觉越落后了呢?

    未来

    以后的 WEB 框架发展还是会变成什么样子?返回到到以前的模式。还是保持单页模式?
    如果 WEB 与后段业务按插件或是微服务模式,使用才会加载部署不使用就停止不是更节省资源么?效率更高么?

    为什么现在的前端主流都是单页模式?

    第 1 条附言  ·  19 小时 38 分钟前

    附加问题

    考虑开发大或超大形式系统如 ERP 类似超级多的功能模块为什么都会选择模块化模式?而很少有单页模式去解决呢?
    如果有一套前后端都能够灵活配置扩展的前端分离微微服务框架模式不是更好么?
    为什么现在主流市场没有成熟的产品框架呢?返到是前后端越发展越撕裂感。学的东西多东西真的会调整开发效率或是运维效率能有多少呢?

    46 条回复    2025-04-28 15:05:46 +08:00

    y0bcn
        1

    y0bcn  

       20 小时 24 分钟前

    得益于网速以及客户端性能的大幅提升,开发效率和开发体验要大于你说的节省资源
    meteora0tkvo
        2

    meteora0tkvo  

       20 小时 23 分钟前

    单页模式体验更好吧,不用进行一些小操作就要触发整个页面刷新
    MagicalCarl
        3

    MagicalCarl  

       20 小时 22 分钟前

    国内是这样的,国外比较流行 next.js 与 remix.js 可以看成不是单页模式
    zsvc
        4

    zsvc  

    OP

       20 小时 22 分钟前

    @y0bcn 哪会出现前端功能部署了但是后端微服务部署使用的情况。设计架构上存在优化的点呀!前端会有冗余。
    bruce0
        5

    bruce0  

       20 小时 15 分钟前

    @meteora0tkvo 这个应该不是单页模式的主要优点, jsp+Ajax 一样能实现局部更新而不刷新整个页面. 我觉得主要还是 vue 这些框架和打包工具流行后才逐渐兴起的, 还有就是 Android 套 H5 的开发模式,促进了单页面的发展
    dfkjgklfdjg
        6

    dfkjgklfdjg  

       20 小时 14 分钟前   ❤️ 3

    超大型的前端项目也可以按模块部署编译的。
    只是现在绝大部分的前端搞不来,而且需求场景比较少。
    而且很多超大型项目其实都可以拆分成多个独立的大项目。
    defunct9
        7

    defunct9  

       20 小时 12 分钟前   ❤️ 3

    天下大势,合久必分,分久必合。
    wanguorui123
        8

    wanguorui123  

       20 小时 10 分钟前

    单页面局部刷新体验更好点
    MonikaCeng
        9

    MonikaCeng  

       20 小时 9 分钟前 via iPhone

    nextjs 就不是单页,而且越来越多人用
    opengps
        10

    opengps  

       20 小时 7 分钟前

    单页模式最大的原因就是为了兼容 APP ,让手机端的网页体验能接近 APP
    lynan
        11

    lynan  

       20 小时 6 分钟前

    > 返回到到以前的模式。还是保持单页模式?

    个人拙见,返回是不可能的,现在的开发模式就是为了解决以前的问题。那么现在遇到新的问题,应该去解决新的问题,而不是回到以前去面对以前的问题。

    SPA 和 MPA 有各自的适用场景。

    lynan
        12

    lynan  

       20 小时 4 分钟前

    SPA 适用于类 App 的开发,典型的就是各种 PWA ,MPA 适用于 App 端内嵌的 Web 页面开发
    676529483
        13

    676529483  

       20 小时 3 分钟前   ❤️ 2

    全量编译:CI 太慢可以加缓存,大多数项目时间没要求
    全量部署:增量不好回滚,还有最关键的可能导致线上代码和预期不一致,虽然全量费时间但是稳定

    以上都是运维角度的一些经验吧

    songray
        14

    songray  

       20 小时 1 分钟前   ❤️ 1

    先说是不是,再说为什么。

    是不是?不是。
    大型和超大型项目在前端的角度来看并不是“一个项目”,比如随便找一个互联网大厂的 App 都包含了海量的 h5 活动页,实际上这些活动页一个业务甚至一个模块就是一个 git repo 。
    每一个产品都是来自于天南地北好几个办事处几百个外包攒出来的,这种情况下 JSP 热更新那套逻辑根本不适用。

    再说为什么,因为这点损耗不是你需要担心的,容器有没有损耗? k8s 有没有损耗?服务网格有没有损耗? CI/CD 是不是成本呢?
    现代软件开发逻辑本来就是用性能换可维护性并降低人力成本,人才是最贵的。如果对于这点没有实感的话,一个校招生一年的薪资够你加两台机器,更不用说开发人员数量增加后,配套人员和设施的成本了。

    wunonglin
        15

    wunonglin  

       19 小时 49 分钟前   ❤️ 2

    [现在]
    1 、前端也有微前端,虽然不完美,但是能够解决一定的问题
    2 、jsp 、php ,正规生产环境不可能让你替换单个文件,都是按版本进行整体应用更新。如果是开发环境、那么用什么方式都没差。
    3 、jsp 、php 等开发逻辑与前端开发生态存在断层,js 开发人员需要学习 jsp 、php ,导致不必要的上手成本。
    4 、前端领域也有“jsp”,那就是 next.js 、nuxt.js 、analog.js 等前端全栈框架,开发体验已经可以替代传统 jsp 、php 。

    [未来]
    1 、前端有多种开发方式,SPA ,MPA ,SSR 、SSG 等等,远比 jsp 、php 丰富
    2 、上面也说了,前端也有微服务,虽说不完美,但是页面的逻辑和后端微服务不一样。
    3 、SPA 能够解决 90%的应用场景,所以 SPA 流行,需要 SEO 的特殊需求可以通过 SSR 补全剩下的 5%,纯静态的文档、博客网站,可以使用 SSG 模式。

    不管那种模式,前端的生态都是可以复用的、共享的,你看看 jsp 、php 是不是就显得单一了许多

    acthtml
        16

    acthtml  

       19 小时 48 分钟前

    大项目需要自定义编译颗粒度,一个小的改动不至于影响所有已编译文件。
    QlanQ
        17

    QlanQ  

       19 小时 36 分钟前

    个人粗鄙的见解就是,单页面的形式,就是把页面和后端接口 解耦了,前后端更灵活
    而且开发体验更好,而且越是大型的项目,相对维护成本越低
    kneo
        18

    kneo  

       19 小时 36 分钟前 via Android   ❤️ 2

    单页模式的优势是客户端状态好维护。在服务器维护简直就是吃屎。
    iapplebear
        19

    iapplebear  

       19 小时 32 分钟前

    多页模式怎么维护状态,虽然有些方法,简直灾难
    mumbler
        20

    mumbler  

       19 小时 29 分钟前

    连 youtube 都能单页,你们那点应用算个什么
    shoco
        21

    shoco  

       19 小时 29 分钟前

    以前讲 B/S 和 C/S, 大单页是为了达到 C/S 效果的 B/S 应用
    skyadmin
        22

    skyadmin  

       19 小时 27 分钟前

    emmm ,差版本了,23 年已经在讨论 MPA 比 SPA 好了: https://dev.to/begin/why-does-everyone-suddenly-hate-single-page-apps-cj5
    msg7086
        23

    msg7086  

       19 小时 19 分钟前

    单页面程序可以类比桌面应用程序,或者叫胖客户端。你说的那种,是瘦客户端模式。

    我是不知道为什么你会觉得「全量部署更新」是一种落后。

    大型或者超大型系统现在也在往单页上靠拢。你问为什么很少有单页模式解决问题?因为企业级项目更新速度更慢,从古老技术切换到新技术需要大量的时间。我司算是企业级项目开发排前列的厂,今年刚刚在开始淘汰 Java 8 ,以及前端在从古老的 HTML 网页架构往现代化的 MVVM 架构迁移。

    ryne6
        24

    ryne6  

       19 小时 16 分钟前

    ERP 这种 单页模式用着比多页舒服吧,还可以增加页面缓存等
    webs
        25

    webs  

       19 小时 14 分钟前

    够用就好。。也说明 web 只有 landing 的作用了,核心价值还是得靠 API 提供的数据
    james122333
        26

    james122333  

       19 小时 6 分钟前 via Android

    这是开发工具问题 不是单页问题 事实上你用旧技术也可以写单页 可以整成只替换少数文件的单页 如果你写的够灵活 自己刻可以这样做
    但你这样做保密性就不足 外加前端是透明的 现在整的编译再编译然后混淆加密或者执行档都是差不多原因 第一提高被反向成本 第二刻意提高从业门槛
    jsp 个人觉得远不如 php 都是可见不用说 相比动态性不足的 php 因为动态语言的关系除了以上保密方法还可以整花活 只不过很少人想到
    所以很喜欢写脚本类的 shell 类的更是 因为太动态
    meteora0tkvo
        27

    meteora0tkvo  

       19 小时 2 分钟前

    @bruce0 如果是做频繁地 fetch 无刷新更新页面数据,用 Vue React 这些框架有助于加快开发速度,降低开发成本,所以企业更倾向于做单页了(虽然在网页性能上不如传统的 html 开发的好)
    gausszhou
        28

    gausszhou  

       18 小时 0 分钟前 via Android

    csr ssr ssg 都有,不过目前确实以 csr 为主。
    rick2c
        29

    rick2c  

       18 小时 0 分钟前

    前端也可以做增量更新呀,我就曾经使用 git diff 做增量更新,但是 webpack5+esbuild 出来以后增量和全量其实没有很大的区别,没有必要去单独维护一个工程
    luoqeng
        30

    luoqeng  

       17 小时 57 分钟前

    把浏览器当成跨平台操作系统,WEB 当成 APP 就理解单页面模式了
    fenglirookie
        31

    fenglirookie  

       17 小时 39 分钟前

    @MagicalCarl 实际上也是单页模式
    fenglirookie
        32

    fenglirookie  

       17 小时 39 分钟前

    @MonikaCeng 也是单页
    sakura1988
        33

    sakura1988  

       17 小时 35 分钟前

    点一下就刷新页面你觉得体验很好?
    retrocode
        34

    retrocode  

       17 小时 31 分钟前

    一个重要的特性是前端 hash 模式,路由是前端自行控制, 不经过后端, 这点还是蛮重要的, 有效降低后端压力提升体验
    Linho1219
        35

    Linho1219  

       17 小时 26 分钟前 via Android

    1. 首先,并非每次都全量更新,大部分打包工具都有手动 chunk 的功能,如果项目确实太大可以把不同模块分到不同 chunk 里面,只更新变化的部分,这是很常见的优化手段
    2. 为什么要打包?因为有收益啊,传统方式在加载时会下载大量文件,产生大量请求,打包完之后请求数量减少,客户端也轻松,服务器也轻松
    3. 单页模式是为了在导航时不需要重新加载页面上一直存在的部件(例如顶栏侧栏等,以及一些博客的 live2d 看版娘),页面切换过渡更顺畅,也减少网络请求
    4. 后端业务插件按需启停就别想了,管理启停的成本高于持续运行的成本
    5. 不太理解你说的“前后端发展撕裂”,前后端本来就不太应该“融合”,只是曾经前端技术受限制,由服务器处理一切罢了。前后端分离、解耦,通过统一的 API 交换数据,便于维护和扩展,这是符合工程原则的。例如某天需要开发 App 端,就可以很方便地接入
    HeyWeGo
        36

    HeyWeGo  

       17 小时 23 分钟前

    我的感觉是受到手机应用的影响。
    ratazzi
        37

    ratazzi  

       16 小时 54 分钟前 via iPhone

    user23125
        38

    user23125  

       16 小时 21 分钟前

    现在大家为了 SEO 又搞 SSR 了,历史是个轮回。。。
    LandCruiser
        39

    LandCruiser  

       16 小时 16 分钟前

    很简单,因为你不是专业前端,你不懂现代的需求和技术,所以不懂单页面的好处。
    tog
        40

    tog  

       16 小时 10 分钟前

    楼主想找的是微前端吧
    mxT52CRuqR6o5
        41

    mxT52CRuqR6o5  

       15 小时 31 分钟前

    @bruce0 #5 说的就是整体更新而不是局部更新,当我从一个页面跳转另一个页面时,用 js 操作刷新整个页面而非进行真实跳转导致重新加载页面,跳转新页面的速度会更快
    如果没有 SPA 框架纯靠手撸实现相同效果难度就大了去了
    mxT52CRuqR6o5
        42

    mxT52CRuqR6o5  

       15 小时 24 分钟前

    「开发大或超大形式系统如 ERP 类似超级多的功能模块为什么都会选择模块化模式?而很少有单页模式去解决呢?」
    首先这些系统可能有很久的历史,在 SPA 出来前就进行开发了,又不是未来战士没法选择未来的技术栈
    还有就是 B 端系统(相比 C 端)没那么在意性能,不会不计代价地把性能抠到机制,C 端那是宁可用 rust 开发编译工具,也不会为了开发人员的体验去牺牲那一点点的性能,性能高一点点转化率数据就能好一点点(尤其是国内网民数量也多,那些大厂产品用户量都很多,即使是一点点的相对数据提升,换算成绝对数据,量也是很大的)
    iwfan
        43

    iwfan  

       15 小时 12 分钟前

    想来 OP 不是专业画 UI 的,我来尝试回答一下:

    为什么现在主流的页面组织结构都是单页模式?

    因为单页模式下网页切换速度更快、切换过程更丝滑。网页切换速度快的原因是因为单页模式下页面切换是基于浏览器路由而不是服务端路由,而且浏览器无需全页渲染切换后的页面,此时 UX 更好。

    为什么在大或是超大项目中单页模式看不有什么优势?

    看不到不是没有,单页事实上就是比多页切换快,无论何种规模。但我感觉 OP 想问的应该不是这个,或许是为什么(超)大型网站多数不采用单页应用组织方式?

    为什么单页应用无法增量更新?

    实际上都是增量更新的,大部分项目都是全量构建、增量部署。

    未来的发展会是什么样子?

    无法预测、但未来也不是凭空产生的,都是在目前的基础上迭代发展来的。

    dufu1991
        44

    dufu1991  

       15 小时 5 分钟前

    谁说的单页每次都是全量更新?如果在意,你打包的时候不按照模块做拆包优化吗?
    DOLLOR
        45

    DOLLOR  

       15 小时 4 分钟前

    跨页面管理状态是非常麻烦的事情。
    页面跳转,意味着那些 polyfill 、框架、组件库、样式、登录状态又得重新初始化,那些公共界面比如菜单、导航栏之类又得重新生成。
    billbob
        46

    billbob  

       14 小时 14 分钟前

    因为现在,太多的终端设备,不同大的屏幕,单页程序完美解决了,现代浏览器的方案.

    未经允许不得转载:机场推荐官 » 为什么 WEB 技术发展到现在都变成单页模式了?以后一直这样下去么?