当前位置:首页 > 科技  > 软件

Remix 2.0 正式发布,现代化全栈Web框架!

来源: 责编: 时间:2023-09-18 21:40:39 205观看
导读9 月 16 日,全栈 Web 框架 Remix 正式发布了 2.0 版本,Remix 团队在发布 1.0 版本后经过近 2 年的持续努力,发布了 19 个次要版本、100 多个补丁版本,并解决了数千个问题和拉取请求,终于迎来了第二个主要版本!Remix 具有以

rVj28资讯网——每日最新资讯28at.com

9 月 16 日,全栈 Web 框架 Remix 正式发布了 2.0 版本,Remix 团队在发布 1.0 版本后经过近 2 年的持续努力,发布了 19 个次要版本、100 多个补丁版本,并解决了数千个问题和拉取请求,终于迎来了第二个主要版本!rVj28资讯网——每日最新资讯28at.com

Remix 具有以下特性:rVj28资讯网——每日最新资讯28at.com

  • 追求速度、用户体验(UX),支持任何 SSR/SSG 等
  • 基于 Web 基础技术,如 HTML/CSS 与 HTTP 以及 Web Fecth API,在绝大部分情况可以不依赖于 JavaScript 运行,所以可以运行在任何环境下,如 Web Browser、Cloudflare Workers、Serverless 或者 Node.js 等
  • 客户端与服务端一致的开发体验,客户端代码与服务端代码写在一个文件里,无缝进行数据交互,同时基于 TypeScript,类型定义可以跨客户端与服务端共用
  • 内置文件即路由、动态路由、嵌套路由、资源路由等
  • 去掉 Loading、骨架屏等任何加载状态,页面中所有资源都可以预加载(Prefetch),页面几乎可以立即加载
  • 告别以往瀑布式(Waterfall)的数据获取方式,数据获取在服务端并行(Parallel)获取,生成完整 HTML 文档,类似 React 的并发特性
  • 提供开发网页需要所有状态,开箱即用;提供所有需要使用的组件,包括   <Links> 、<Link>、 <Meta> 、<Form> 、<Script/> ,用于处理元信息、脚本、CSS、路由和表单相关的内容
  • 内置错误处理,针对非预期错误处理的 <ErrorBoundary> 和开发者抛出错误处理的 <CatchBoundary>

Remix 是一个由 React Router 开发团队所开发的基于 React 和 TypeScript 的全栈框架。2021 年 11 月,Remix 正式开源,至今已在 Github 上获得了 24.6k star。Remix 正式开源时,引发了前端圈不小的关注,其被普遍认为是 Next.js 的强劲对手,那时隔两年,它和 Next.js 之间的“竞争”怎么样了呢?rVj28资讯网——每日最新资讯28at.com

目前,Next.js 拥有 112k star,是 Remix 的近 5 倍。Next.js 周下载量 279 万,而 Remix 仅有 1.4 万,Next.js 是 Remix 的近 200 倍。可见,Remix 并没有像大家预料的那样,成为 Next.js 的有力竞争对手,在开发者社区中只有较小的市场份额。尽管如此,Remix 仍然吸引了一些开发者,并且在特定领域或项目中有其优势和适用性。rVj28资讯网——每日最新资讯28at.com

下面就来看看 Remix 2.0 都有哪些更新!rVj28资讯网——每日最新资讯28at.com

v1.0 以来的更新

  • v1.8和v1.10中,将 Remix与React Router v6进行了对齐。当开始开发Remix时,承诺它将使React Router变得更好。这个版本真正实现了这一承诺,并将两个库都对齐到使用相同的底层依赖。
  • 在v1.11中,发布了"promises over the wire",即延迟加载模块。现在,如果真的想在Remix应用中添加 loading 图标,可以这么做了!
  • 在v1.11中,添加了"flat"路由,简化了使用嵌套布局而不需要嵌套目录的操作,这成为v2版本的默认设置。
  • 在v1.13和v1.16中,改进了Remix对各种CSS策略的支持,包括PostCSS、CSS模块、Vanilla Extract 和CSS副作用(全局)导入。
  • 在v1.14和v1.18中,发布了一个新的开发服务器,支持热更新(HMR)和热数据重载(HDR)。这个新的开发服务器成为v2版本的默认设置。
  • 在v2版本中,最重要的亮点之一是全新的create-remix命令行工具体验。

v2.0 的更新内容

重大变化

升级的依赖要求

Remix v2已经升级了对React和Node的最低版本支持,并正式支持以下版本:rVj28资讯网——每日最新资讯28at.com

  • React 18
  • Node 18 或更高版本

移除未来标志

以下未来标志已被移除,并且它们的行为现在是默认的,现在可以从remix.config.js文件中删除这些设置。rVj28资讯网——每日最新资讯28at.com

  • v2_dev,新的开发服务器,具有HMR + HDR,如果在future.v2_dev中有配置而不仅仅是布尔值(例如,future.v2_dev.port),可以将它们提升到remix.config.js中的根dev对象中。
  • v2_errorBoundary,移除了CatchBoundary,改为使用单个ErrorBoundary
  • v2_headers,修改了嵌套路由场景中的头部逻辑
  • v2_meta,修改了meta()的返回格式
  • v2_normalizeFormMethod,将formMethod规范化为大写
  • v2_routeConvention,现在默认情况下,路由使用扁平化路由约定

重大变更/API 删除

下面列出了 Remix v1 中具有弃用警告的其他重大更改/API 删除。如果使用的是最新1.19.3版本且没有任何控制台警告,那么可能可以继续执行所有这些操作!rVj28资讯网——每日最新资讯28at.com

(1)有破坏性更改/API移除rVj28资讯网——每日最新资讯28at.com

  • remix.config.js
  • browserBuildDirectory重命名为assetsBuildDirectory
  • 删除devServerBroadcastDelay
  • devServerPort重命名为dev.port
  • 如果在1.x版本中选择此选项,则配置标记将是future.v2_dev.port,但在稳定的2.x版本中,它将是dev.port
  • 将默认的serverModuleFormatcjs更改为esm
  • 删除serverBuildTarget
  • serverBuildDirectory更改为serverBuildPath
  • 默认情况下不再在服务器上对Node内置模块进行polyfill,必须通过serverNodeBuiltinsPolyfill选择加入polyfill
  • @remix-run/react
  • 删除useTransitionrVj28资讯网——每日最新资讯28at.com

  • 删除fetcher.type并压缩fetcher.submissionrVj28资讯网——每日最新资讯28at.com

  • <fetcher.Form method="get">现在更准确地被归类为state:“loading”,而不是state:“submitting”,以更好地与底层的GET请求保持一致rVj28资讯网——每日最新资讯28at.com

  • 要求camelCased版本的imagesrcset/imagesizesrVj28资讯网——每日最新资讯28at.com

(2)没有弃用警告rVj28资讯网——每日最新资讯28at.com

此版本没能在每个破坏性更改或API移除上都收到废弃警告。以下是可能需要查看的剩余变更列表,以升级到v2:rVj28资讯网——每日最新资讯28at.com

  • remix.config.js
  • Node内置模块不再默认在浏览器中进行polyfill,可以通过browserNodeBuiltinsPolyfill选项选择加入polyfill
  • 如果存在配置文件,则PostCSS/Tailwind将默认启用,可以通过postcss和tailwind标志禁用此功能
  • @remix-run/cloudflare
  • 删除createCloudflareKVSessionStorage方法rVj28资讯网——每日最新资讯28at.com

  • 不再支持@cloudflare/workers-types v2和v3rVj28资讯网——每日最新资讯28at.com

  • @remix-run/devrVj28资讯网——每日最新资讯28at.com

  • 删除REMIX_DEV_HTTP_ORIGIN,增加REMIX_DEV_ORIGINrVj28资讯网——每日最新资讯28at.com

  • 删除REMIX_DEV_SERVER_WS_PORT,增加dev.port--portrVj28资讯网——每日最新资讯28at.com

  • 删除--no-restart/restart标志,增加--manual/manualrVj28资讯网——每日最新资讯28at.com

  • 删除--scheme/scheme--host/host,增加REMIX_DEV_ORIGINrVj28资讯网——每日最新资讯28at.com

  • 删除codemod命令rVj28资讯网——每日最新资讯28at.com

  • @remix-run/eslint-configrVj28资讯网——每日最新资讯28at.com

  • 删除@remix-run/eslint-config/jest配置rVj28资讯网——每日最新资讯28at.com

  • 删除魔法imports的ESLint警告rVj28资讯网——每日最新资讯28at.com

  • @remix-run/netlifyrVj28资讯网——每日最新资讯28at.com

  • @remix-run/netlify适配器已被删除,推荐使用Netlify官方适配器rVj28资讯网——每日最新资讯28at.com

  • @remix-run/noderVj28资讯网——每日最新资讯28at.com

  • 默认不再对fetch进行polyfill,应用需要调用installGlobals()来安装polyfillsrVj28资讯网——每日最新资讯28at.com

  • 不再从@remix-run/node导出fetch和相关 API,应用应使用全局命名空间中的版本rVj28资讯网——每日最新资讯28at.com

  • 应用需要调用sourceMapSupport.install()来设置源映射支持rVj28资讯网——每日最新资讯28at.com

  • @remix-run/reactrVj28资讯网——每日最新资讯28at.com

  • 删除unstable_shouldReload,增加shouldRevalidaterVj28资讯网——每日最新资讯28at.com

  • @remix-run/serverVj28资讯网——每日最新资讯28at.com

  • 如果3000端口被占用且未指定PORT,则remix-serve将选择一个可用的端口rVj28资讯网——每日最新资讯28at.com

  • 集成手动模式rVj28资讯网——每日最新资讯28at.com

  • 删除未记录的createApp Node APIrVj28资讯网——每日最新资讯28at.com

  • remix-serve中保留动态imports以供外部bundle使用rVj28资讯网——每日最新资讯28at.com

  • @remix-run/vercelrVj28资讯网——每日最新资讯28at.com

  • @remix-run/vercel适配器已被删除,推荐使用Vercel官方提供的功能rVj28资讯网——每日最新资讯28at.com

  • create-remixrVj28资讯网——每日最新资讯28at.com

  • 停止传递isTypeScriptremix.init脚本rVj28资讯网——每日最新资讯28at.com

  • remixrVj28资讯网——每日最新资讯28at.com

  • 删除魔法 exportsrVj28资讯网——每日最新资讯28at.com

(3)破坏类型变化rVj28资讯网——每日最新资讯28at.com

  • 从 future.v2_meta 类型中删除了 V2_ 前缀,因为它们现在是默认行为。
  • V2_MetaArgs -> MetaArgs
  • V2_MetaDescriptor -> MetaDescriptor
  • V2_MetaFunction -> MetaFunction
  • V2_MetaMatch -> MetaMatch
  • V2_MetaMatches -> MetaMatches
  • V2_ServerRuntimeMetaArgs -> ServerRuntimeMetaArgs
  • V2_ServerRuntimeMetaDescriptor -> ServerRuntimeMetaDescriptor
  • V2_ServerRuntimeMetaFunction -> ServerRuntimeMetaFunction
  • V2_ServerRuntimeMetaMatch -> ServerRuntimeMetaMatch
  • V2_ServerRuntimeMetaMatches -> ServerRuntimeMetaMatches
  • 以下类型已进行调整,更偏向于使用unknown而不是any,并与底层的React Router类型保持一致:
  • useMatches()的返回类型从RouteMatch改名为UIMatchrVj28资讯网——每日最新资讯28at.com

  • LoaderArgs/ActionArgs改名为LoaderFunctionArgs/ActionFunctionArgsrVj28资讯网——每日最新资讯28at.com

  • AppData的类型从any改为unknownrVj28资讯网——每日最新资讯28at.com

  • Location["state"]useLocation.state)的类型从any改为unknownrVj28资讯网——每日最新资讯28at.com

  • UIMatch["data"]useMatches()[i].data)的类型从any改为unknownrVj28资讯网——每日最新资讯28at.com

  • UIMatch["handle"]useMatches()[i].handle)的类型从{ [k: string]: any }改为unknownrVj28资讯网——每日最新资讯28at.com

  • Fetcher["data"]useFetcher().data)的类型从any改为unknownrVj28资讯网——每日最新资讯28at.com

  • MetaMatch.handle(在meta()函数中使用)的类型从any改为unknownrVj28资讯网——每日最新资讯28at.com

  • AppData/RouteHandle不再导出,因为它们只是unknown的别名rVj28资讯网——每日最新资讯28at.com

新增功能

  • 新的create-remix命令行界面工具
  • 最显著的改变是,不再使用下拉菜单选择模板/堆栈,而是使用--template参数和不断增长的可用模板列表。
  • 新增--overwrite参数
  • 支持bun包管理器
  • 通过build.mode检测构建模式
  • 支持通过serverNodeBuiltinsPolyfill.globals/browserNodeBuiltinsPolyfill.globals来对Node全局对象进行polyfill
  • 新的redirectDocument实用工具,通过重新加载文档实现重定向
  • meta参数中添加error,以便可以渲染错误标题等
  • unstable_createRemixStub现在支持在stubbed Remix路由上添加meta/links函数
  • unstable_createRemixStub不再支持在路由上使用element/errorElement属性。必须使用Component/ErrorBoundary与从Remix路由模块导出的内容匹配。

其他更新

  • Remix现在在内部使用React Router的route.lazy方法在导航时加载路由模块。
  • 删除了@remix-run/node中的atob/btoa polyfills,改用内置版本。
  • @remix-run/dev包与@remix-run/css-bundle包的内容解耦。
  • 现在,@remix-run/css-bundle包的内容完全由Remix编译器管理。尽管仍然建议Remix依赖项共享相同的版本,但这个变化确保在升级@remix-run/dev而不升级@remix-run/css-bundle时没有运行时错误。
  • remix-serve现在将选择一个空闲的端口(如果3000端口被占用)。
  • 如果设置了PORT环境变量,remix-serve将使用该端口。
  • 否则,remix-serve将选择一个空闲的端口(除非3000端口已被占用)。
  • 更新的依赖项:
  • react-router-dom@6.16.0rVj28资讯网——每日最新资讯28at.com

  • @remix-run/router@1.9.0rVj28资讯网——每日最新资讯28at.com

  • @remix-run/web-fetch@4.4.0rVj28资讯网——每日最新资讯28at.com

  • @remix-run/web-file@3.1.0rVj28资讯网——每日最新资讯28at.com

  • @remix-run/web-stream@1.1.0rVj28资讯网——每日最新资讯28at.com

React Server Components?

Remix 对于 React Server Components(RSC)的支持计划是积极的。他们希望在Remix v3中添加对RSC的支持,并希望能够展示这项技术在多个框架中的能力。rVj28资讯网——每日最新资讯28at.com

RSC是一个有趣且强大的功能,但是 Remix v2 是基于当前稳定的React特性构建的,因此 RSC 在 Remix v2 中尚未包含。一旦RSC稳定下来,Remix 将会支持它。rVj28资讯网——每日最新资讯28at.com

然而,与之前支持的其他React特性相比,“支持RSC”需要更深入的集成。RSC的异步组件与Remix的加载器和组件结合得非常相似,并且Remix在v3中决定摒弃使用第三方库useLoaderData,因此在数据加载方面可能会有所不同。他们希望开发者只需要将现有的加载器代码迁移到新的异步组件中,但需要注意数据依赖的瀑布效应。rVj28资讯网——每日最新资讯28at.com

Remix团队在今年早些时候的Remix Conf上与React核心团队的成员举办了一个讨论会,讨论了RSC以及如何共同推进这项技术的稳定发布。他们以各种方式帮助准备RSC,并希望能够成功地集成它到Remix中。rVj28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-10428-0.htmlRemix 2.0 正式发布,现代化全栈Web框架!

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: C++ extern的用法详细解析

下一篇: 一文搞懂Python中私有属性和私有方法使用区别

标签:
  • 热门焦点
  • 红魔电竞平板评测:大屏幕硬实力

    红魔电竞平板评测:大屏幕硬实力

    前言:三年的疫情因为要上网课的原因激活了平板市场,如今网课的时代已经过去,大家的生活都恢复到了正轨,这也就意味着,真正考验平板电脑生存的环境来了。也就是面对着这种残酷的
  • 石头自清洁扫拖机器人G10S评测:多年黑科技集大成之作 懒人终极福音

    石头自清洁扫拖机器人G10S评测:多年黑科技集大成之作 懒人终极福音

    科技圈经常能看到一个词叫“缝合怪”,用来形容那些把好多功能或者外观结合在一起的产品,通常这样的词是贬义词,但如果真的是产品缝合的好、缝合的实用的话,那它就成了中性词,今
  • 2023年Q2用户偏好榜:12+256G版本成新主流

    2023年Q2用户偏好榜:12+256G版本成新主流

    3月份的性能榜、性价比榜和好评榜之后,就要轮到2023年的第二季度偏好榜了,上半年的新机潮已经过去,最明显的肯定就是大内存和存储的机型了,另外部分中端机也取消了屏幕塑料支架
  • Flowable工作流引擎的科普与实践

    Flowable工作流引擎的科普与实践

    一.引言当我们在日常工作和业务中需要进行各种审批流程时,可能会面临一系列技术和业务上的挑战。手动处理这些审批流程可能会导致开发成本的增加以及业务复杂度的上升。在这
  • JavaScript学习 -AES加密算法

    JavaScript学习 -AES加密算法

    引言在当今数字化时代,前端应用程序扮演着重要角色,用户的敏感数据经常在前端进行加密和解密操作。然而,这样的操作在网络传输和存储中可能会受到恶意攻击的威胁。为了确保数据
  • 签约井川里予、何丹彤,单视频点赞近千万,MCN黑马永恒文希快速崛起!

    签约井川里予、何丹彤,单视频点赞近千万,MCN黑马永恒文希快速崛起!

    来源:视听观察永恒文希传媒作为一家MCN公司,说起它的名字来,可能大家会觉得有点儿陌生,但是说出来下面一串的名字之后,或许大家就会感到震惊,原来这么多网红,都签约这家公司了。根
  • 东方甄选单飞:有些鸟注定是关不住的

    东方甄选单飞:有些鸟注定是关不住的

    文/彭宽鸿编辑/罗卿东方甄选创始人俞敏洪带队的&ldquo;7天甘肃行&rdquo;直播活动已在近日顺利收官。成立后一年多时间里,东方甄选要脱离抖音自立门户的传闻不绝于耳,&ldquo;7
  • 三星折叠屏手机去年销售近1000万台 今年目标定为1500万

    三星折叠屏手机去年销售近1000万台 今年目标定为1500万

    7月29日消息,三星率先发力可折叠手机市场,在全球市场已经取得了非常亮眼的成绩,接下来会进一步巩固和扩大这一优势。三星在推出Galaxy Z Flip5和Galax
  • 利用职权私自解除被封帐号 Meta开除20多名员工

    利用职权私自解除被封帐号 Meta开除20多名员工

    11月18日消息,据外媒援引知情人士表示,过去一年时间内,Facebook母公司Meta解雇或处罚了20多名员工以及合同工,指控这些人通过内部系统以不当方式重置用户帐号,其
Top
Baidu
map