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

一探Server Components背后的架构革命

前端:修改TypeScript类型定义 后端:修改API返回的JSON结构 数据库:可能已经有这个字段了 三个仓库,三次提交,三轮测试,一次联调。一个简单需求,耗时半天。...减少客户端JS执行 开发效率提升 需求开发周期对比: 【传统架构】添加"商品审核记录"功能 Day 1: 前端和后端开会对齐接口(2h) Day 1: 后端写API接口(4h) Day 2: 前端写页面...后台管理系统 表单、表格、增删改查 数据流动简单直接 不需要复杂的前端状态 3. B端SaaS应用 注重性能和首屏速度 数据安全性要求高 可以接受服务器成本 ⚠️ RSC不适合的场景 1....在我们团队的实践中: 传统架构的角色分工: 前端工程师 → 写UI和API调用 后端工程师 → 写API和业务逻辑 数据库工程师 → 设计表结构和优化查询 RSC架构的角色分工: 全栈工程师 → 写UI...,后端变成API 2020-现在: 全栈时代 └─ 回到服务器渲染,但更智能 我们花了20年走了一个圈,但这不是倒退,而是螺旋式上升。

26110

我在大型项目中发现的真相

用 useState 呢? const [isTyping, setIsTyping] = useState(false) 完事。一行代码。 这就是问题的所在。 到底哪些状态该全局?...用户登录信息 —— 需要全局 这个不能只放在一个组件里,因为: Header 要显示用户名 Sidebar 要判断权限 API 请求要带 token 路由要检查认证状态 用 Redux 可以,但现在有更轻的方案...] = useState(true) useEffect(() => { api.getUserOrders(userId).then(data => { setOrders(...很多项目在 Redux 里维护了一套"前端数据库"——把所有后端数据都缓存在 state 里。这带来了: 数据同步问题(前端改了,后端也改了,两边怎么保持一致?)...→ 用 Context + useState,或者 Zustand 4. 这是来自服务器的数据,而且会变化? → 用 React Query 只有 当这些都不适合,你才需要考虑 Redux。

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

    小冰李笛:调用API的商业模式不适用于未来 | MEET 2024

    演讲要点 技术的发展永远是在不停的波峰波谷之间徘徊 现在属于人工智能巨大变革之前的一个蛮荒时代 明年一季度AIGC技术创新会相对稳定,不会陷入到论文都看不过来的程度 调用API的大模型商业模式不适用于未来...对于很多规模有限的垂直领域而言,今天的大模型以API调用为基础的一种商业模式,也许适合过去软件的时代,适合移动互联网的时代。...AIGC需要面向未来新商业模式 过去的商业模式一个核心的问题,从我个人的角度来讲,我觉得本质是API调用的商业模式没有体现出生成式人工智能所带来的创造力的价值。...API调用的方式无关于你使用这一次API获得什么样的内容,一个闲聊的话和有真知灼见的内容,对于大模型的API调用来讲是一样的,所以不可能产生不同的收入。...今天的AI现状更像是扫雷 最后我想跟大家说的事情是,我们看到这个行业里面有很多来自于咱们国家的一些特色:特别害怕输在起跑线上,特别想要去卷。

    58810

    自动化测试工具在敏捷开发中的选择与使用

    常见自动化测试工具对比 敏捷开发中的自动化测试主要集中在单元测试、UI测试和API测试。以下是几款常用的自动化测试工具,每个工具都在特定的测试类型上有独特的优势。 1....缺点: 只适用于JavaScript和TypeScript,不适合后端或跨语言项目。 对于大型项目,测试用例多时,快照文件可能难以维护。 3....JUnit JUnit 是一个用于Java编程语言的单元测试框架,主要用于后端服务的单元测试和集成测试。它是Java开发生态中最流行的测试框架之一,被广泛应用于Java项目中。...支持与Spring等框架深度集成,适合Java后端开发。 缺点: 仅限Java项目使用,不适用于其他语言。 主要用于单元测试,UI测试能力不足。 4....主要用于前端项目,不适合后端或跨平台项目。 工具选型分析 根据项目语言和技术栈选择 在敏捷开发中,项目的语言和技术栈是选择自动化测试工具的首要考虑因素。

    1.8K10

    酒店管理系统实操指南 整合 JavaFX Spring Boot 与 React 的经典

    后端技术栈Spring Boot:简化后端开发,提供RESTful APISpring Security:实现用户认证与授权Spring Data JPA:数据库访问层MySQL:关系型数据库存储业务数据...系统架构采用前后端分离架构,通过REST API通信数据库设计包含客房、客户、订单、员工等核心实体部署架构支持Docker容器化和微服务拆分二、核心功能模块实现1....void initialize() { // 初始化服务层 roomService = new RoomServiceImpl(); // 配置表格列...客户预订流程下面是基于React实现的客户预订界面组件:// ReservationForm.jsximport React, { useState, useEffect } from 'react';...(''); const [guestPhone, setGuestPhone] = useState(''); useEffect(() => { // 从后端获取可用客房列表 axios.get

    48800

    用 Suspense 解决请求依赖的复杂场景居然这么简单!

    如果页面四个模块的接口数据相互之间没有关系,其实整个页面还会简单一些,但是很多时候复杂度往往来自于后端的不配合。前端与后端的沟通在一些团队经常出现问题。...有的后端不愿意配合前端页面结构修改接口,前端也沟通不下来,只能自己咬牙在混乱的接口情况下写页面,就导致了无论是组件的划分也好还是页面的复杂度也好都变得杂乱无章。从而增加了开发成本。...从而我们可以放心更改后续 __api 的值为 null....messageContent.value} /> ) } 在另外一个子组件中,我们还设计了内部状态,用于实现切换按钮...null : getApi() const [promise, setPromise] = useState(api) const [current, setCurrent] = useState

    36410

    使用antd表格组件实现日程表

    需求确定后,老板给我分了一个后端,跟后端沟通后开发周期估了1周,我页面估了2天的时间,剩下的3天与后端进行数据对接。...2天后,我把页面弄完了,表格需要的数据格式也定义好了,把数据格式发给后端后,他说好,没问题。...image-20201119172808318 然而,事情没有预想中那么顺利,我页面做好后,到开发周期的最后一天下午,后端把接口给我了,但返回的数据不是我预想的格式,我又进行了二次处理,页面渲染出来后,...快到下班时间了,到了预估的开发时间没有完成需求,倒也能理解,毕竟后端那边要处理的数据比较复杂。...在后端返回的数据中,如果有不存在的日程,直接连字段都没返回,这就造成了antd在渲染的时候列与表格数据不对应而引发的武发渲染的问题,于是我只能把所有数据遍历一遍,求出最大列长度,然后将列少的数据进行补全

    4.2K20

    超详细的React组件设计过程-仿抖音订单组件

    在我们的组件设计时需要用到的开源组件库有: (有不了解的小伙伴可以自行查阅资料学习一下,在后面用到的时候我也会说明的) axios 它是一个基于 promise 的网络请求库,用于获取后端数据,是前端常用的数据请求工具...它更加真实的模拟了前端开发中后端提供数据的方式。 正文 在这我们先来看看组件实现后的组件效果: 1....下进行,因此我们可以将输入的内容设置为一个状态,每次改变就根据tab内容和输入内容重新获取数据: api接口对订单数据的请求的封装中增加一个query限制: export const getOrder...实现 RecommendList 组件 该组件也是对从父组件Myorder获取来的数据进行展示,主要是做样式上的功夫。使用多列布局,将页面分为两列,并且不固定每个数据盒子的高度。...最外层列表盒子加上属性: column-count:2; 将页面分为两列 列表中的每一个单独的小盒子添加属性:break-inside:avoid; 控制文本块分解成单独的列,以免项目列表的内容跨列

    76910

    实现前后端分离开发:构建现代化Web应用

    JSON是一种轻量级的数据格式,易于解析和生成,适用于Web应用程序的数据传输。 前端可以使用AJAX或Fetch API来发送HTTP请求,并解析后端返回的JSON数据。...跨域问题 由于前后端通常运行在不同的域名下,因此可能会涉及跨域问题。跨域资源共享(CORS)是一种机制,用于授权一个域上的Web页面访问来自另一个域的服务器资源。...React是一个流行的JavaScript库,用于构建用户界面。...步骤7:跨域问题 由于前端和后端通常运行在不同的域名下,因此可能会涉及跨域问题。跨域资源共享(CORS)是一种机制,用于授权一个域上的Web页面访问来自另一个域的服务器资源。...Express.js的cors中间件来允许来自任何域的跨域请求。

    3.2K10

    React最佳实践

    ,一般都会用到分页,通过将分页封装成hook,一是可以介绍前端代码量,二是统一了前后端分页的参数,也是对后端接口的一个约束。...(initPage); // 用于接口查询数据时的请求参数 const queryPagination = useMemo( () => ({ limit: pagination.pageSize...在合适场景给useState传入函数 我们在使用useState的setState的时候,大部分时候都会给setState传入一个值,但实际上setState不但可以传入普通的数据,而且还可以传入一个函数...还可以在useState初始化的时候传入函数 看下面这个例子,我们有一个getColumns函数,会返回一个表格的所以列,同时有一个count状态,每一秒加一一次。...而对于基础类型来说,大家需要注意的是最末尾的四个特列,这是与===所不同的。

    1.2K50

    前端写代码像搭积木,后端凭什么说我们不懂系统设计?

    这篇文章,我要掰开揉碎地讲清楚:前端开发者如何从后端系统设计中偷师,把 UI 代码写成真正的"工程级系统"。 第一层认知突破:别再把 Component 当"页面碎片" 后端的分层架构为什么这么稳?...后端团队花大量时间写 API 文档,定义: 入参类型和校验规则 返回值结构 错误码定义 版本兼容性 为什么?因为跨服务调用时,没有契约就是灾难。 前端的"隐式契约"有多危险?...后端的容错哲学 后端工程师的口头禅:"生产环境一定会出问题。"...第五层认知突破:配置和逻辑必须分离 后端的 12-Factor 原则 后端应用有个黄金法则:配置存在环境变量里,绝不硬编码。...前端开发者不需要成为后端工程师,但我们需要学会像工程师一样思考。 下次当你要写一个 的时候,不妨停下来问自己: "如果这是一个后端 API,我会怎么设计它的接口?怎么处理异常?

    20220

    (译) 如何使用 React hooks 获取 api 接口数据

    如果你对 React 的新功能一无所知,可以查看 React hooks 的相关 api 介绍。...如果你使用他,别忘记给我个star 哦~ 注意:将来,React Hooks 不适用于 React 中获取数据。一个名为Suspense的功能将负责它。...状态和状态更新函数来自useState 的 hook。他是来负责管理我们这个 data 的状态的。userState 中的第一个值是data 的初始值。其实就是个解构赋值。...用于数据获取的 Reducer Hook(Reducer Hook for Data Fetching) 目前为止,我们使用各种 state hook 来管理数据、loading、error handler...它需要作用于三个不同的状态转换,称为FETCH_INIT,FETCH_SUCCESS和FETCH_FAILURE。每个状态转换都需要返回一个新的状态对象。

    31.2K20

    重构商品搜索模块:AI CLI 如何将数小时工作压缩至分钟级

    正文一、电商平台搜索模块的重构挑战在我们的电商平台中,商品搜索功能最初可能只是一个简单的实现,但随着业务发展,我们面临以下需求:兼容 TypeScript 严格模式添加全面的单元测试支持新的搜索过滤条件优化性能和数据结构传统手动重构需要前后端开发者协同工作...前后端都需要添加完整的错误处理。"...三、前后端重构效果对比原始方案前端代码 (React + JavaScript):// src/components/ProductSearch.js (原始版本)import React, { useState.../api/productApi';const ProductSearch: React.FC = () => { const [products, setProducts] = useState后端代码 (Node.js):// server/routes/products.js (原始版本)app.get('/api/products/search', async (req, res

    28510

    LocalStorage不够用?那就该试试这个

    前言 随着浏览器的功能不断增强,越来越多的网站开始考虑将大量的数据存储在客户端,相比后端接口,获取数据更快一些。但摆在我们眼前的现状是这样的: 现有的浏览器存储方案都不适合存储大量的数据。...我第一次使用IndexDB时,也是直接使用的IndexedDB API。嗯~嗯~非常麻烦,需要写很多代码,突然感觉还是 LocalStorage 来得简单直接。 怎么解决呢?...网上有很多对IndexedDB原生接口进行包装的其它库,但相较而言,Dexie.js具有以下明显的优点: Promise 异步支持 和 IndexedDB 原生 API 一样,Dexie.js的操作也是异步的...const [age, setAge] = useState(18); const [email, setEmail] = useState(""); const [status, setStatus...官方地址: https://dexie.org/ 小结 Dexie.js 提供简洁的 API,让我们可以轻松创建、打开、查询和管理 IndexedDB 数据库。

    80220

    众店模式与城市X选模式:消费循环分红省钱:无痛消费

    “我店模式”和“城市酷选模式”直接转化为代码是一个复杂且庞大的任务,因为这涉及到多个系统模块的开发,包括前端用户界面、后端服务器逻辑、数据库设计、支付系统、区块链(如果涉及绿色积分通证化)等。...以下是一个简化的、概念性的代码框架,用于指导如何开始构建这样的系统。请注意,这只是一个起点,实际开发需要详细的需求分析、设计、测试和迭代。1....技术栈选择前端:React.js 或 Vue.js后端:Node.js + Express 或 Django(Python)数据库:MySQL 或 PostgreSQL支付系统:支付宝、微信支付 SDK.../routes/mystore')); app.use('/api/citycool', require('....后续步骤细化需求:与团队、客户深入沟通,明确每个功能的具体需求。设计数据库:根据需求设计详细的数据库结构。开发API:为前端提供丰富的RESTful API。

    64110
    领券