首页
学习
活动
专区
圈层
工具
发布

前端 VS 后端

我花了很长的时间去学习它。(当然,我现在仍然尝试去掌握它)。 我意识到在学习后端中我有些问题,因为我曾认为前端和后端是一样的 -- 它们都是代码而已。 这是个很大的错误。 前端和后端完全是不同的野兽。...它也是前端和你需要通信的任何API之间的层(如果它通过你自己的服务器)。 我们简化事情让一些人明白,我在讲你将在哪里创建一个Express应用程序。...后端允许前端和数据库之间的通信(或任何外部的API)。回到以前,想象下一个电话接线员。如果你打电话给一个人,这些接线员必须手动的连接你和你要打给的那个人。(如果他们接线错误,你就打给了错的人)。...当你构建一个后端时,你就像电话接线员。你把东西连接起来就可以了。 当我们构建后端时,我们会问如下的问题: 我们需要从前端那里得到什么信息? 我们应该传什么信息到数据库/API?...不同的心理模型 这是我在学习后端的早期观察到的一种常见模式: 我会假设事情向着特定的方式运行 我会在Google上搜索,如何通过我想到的具体方式来实现东西 (Google结果也许是空) 我会破解它并构建自己的基础设施

49010

【译】前端 VS 后端

我花了很长的时间去学习它。(当然,我现在仍然尝试去掌握它)。 我意识到在学习后端中我有些问题,因为我曾认为前端和后端是一样的 -- 它们都是代码而已。 这是个很大的错误。 前端和后端完全是不同的野兽。...它也是前端和你需要通信的任何API之间的层(如果它通过你自己的服务器)。 我们简化事情让一些人明白,我在讲你将在哪里创建一个Express应用程序。 ?...后端允许前端和数据库之间的通信(或任何外部的API)。回到以前,想象下一个电话接线员。如果你打电话给一个人,这些接线员必须手动的连接你和你要打给的那个人。(如果他们接线错误,你就打给了错的人)。 ?...当你构建一个后端时,你就像电话接线员。你把东西连接起来就可以了。 当我们构建后端时,我们会问如下的问题: 我们需要从前端那里得到什么信息? 我们应该传什么信息到数据库/API?...不同的心理模型 这是我在学习后端的早期观察到的一种常见模式: 我会假设事情向着特定的方式运行 我会在Google上搜索,如何通过我想到的具体方式来实现东西 (Google结果也许是空) 我会破解它并构建自己的基础设施

73620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    像一名教育者一样思考代码质量

    例如,如果你看到如下代码: # app/controllers/api/foo/bar/baz_controller.rb def show end Rails 会自动在app/views/api/foo...但是在其他一些情况下,你可以用 Rails 做一些古怪的事情,而只有那些正好掌握这些部落知识的人能够理解。 当你在一个拥有经验丰富的 Rails 专家的团队工作中时,这不是个问题。...事实上,这些古怪的东西能够帮助 Rails 专家变得更高效。但是,如果你工作在一个对 Rails 都是新手的团队中时,这些菜鸟绝对会陷入绝望和沮丧中。 这就是需要像一名教育者一样思考的地方。...我会看到大部分代码是谁写的,在 Slack 上交流,然后他们会花费大约 20 分钟时间给我进行大致的讲解。我觉得这非常有用。...我觉得图表很棒!幸运的是,它们已经被一些人采用了。特别是在架构层次,来说明不同的模块是如何连接到另外一个模块的。 然而,我感觉图表仍然没有得到充分利用。

    1.2K30

    慢的不是 Ruby,而是你的数据库

    我曾在一个拥有百万级用户的应用程序中,导致数据库服务器集群崩溃:原因在于一个无关控制器的简单更改,使 Rails 切换到一个外部连接,该连接具有巨大物化视图,本不应以这种方式连接(用于报告)。...我们没有看到这一点,因为在开发和测试中,性能从未下降。但我们应该注意到的是,这种错误在代码库中比比皆是。...而且它会查询五个连接表并且连接到至少一个索引上,而这个索引并不是为此准备的。导致大约 800 毫秒的查询。在每次页面加载时。 未优化的 where、group 和 order 调用。...使用 Rails 人性化的 active-record API,很容易忘记你仍然只是在查询一个复杂的关系数据库。它需要微调、调优和调整,以便在合理的时间内为你提供数据。...对于外部数据库,这是偏移量。根据你的设置,Ruby 线程甚至可能在数据库进行查找时继续工作。

    5.7K30

    构建工作负载,而非基础设施:重新定义K8s平台

    在 Kubernetes 世界中,YAML 清单意味着满屏的未定义字段和令人眼花缭乱的任务。这与 rails new blog 的体验相去甚远。...很难想象一个应用程序开发人员会处理内核级别的 Linux API。但在 Kubernetes 中,处理是现状。...以下是我在构建 Northflank 平台 时所遵循的理念和需求: IaC 是起点:基础设施即代码 (IaC) 至关重要,但它过于静态,并且发布过程本质上是动态的。...所有隐藏在应用程序开发人员面前的 API 仍然需要对站点可靠性工程师 (SRE) 可用。 双向实时接口:如果我在 Git 中更新了工作负载,用户界面 (UI) 应该反映这些更改,反之亦然。...如果平台只迎合其中一方,那么它们就不是真正的平台。在参加 KubeCon 2024 时,我会牢记这一点。在主活动中,有超过十几个关于平台的演讲,以及一个完整的平台工程日联席活动。

    80910

    【Web后端架构】2022年10个最佳Web开发后端框架

    这些都是2022年在Java、Ruby、Python、JavaScript、PHP、Scala和Golang中进行web开发的最佳后端开发框架 在本文中,我将与您分享创建web应用程序的10个最好的后端框架...如果没有后端,前端可能会工作,也可能无法工作,但要创建一个功能齐全的web应用程序,必须有一个与前端连接的适当后端。 后端开发人员的角色不同于前端开发人员。...前端开发人员更关注应用程序的外观,而后端开发人员则关注服务器、数据库以及两端的连接和交互方式。 后端开发人员应该具备许多必要的技能。理解后端框架就是其中之一。...js,JavaScript在后端开发社区的受欢迎程度迅速增加,在过去十年中,Node。js已经成为顶级品牌之一。 这就是为什么Express在2010年为节点开发者发布的原因。它是一个极小的节点。...js框架用于开发高度灵活的应用程序。 考虑到JavaScript是最流行的web开发语言,而且可能是唯一一种提供从前端到后端到移动学习的全堆栈开发的语言,Expressjs可能是程序员的最佳选择。

    5.8K20

    激荡二十年:HTTP API 的变迁

    PHP 开发者可以把从处理用户的 HTTP 请求,连接 mysql,组装 SQL 进行查询,将查询结果转换成 HTML,一路到 HTML 响应返回给用户的整个业务逻辑放在一个(或者若干个)如意大利面条般的脚本中...在 UAPI 演进的过程中,我也感受到了它的诸多局限和问题。其中最大的问题是:框架的使用者是开发者,而开发者如果没有得到充足的培训,会遗漏、误用、滥用框架的某些能力。...这套系统最大的好处是:无论是客户端开发者,还是后端开发者,都可以撰写几十行 YAML 就得到一个可以运行的,和数据库紧密连接的 API playground。...2020:我的第三次 API 工具的探索 如果说 goldrin 是一个被外部环境倒逼出来的急中生智,quenya,则更多像是我在无拘无束的条件下,把我之前做过的诸多系统回溯一下,集大成的找乐子项目。...本来这篇文章应该在上周末发表出来,可是我一时技痒,把周末可用的时间匀给了代码实现,于是我在撰写了(主要是通过 psql -E 偷师 psql 命令是如何查询的)上百行 SQL,从postgres 中获取关于

    2.5K30

    flask 应用程序编程接口(API)最后一节

    这意味着,在Web开发中常见的在无状态API中,每个请求都需要包含服务器需要识别和验证客户端并执行请求的信息。这也意味着服务器无法在数据库或其他存储形式中存储与客户端连接有关的任何数据。...由于应用程序中的资源都是相互关联的,因此此要求会要求将这些关系包含在资源表示中,盔甲客户端可以通过遍历关系来发现新资源,这几乎与你在Web应用程序中通过点击从一个页面到另一个页面的链接来发现新页面的方式相同...对于指向应用程序其他路由的三个链接,我使用url_for()生成URL(当前指向我在app / api / users.py中定义的占位符视图函数)。...当API客户端收到401状态码时,它知道它需要向用户询问凭证,但是它是如何实现的,服务器不需要关心。 用户模型中实现令牌 对于API身份验证需求,我将使用令牌身份验证方案。...带令牌的请求 当你编写一个API时,你必须考虑到你的客户端并不总是要连接到Web应用程序的Web浏览器。

    6.2K10

    如何在Ubuntu 14.04上使用PostgreSQL和Ruby on Rails应用程序

    现在您可以输入以下命令退出PostgreSQL控制台: \q 我们现在创建一个Rails应用程序。 创建新的Rails应用程序 在主目录中创建一个新的Rails应用程序。...配置数据库连接 您创建的PostgreSQL用户将用于创建应用程序的测试和开发数据库。我们需要为您的应用程序配置正确的数据库设置。 在您喜欢的文本编辑器中打开应用程序的数据库配置文件。...如果你在这一点上得到一个错误,重温以前的第(配置数据库连接),以确保在database.yml中的host,username和password是正确的。...如果您的Rails应用程序位于远程服务器上,并且您希望通过Web浏览器访问它,则一种简单的方法是将其绑定到服务器的公共IP地址。...3000上的服务器公共IP地址在Web浏览器中访问您的Rails应用程序: 访问网络浏览器: http://server_public_IP:3000 如果您看到“欢迎登陆”Ruby on Rails页面

    5.7K00

    我们如何转型微服务?

    我在 SoundCloud时, 曾经负责把一个巨石架构的 Ruby on Rails 应用迁移到微服务。这个故事的技术层面, 我做过多次演讲并且在 SoundCloud 的技术博客上发表过系列文章。...我先加入了后端团队,App团队,负责巨石架构 Ruby on Rails 应用。当时我们没有把它称为遗留, 而是称它为母舰。App 团队拥有 Rails 应用程序中的所有内容, 包括旧的用户界面。...Next是一个single-page JavaScript web 应用程序, 那时我们遵循标准实践, 并将其作为常规客户端构建到我们的公共API中, 这是在 Rails 巨石架构中实现的。...在使用假的/静态数据将设计转换成适当的基于浏览器的体验后, 工程师将记下他们需要的 Rails API 在工作中的变化。然后进入Pivotal Tracker, 这是App团队的工具。...正如上面的地图所示, 这最终造成了一个生产前的漫长的等待请求。在试图解决这个问题时, 我们迈出的第一步是使每个人每天至少花一小时的时间来检查来自团队外部的请求, 即来自Next工作的人员。

    1.1K80

    构建Vue项目-身份验证

    通常,在开始使用新框架或新语言工作时,我会尝试查找尽可能多的最佳实践,而我更喜欢从一个易于理解,维护和升级的良好结构开始。...在这篇文章中,我将尝试解释自己的想法,并将过去几年中获得的所有知识与最新,最好的Web开发实践结合起来。...这正是我们使用api.service.js所要实现的目标—封装Axios库,以便在不可避免地出现新业务逻辑时,我们可以只对该单一服务进行升级,而不必重构整个应用程序。...我应该将其放在Vuex Store 或 Component中吗? 将尽可能多的逻辑放入Vuex存储中似乎是一个好习惯。首先,这很好,因为您可以在不同的组件中重用状态和业务逻辑。...有一些解决方案可以在401发生时将请求排入队列并在队列中处理它们,但是至少对于我来说,上面的代码提供了一种更为优雅的解决方案。

    8.6K20

    vue-cli

    这些开源项目就是巨人,站在巨人肩膀上显然省事多了 只是技术栈罗列未免过于简单,笔者还希望从这些项目中学点东西,比如他的设计和项目组织. 我会尝试简化和通俗解释里面的关键知识或亮点, 但是不求甚解。...为了避免陷入细节泥潭,我会尽量使用图形化方式展示他们程序流程,避免拘泥于细节。你也可以把这些文章作为深入阅读这些项目源码的引导 我也希望读者同我交流反馈,共同学习和进步。...Rails 有一个重要的指导思想,即约定大于配置, 它为 Web 应用的大多数需求都提供了最好的解决方法,并且默认使用这些约定,而不是在长长的配置文件中设置每个细节。...说实在话如果一生只学一门语言,我会选 Ruby,如果选一个 web 框架,那就是 Rails。...笔者是使用 React 作为主力开发的,Vue 也是我非常喜欢的一个开源项目,不说别的,在开发者的’用户体验’方面 Vue 是我见过最好之一,主要体现在 API 的简洁性和易用性、文档还有项目构建工具(

    4K10

    web框架在什么程度上受限 ?

    答案4:通常,越完整、越有用的 web 框架,在尝试以与 web 框架认为的正确方式不同的方式做事时,其限制就越大。有些 web 框架试图提供极大的帮助且不受限制,有些则做得更好。...有许多极简主义的 web 框架,至少在 Python 世界中是这样(我只关心 Python)。Bobo、BFG、Pylons、Werkzeug 等。这些都不会以任何方式碍事。...RESTful 路由非常简单,但如果 REST 的特定 Rails 风格不满足需求,则路由是完全可配置的。在 Rails 应用程序中,可以使用默认设置的任意多或任意少,并且可以在所有级别进行重新配置。...在大多数非平凡的应用程序中,很少有一个模型绑定到请求的末尾… 实际上可能有一个非常复杂的模型网络返回或更新。如果使用 JSON,强烈建议查看 MongoDB 等数据库。...在选择Web框架时,重要的是考虑你的项目需求、团队技能和项目目标。理解和权衡这些限制可以帮助你做出更合适的技术选择。如果有具体的框架或应用场景,我可以提供更详细的分析和建议。

    1.7K10

    选择一个异步应用程序服务器还是多阻塞服务器?

    应用程序? 我一直在和我团队的其他成员讨论关于使用一个异步应用服务器,比如Play! Framework(建立在Netty上),相比于一个Rails应用程序服务器多实例旋转的优缺点。...我知道Netty是异步/非阻塞的,意味着在一个数据区查询操作中,网络请求或者其他一些类似的东西,一个异步调用就将会允许事件循环线程从阻塞请求转换到另一个已准备好的请求去处理/服务。...在另一方面,我的团队的成员认为你可以通过使用一个Rails应用程序的多个实例来获得同样的好处,它只能有一个线程,并且没有真正的并发应用程序作用在JVM上,只要使用足够的App实例来匹配一个Play!...这是否意味着这是唯一一种正确的方法? 我尝试如此回应: 两种方式都可以工作。所以,如果转换会造成高开发成本并且/或者产生进度冲突,那么这将是不值得的。...在服务器中这意味着增加了延迟,延迟排序将不能通过乘法提高,这可能取决于你的应用程序会使参数作废。

    2.1K80

    RadRails1.0降临——增加Profiler、CallGraph Analyzer和Rails Shell等新特性

    我们将从ruby-prof的bin脚本中得到的ruby脚本的执行包装起来,并将输出定向到一个临时文件中。然后,当执行结束的 时候,我们通过解析输出并生成调用图表和着重点以供查看。...(这样我们便可得到快照,而非等到程序结束后再从 输出中获得)。...Christopher解释了这项支持目前的状态: 当前使用Rubinius作为启动Ruby进程的解释器还有诸多限制。当Rubinius成熟之时,就可以 使用它来尝试运行gems甚至Rails。...[我了解到]作为一个终端用户,他们可以不需要 编译就能迭代开发一项新特性,而且不需要下载Eclipse SDK,也不需要检出我们全部的源代码,那些让人晕头转向的东西。...通过 DOM我们能够提供一个很小很简单的API,看上去很像Ruby API。 想尝试Aptana和RadRails 1.0或者只是想实际看看其特性的话,请看展示了大量特性的截屏视频。

    2.9K80

    Gitlab配置webhook趟坑全纪录&由此引发的常见环境问题排查思路与思考总结

    前言 在之前的CI/CD流程中,我在配置Jenkins Job的“构建触发器”时,采用的都是Gitlab的轮询策略,每10分钟轮询一次Gitlab代码仓库,若有新代码提交,则触发构建、执行代码扫描、运行自动化测试等一系列动作...3.Gitlab中配置webhook Gitlab指定代码仓库-设置-Webhooks,将构建触发器中的webhook url复制到Webhooks地址栏中 4.测试webhook 新建完成后,Project...若返回200,则说明连通性正常,若返回400、401、500等则说明配置有问题。当然如果配置过程这么顺利的话,也就不会有这篇文章的存在。既然是趟坑大全,必然会有一个又一个坑在等着我。...【解决办法】 需要在Jenkins用户-设置-API TOKEN中增加一个token,并在gitlab的webhook中配置时,如“http://admin:11f3dd13297766a1546d455e73933eb4cc...③ 继续分析:没过多会,”作用域“一词在我脑海中不断闪现:会不会是我创建的webhook位置创建错了,因为第一次在项目下创建时,遇到了坑一、二、三的各种报错,没有创建成功,后来在Gitlab的全局设置-

    9.5K30

    不要学习“网红”编程语言

    从 2000 年开始,到该时代中期,Ruby 受欢迎程度在 TIOBE 指数评级中逐渐达到顶峰,人们认为 Ruby 还有它的旗舰级 Rails 框架,可以大大提高生产力。...在所有 HubSpot API 实施意见中,Ruby 版本的人气(根据 stars 和 forks 判断)和更新频率都是最低的。...2021 年 StackOverflow 的调查结果也支持了这样的判断:Ruby 与 Rails 在各项评比中基本都处于象限底端。Ruby 得到的“赞”和“踩”基本相当。...自 2008 年以来出现的一切 SaaS,在未来几十年中都需要新的开发者加入进来。 但我们也要考虑到,在 Ruby 陷入萎缩的同时,Node.js 开始快速流行。...JavaScript 与 Python 在市场需求稳定性上也越来越具有优势。Python 是过去十年中增长速度最快的主流编程语言,目前已经扩展到 Web 开发、数据科学、科学编程等多个领域。

    3.3K30

    关于apple上架常见问题汇总

    答:我有同样的问题。登录和退出。重新启动。仍然是“加载 iCloud 音乐库”,仅此而已。Beta 1 也存在问题,该问题在重新启动时得到解决。单独上传到苹果商店这是我们遇到的问题。...exportArchive:Xcode Server 不支持将应用程序上传到 Apple。我正在尝试将持续集成添加到我们当前的应用程序构建部署过程中。...我已经添加了一些单元测试并在外部存储的 mac mini 上配置了 xcode 服务器,以便在推送到 github 时构建和运行测试——一切都很好。...我希望 xcode 服务器为我上传我的构建,但如果需要,我会设置 fastlane 来执行上传过程。但我感到困惑的是为什么机器人将其作为错误返回。...在 Apple 拒绝后上传我的应用程序的新版本时,如何更改上传的版本号?当我尝试上传修改后的应用程序时,它不允许我并且我收到一条错误消息“错误 ITMS-4238:“冗余二进制上传。

    2.8K30

    “逃离”单体,GitHub的微服务架构实践

    在 GitHub,我们在单体中实现了一个查询监视器来帮助我们检测,并在发现跨域查询时发出告警信息。我们会根据域边界,把这些查询拆分并重写成多个,并在应用程序层实现必要的连接。...现在,我们换个话题,介绍下从单体中抽取服务的基础工作。一定要记住,依赖方向只能从单体内到单体外,不能反过来,否则,我们最终会得到一个分布式单体。...也就是说,当从单体中抽取服务时,要从核心服务入手,然后逐步到特性层面。 接下来,找出开发人员在单体环境中开发时所使用的助力工具。随着时间的推移构建一些共享工具以方便单体开发,这是很常见的。...当前的 Rails 应用程序(即我们的单体)使用 Twirp(这是一个 gRPC 风格的服务到服务通信框架)和它通信,依赖方向是由内到外。...例如,在多次尝试失败之后,断路器会打开,在服务恢复之前,不再允许额外的请求进入。为服务设置超时时间,这样服务就不会一直等待外部服务的响应。

    1K20
    领券