Remix 框架简介与安装指南

什么是 Remix?

Remix JS 是一个全栈 React 框架,它允许我们在服务器端渲染代码。与在客户端使用 React 相比,这通常会带来更好的性能和搜索引擎优化(SEO)效果。你可能会问,Next JS 已经提供了服务端渲染,那 Remix 与它有何不同呢?Remix JS 仅专注于服务端渲染。它不具备 Next JS 那样的静态站点生成(SSG)和增量静态再生成(ISR)的能力。不过,由于它使用 esbuild 而不是 webpack,因此相比 Next JS,它能提供更快的开发体验。

Remix 是为了简化嵌套路由、数据获取和表单处理等复杂任务而构建的。其架构允许进行高效的渲染,仅加载页面中必要的部分。即使在禁用 JavaScript 的情况下,Remix 也能确保我们的应用程序无缝运行。

Remix 由 React Router 的联合创作者 Michael Jackson 和 Ryan Florence 创建,于 2020 年推出,旨在通过全栈 React 开发来提升 Web 性能。最初它是付费产品,但在 2021 年转为开源,并因其嵌套路由、SSR 和渐进式增强等强大功能而迅速走红。

核心功能

路由:

它支持基于文件结构的路由,这是构建在 React Router 之上的。它还允许我们创建嵌套路由。在 Remix JS 中,嵌套路由的 UI 继承自父路由组件。如果你使用过 Angular 或 Ember.js 等框架,你应该会熟悉这种模式。

数据获取:

在任何给定的路由中,我们可以导出一个用于前端 UI 的 React 组件。但我们也可以定义一个 loader 函数,该函数将在服务器上获取数据并将其发送到前端。我们的 React 组件可以通过使用 useLoaderData 钩子来访问这些获取的数据。

错误处理:

我们代码中、服务器上或浏览器中的大部分错误都会被 Remix 自动捕获,并渲染距离错误发生位置最近的 Error Boundary(错误边界)。

轻松访问 标签和文档:

任何路由模块都可以轻松提供对 head 标签的访问。在 head 标签中,我们可以轻松添加 meta 标签、描述和 CSS 链接。

TypeScript 支持:

它开箱即用地支持 TypeScript,我们可以轻松使用 TypeScript 生成应用程序的脚手架。

内置 Cookie 支持:

Remix 提供了一个名为 createCookie 的内置函数来处理 Cookie。

安装和设置 Remix 的步骤

第 1 步:安装并验证 Node 版本

在创建 Remix 应用程序之前,请确保我们已安装 node.js 和 npm。我们可以从这里安装 node js。通过运行以下命令来确认安装。

npm -v
node -v

第 2 步:初始化 Remix 项目

现在创建一个新文件夹并在终端中进入该文件夹。运行以下命令以创建一个最新版本的 Remix 应用。

npx create-remix@latest

第 3 步:选择所需选项

在继续安装的过程中,系统会提示我们选择一个服务器。请选择一个我们熟悉的服务器并继续。

!image终端截图

第 4 步:选择语言

输入我们想使用的编程语言并继续安装。

!image终端截图

第 5 步:切换到项目目录

使用以下命令切换到项目文件夹

cd my-remix-app

项目结构:

!Remix-Project-structure

package.json 文件中的依赖列表如下:

“`

{

"name": "my-remix-app",

"private": true,

"sideEffects": false,

"type": "module",

"scripts": {

"build": "remix vite:build",

"dev": "remix vite:dev",

"lint": "eslint –ignore-path .gitignore –cache –cache-location ./node_modules/.cache/eslint .",

"start": "remix-serve ./build/server/index.js",

"typecheck": "tsc"

},

"dependencies": {

"@remix-run/node": "^2.11.2",

"@remix-run/react": "^2.11.2",

"@remix-run/serve": "^2.11.2",

"isbot": "^4.1.0",

"react": "^18.2.0",

"react-dom": "^18.2.0"

},

"devDependencies": {

"@remix-run/dev": "^2.11.2",

"@types/react": "^18.2.20",

"@types/react-dom": "^18.2.7",

"@typescript-eslint/eslint-plugin": "^6.7.4",

"@typescript-eslint/parser": "^6.7.4",

"autoprefixer": "^10.4.19",

"eslint": "^8.38.0",

"eslint-import-resolver-typescript": "^3.6.1",

"eslint-plugin-import": "^2.28.1",

"eslint-plugin-jsx-a11y": "^6.7.1",

"eslint-plugin-react": "^7.33.2",

"eslint-plugin-react-hooks": "^4.6.0",

"postcss": "^8.4.38",

"tailw

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/43077.html
点赞
0.00 平均评分 (0% 分数) - 0