官方服务微信:dat818 购买与出租对接

深入解析单页面应用与多页面应用的优缺点及 SEO 影响

7392

主题

2

回帖

2万

积分

管理员

积分
22326
发表于 2024-11-23 02:17:01 | 显示全部楼层 |阅读模式
    一、定义 1、单页应用

    单页面应用程序也称为SPA(Page),是指使用单个HTML完成多个页面切换和功能的应用程序。这些应用只有一个HTML文件作为入口,一开始只需要加载一次js、css等相关资源。使用js完成页面布局和渲染。页面的展示和功能都是基于路由来完成的。单页应用跳转意味着切换相关组件,仅刷新本地资源。

    优势:

    如果用户体验好的话,前后端页面分离的效果会更酷(比如切换页面内容时的过渡动画)

    缺点:

    不利于seo(搜索引擎优化)。导航不可用。如果一定要导航,则需要自己实现前进和后退。初始加载时间较长,页面责任感大大提高。 2. 多页面应用

    多页面应用程序也称为MPA(Multi Page),是指具有多个独立页面的应用程序。每个页面都要重复加载js、css等相关资源。多页面应用跳转需要全页面资源刷新。

    优势:

    有利于降低seo开发成本

    缺点:

    网站的后期维护比较困难,页面之间的跳转时间较长,用户体验较差。代码重复级别2、模型图1、单页应用模型图

    2、多页面应用模式示意图

    3、两者的具体区别是单页面应用程序(SPA)和多页面应用程序(MPA)。

    结构

    一个主页+多个模块组件

    许多完整的页面

    资源文件(css、js)

    组件共有的资源只需要加载一次

    每个页面必须加载自己的公共资源

    刷新方式

    部分页面刷新

    全页刷新

    网址模式

    /#/第1页

    /page1.html

    /#/第2页

    /page1.html

    用户体验

    页面切换快,体验好;当第一次加载文件过多时,需要进行相关调整。

    页面切换慢,网速慢时体验尤其差。

    适用场景(SEO)

    对体验和流畅度要求较高的应用不利于SEO(SEO可以借助SSR进行优化)。适用于页面频繁切换的场景以及数据传输量大、表单多的场景。

    适合SEO要求较高的应用

    过渡动画

    Vue 提供了易于实现的封装组件

    难以实现

    内容更新

    相关组件的切换,即本地更新

    整个HTML的切换是要花钱的(重复的HTTP请求)

    路由模式

    您可以使用哈希,也可以使用

    普通链接跳转

    数据传输

    因为是单页面,所以使用全局变量即可(Vuex)

    等等缓存方案、URL参数、调用接口存储等

    相关费用

    初期开发成本较高,后期维护较容易。

    初期开发成本较低,但后期维护比较麻烦,因为一项功能可能需要修改很多地方。

    html 文件请求

    第一次进入页面时,会请求一个html文件,刷新即可清除。切换到其他组件。此时路径也发生了相应的变化,但是没有新的html文件请求,页面内容也发生了变化。

    每次页面跳转时,后台服务器都会返回一个新的HTML文档。

    首屏时间

    第一屏时间很慢。当出现第一屏时,需要请求一次HTML,同时发送一次js请求。两次请求返回后,将显示第一个屏幕。

    第一屏时间很快。当访问页面时,服务器返回一个HTML,页面就会被显示。这一过程只经过一次 HTTP 请求。

    4、拓展单页应用原理

    js 会感知 url 的变化。通过这样就可以用js动态清除当前页面的内容,然后将下一页的内容挂载到当前页面。此时,路由不是由后端完成的。相反,前端会这样做,确定页面上显示哪个组件,删除不必要的组件,然后显示所需的组件。此过程是一个单页应用程序。不需要每次跳转都请求html文件。

    单页应用开发可能出现的问题

    客户支持。目前测试中发现部分APP尚不支持hash返回。 APP需要在后退按钮上实现逻辑:如果无法返回,则关闭;如果可以回去,那就回去。

    页面状态被保留。使用react-时,切换页面不会保留页面的滚动高度。页面关闭后,前一个页面被销毁(执行)。如果用户到达上一页的底部然后跳转,返回后会回到顶部。体验上还是差了一些,但距离传统的页面跳转还是差了几步。

    页面有参数。原生查询参数应该在#,index.html?from=#pageA之前。但#后面仍然可以有参数,index.html#pageA?from=。这里的参数在.query或者.中无法获取,但是可以在..中获取。
您需要登录后才可以回帖 登录 | 立即注册

Archiver|手机版|小黑屋|关于我们

Copyright © 2001-2024, Tencent Cloud.    Powered by Discuz! X3.5    京ICP备20013102号-30

违法和不良信息举报电话:86-13718795856 举报邮箱:hwtx2020@163.com

GMT+8, 2024-12-21 18:09 , Processed in 0.075799 second(s), 18 queries .