您可能并不需要单页应用程序

这篇具有很好参考价值的文章主要介绍了您可能并不需要单页应用程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前端框架的迅速崛起,如React、Angel、Vue.js、Elm等,使得单页面应用程序(Single Page Application)在网络上无处不在。对于许多开发人员来说,这些已经成为他们“默认”工具集的一部分。当他们开始一个新项目时,他们会使用他们已经知道的工具:后端的REST API和Reaction/Angel/Vue/Elm前端。
这些工具有什么问题吗?绝对不是。事实上,我喜欢使用这些工具。然而,只有当实际需求将我推向那个方向时,我才会选择这个架构。如果没有特定的理由构建单页面应用程序,我每天都会使用传统的服务器呈现的体系结构。
它更简单,让您可以更快地操作:

  • 无状态请求
    传统的web服务器是无状态的。这意味着每个端点都可以独立地进行推理和测试。相比之下,单页面应用程序必须明确定义整个会话期间前端如何加载、刷新和丢弃所有状态。这引入了新的缓存/同步问题,这些问题在服务器渲染的世界中是不存在的。

  • 浏览器知道如何处理传统架构
    如果你选择单页面应用程序路线,你总是需要额外的代码来模拟简单的浏览器功能。我花了很多时间来确保正确管理浏览器历史记录,加载动画看起来平滑,当用户浏览历史记录时恢复滚动位置等。真是一团糟。

  • 更少、更成熟的工具
    Rails、Phoenix、Lavarel等框架已经存在一段时间了,它们非常稳定。我大约在5年前学习了Rails,我的知识现在仍然很有用。与此同时,我还学习了Gulp、CoffeeScript、BackboneJS和SASS,这些都已经被新的工具取代了。避免Javascript疲劳不要过度依赖Javascript!

  • 免费搜索引擎优化
    单页面应用程序必须添加额外的基础设施和代码,以确保它们可以被爬虫程序索引。如果您的动态页面上需要SEO,则使用服务器呈现的体系结构更容易实现。

所有这些都意味着单页应用程序给开发人员带来了更多的复杂性和认知负担。以我作为开发人员的经验来看,复杂性和认知负荷是导致软件bug和开发速度减慢的最大因素。

何时使用单页应用程序?

正如我所说,大多数情况下的默认选择应该是传统的服务器渲染的应用程序。然而,有些需求可能会强制你选择单页应用架构:

  • 核心功能是实时的(例如Slack)
  • 丰富的UI交互是产品的核心(例如Trello)
  • 屏幕之间共享的大量状态(例如Spotify)

这些产品必须使用单页架构才能正常工作。这就是为什么它是这些公司的正确选择。然而,许多基于Web的产品没有这些要求,这种复杂性是可以避免的。

混合解决方案

即使你的应用程序需要一些实时功能或丰富的交互,你也不需要在整个应用程序中使用SPA范式。一个很好的方法是将小型前端应用程序嵌入到传统架构中。

Github使用这种混合方法。他们网站的主干是一个传统的Rails应用程序,但有些地方,如projects选项卡,是作为嵌入式前端应用程序构建的。这是一个完美的解决方案,结合了两者的优点。最棒的是,你可以从简单的开始使用这种方法,然后逐渐添加更复杂的UI交互。

我还决定在我当前的项目貌似有理的分析中使用混合方法。它是我一直在研究的谷歌分析的一个以隐私为重点的替代方案。大部分应用程序都是在服务器端渲染的。但是,我希望主仪表板(demo)具有非常丰富的UI,具有动画和刷新数据,而无需重新加载整个页面。当你打开页面时,前端路由会接管一切,所有内容都在React中渲染。

这一切归根结底是权衡

与编程中的所有事情一样,SPA与传统架构之间的困境没有唯一的答案。有些情况下使用SPA是有意义的,因为你需要一个时髦的实时UI。然而,我们应该认识到,这是以牺牲开发速度为代价的。如果单页应用不是必需的,我们可以通过传统的方法来避免额外的复杂性并更快地迁移。

为工作选择正确的架构会对生产力和最终的成功产生巨大的影响。我们的目标应该是在我们的工具箱中有两种架构,这样我们就可以在每种情况下使用最优解决方案。文章来源地址https://www.toymoban.com/news/detail-646176.html

到了这里,关于您可能并不需要单页应用程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 基于Vue前端框架构建BI应用程序

    Vue(Vue.js)是一个轻量级、高性能、可组件化的MVVM库。简而言之,是一个构建数据驱动的web界面的渐进式框架。它采用MVVM思想,通过数据双向绑定实现数据的动态渲染,同时也支持组件化的开发方式,使开发更加高效和可复用。 响应式编程: Vue会自动对页面中某些数据的变

    2024年02月10日
    浏览(43)
  • 如何简单的上手JavaFX17+?解决“缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序”等问题

    JavaFX是一个Java的一个ui库,但是自从java8以后,它很悲惨的被从OpenJdk中移除了,因此我们使用它来进行开发时,如果我们使用的是8以后的版本,经常会遇到一些问题。这里针对新手做一个简单的引导(悲,也许根本没新手来学吧) Fx的入门并不复杂,如果你学过其他的Ui库或

    2024年02月02日
    浏览(43)
  • 如何使用CORS和CSP保护前端应用程序安全

    前端应用在提供无缝用户体验方面起着核心作用。在当今互联网的环境中,第三方集成和API的普及使得确保强大的安全性至关重要。安全漏洞可能导致数据盗窃、未经授权访问以及品牌声誉受损。本文将向您展示如何使用CORS和CSP为您的网页增加安全性。 嗨,大家好!️欢迎

    2024年02月03日
    浏览(43)
  • mysql面试题30:什么是数据库连接池、应用程序和数据库建立连接的过程、为什么需要数据库连接池、你知道哪些数据库连接池

    该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 数据库连接池是一种用于管理和复用数据库连接的技术。它是在应用程序和数据库之间建立一组数据库连接,并以池的形式存储起来,每当应用程序需

    2024年02月07日
    浏览(44)
  • 前端Vue篇之Vue 单页应用与多页应用的区别、对SPA单页面的理解,单页面优缺点分别是什么?

    单页应用(SPA)只在初始化时加载主要资源,通过路由控制页面内容切换,提供流畅用户体验。多页应用(MPA)每次请求新页面都重新加载完整资源,适合内容丰富、SEO要求高的应用。这两种应用在加载方式、页面切换、用户体验、开发复杂度和SEO等方面存在显著差异。 SP

    2024年04月14日
    浏览(33)
  • [Java Web]element | 一个由饿了么公司开发的前端框架,让你快速构建现代化、美观的 Web 应用程序。

    ⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:@逐梦苍穹 ⭐所属专栏:Java Web ⭐如果觉得文章写的不错,欢迎点个关注一键三连😉有写的不好的地方也欢迎指正,一同进步😁 https://element.eleme.cn/#/zh-CN/component/installation   Element 是

    2024年02月05日
    浏览(74)
  • 单细胞测序并不一定需要harmony去除批次效应

    大家好,今天 我们分享的是单细胞的学习教程https://www.singlecellworkshop.com/analysis-tutorial.html  教程的作者使用了四个样本,但是没有使用harmony或者其他方法去整合 去除批次效应。 主要内容: SCTransform流程代码 及结果 harmony流程代码及结果 seurat单样本标准流程代码 及结果 三种

    2024年02月03日
    浏览(27)
  • 保护您的Android应用程序:Android应用程序安全一览

    我们都知道Android是为所有人设计的——开放、面向开发者、面向用户,这种开放性为今天和明天的移动技术提供了很多便利。然而,开放性也带来了需要妥善处理的安全风险。 安全是我们所有人都关注的重要问题。无论是我们的个人数据、电子邮件、电话号码、凭证、服务

    2024年02月03日
    浏览(52)
  • 软件提示应用程序无法启动,因为应用程序的并行配置不正确……

    刚刚新买了电脑,把以前电脑上的绿色版精简迅雷.exe复制到新电脑上没想到提示: 应用程序无法启动,因为应用程序的并行配置不正确。请参阅应用程序事件日志,或使用命令行sxstrace.exe工具 如下图: 经过一番研究,解决步骤如下: 常见的运行库有如下很多: Microsoft Vi

    2024年02月13日
    浏览(63)
  • 基于C#的画图应用程序(窗体应用程序)C#组件、控件

      使用VS2019,建立窗体应用程序,借助一系列控件实现画图功能。   结合组件与控件的使用。 目录 一、预备知识 1、什么是C#的组件和控件 (1)共同点 (2)不同点 二、主要步骤 1、软件以及环境 2、设置接口 3、界面设计 4、编写代码 5、编译程序和运行 三、编写代码 1、设

    2023年04月08日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包