前端框架 Remix,不是以太坊的 Remix IDE
基于 React 和 TypeScript 的 SSR 服务器端渲染的全栈Web框架
https://remix.run
Remix 其实基于 esbuild 很多代码都跑在服务端
Remix和 Next.js都是 React服务端渲染的 全栈开发元框架 Meta-Framework
- 元框架提供一种通用的结构和范式,选择Remix还是 Next.js, 其实更多的是对开发范式的选择;
- 一套React服务端渲染的生产化就绪的元框架, 都有一套范式
- Remix 的核心是一套编译系统和一套路由系统
Compiler:@remix-run/dev,基于 esbuild 和一堆插件实现了 dev 和 build;
Server:@remix-run/{adaptor},就是 @remix-run/server-runtime 上包了一层,提供对各个平台的封装
Client:@remix-run/react,里面依赖了 react-router
Remix 的 Compiler 通过 esbuild 的 treeshake,
build client 时会把不需要的 server 代码 treeshake 掉,
build server 时会把不用的 client 代码 treeshake 掉
remix 特点
- 让开发者聚焦于UI以及 UI相关的数据处理逻辑. 剩下的交给Remix完成
- 追求速度、用户体验(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 的并发特性
- 提供开发网页需要所有状态,开箱即用;提供所有需要使用的组件,包括
、、 、 - 内置错误处理,针对非预期错误处理的
和开发者抛出错误处理的
路由模块中三个核心
- UI组件,路由文件的默认导出组件, 用于渲染页面
- loader,方法, 为UI组件提供服务器的数据
- 在该方法中可以使用服务端包或工具, 如数据库的访问,
- 该方法在构建时会被裁剪并捆绑到服务端包中, 不会暴露到客户端包中
- action,方法, 为UI组件的 form表单实现提交处理
- 在该方法中可以使用服务端包或工具.如数据库的访问,
- 该方法在构建时会被裁剪并捆绑到服务端包中, 不会暴露到客户端包中
选型建议
静态内容为主的,如 Blog, 文档站点等,选 Nextjs,或 Astro
- 部署到静态内容托管平台上的, 推荐Next.js的SSG模式
动态内容为主的,如管理后台, WebApp等,选择 SSR,例如 Remix
- 如果你的项目以前使用了 react-router的SPA, 现在想迁移到SSR模式, 推荐Remix;