当前位置: 首页 > news >正文

wordpress 获取用户角色好用的seo软件

wordpress 获取用户角色,好用的seo软件,机关网站建设创新,做响应式网站最大宽度Remix是一个既能做服务端渲染,又能做单页应用的框架,如果想做单页应用,又想学服务端渲染,使用Remix可以降低学习成本。最近,在学习Remix的过程中,遇到了在SPA模式下与Ant Design整合的问题。 我用Remix官网…

Remix是一个既能做服务端渲染,又能做单页应用的框架,如果想做单页应用,又想学服务端渲染,使用Remix可以降低学习成本。最近,在学习Remix的过程中,遇到了在SPA模式下与Ant Design整合的问题。
我用Remix官网的命令下载了一个SPA的模板

npx create-remix@latest --template remix-run/remix/templates/spa

我们知道,Remix有一个ErrorBoundary组件,是用来显示错误页的,比如404页面,我在root.tsx导出了这个组件

export function ErrorBoundary(){const navigate=useNavigate()return (<Resultstatus="404"title="404"subTitle="抱歉,你访问的页面不存在。"extra={<Button type="primary" onClick={() => navigate(-1)}>返回</Button>}/>)
}

这里面使用了Ant Design的Result组件,用来显示404错误信息,结果在测试过程中发现页面卡死,CPU温度飙高,浏览器控制台不停报错,而且页面中样式也没加载出来,排版混乱。
后来,我花了几天研究这个问题,发现是root.tsx中的Layout组件搞的鬼。Layout组件是用来定义root.tsx中的布局的,它会把ErrorBoundary组件当作静态内容给放进去,因此无法动态加载Ant Design组件对应的样式,并且出现一大堆报错,导致CPU空转,温度飙高。因此,我注释了这个组件,

// export function Layout({ children }: { children: React.ReactNode }) {
//   return (
//     <html lang="en">
//       <head>
//         <meta charSet="utf-8" />
//         <meta name="viewport" content="width=device-width, initial-scale=1" />
//         <Meta />
//         <Links />
//       </head>
//       <body>
//         {children}
//         <ScrollRestoration />
//         <Scripts />
//       </body>
//     </html>
//   );
// }

后来在Remix官网找到了解决办法。
首先,在app目录下新建index.html

<!DOCTYPE html>
<html lang="en">
<head><!-- <title>My Cool App!</title> --><meta charSet="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" />
</head><body><div id="app"><!-- Remix SPA --></div>
</body></html>

这里面建议不要有title标签,否则Remix给不同的路由添加的title会失效。然后,修改root.tsx

export default function App() {return (<><html lang="en"><head><meta charSet="utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1" /><Meta /><Links /></head><body><Outlet/><ScrollRestoration /><Scripts /></body></html></>);
}export function HydrateFallback() {return (<><ProSkeleton type="list"></ProSkeleton><Scripts/></>)
}

其中,App组件是用来加载路由组件的,里面需要包含Meta 和Links 标签,才能使每个路由导出的Meta和Links生效,保证样式文件能够正常加载,HydrateFallback组件是在路由跳转过程中显示加载状态的页面,如骨架屏。
接着,在app下创建entry.server.tsx

import fs from "node:fs";
import path from "node:path";import type { EntryContext } from "@remix-run/node";
import { RemixServer } from "@remix-run/react";
import { renderToString } from "react-dom/server";export default function handleRequest(request: Request,responseStatusCode: number,responseHeaders: Headers,remixContext: EntryContext
) {const shellHtml = fs.readFileSync(path.join(process.cwd(), "app/index.html")).toString();const appHtml = renderToString(<RemixServer context={remixContext} url={request.url} />);const html = shellHtml.replace("<!-- Remix SPA -->",appHtml);return new Response(html, {headers: { "Content-Type": "text/html" },status: responseStatusCode,});
}

修改app下的client.entry.tsx

import { RemixBrowser } from "@remix-run/react";
import { startTransition, StrictMode } from "react";
import { hydrateRoot } from "react-dom/client";startTransition(() => {hydrateRoot(document.querySelector("#app") || document,<StrictMode><RemixBrowser/></StrictMode>);
});

这样,就能把路由组件加载到index.html中的

<div id="app"><!-- Remix SPA --></div>

了。
然后,我测试了一下,发现404页面能够正常跳转,没有样式加载错误了。
在这里插入图片描述

http://www.yidumall.com/news/108085.html

相关文章:

  • 织梦系统如何做网站seo工作是什么意思
  • 西安seo外包机构seo北京
  • 网站开发制作心得企业网站建设费用
  • 做服务员哪个网站靠谱东莞seo建站优化工具
  • 免费高清大图网站站长工具seo综合查询官网
  • 阿里云服务器做电影网站吗武汉关键词排名工具
  • 做旅行攻略的网站好nba常规赛
  • 财务软件哪个好杭州排名优化公司
  • 阳朔到桂林游船时间表谷歌优化
  • 二次开发公司站长之家seo查找
  • 定制网站系统开发网站域名查询地址
  • 青海网站建设哪个最好网站推广和优化的原因网络营销
  • 四川建设厅网站首页今日山东新闻头条
  • 合肥建设云app账号seo是什么
  • wordpress 安全防护保定百度首页优化
  • 网页制作工具哪些好用怎么网站排名seo
  • 上海建网站多少钱关键词搜索网站
  • 阿里云lnmp安装wordpress上海seo优化bwyseo
  • 个人可以做几个网站新媒体营销六种方式
  • 免费模板下载软件seo优化外包顾问
  • 公司介绍模板免费网站seo策划方案
  • 网站https认证怎么做免费发布推广信息的软件
  • 传媒公司签约主播合同seo优化技术培训
  • 网站建设实训常德网站设计
  • 阿里巴巴网站更新怎么做百度资源共享
  • 网站后缀gaseo综合查询软件排名
  • 南通网站建设公司企业内训
  • 室内设计联盟邀请码怎么弄北京seo费用是多少
  • wordpress搬家后文章网站seo基础
  • 北京市城市建设委员会门户网站搜索引擎的优化和推广