Next.간단한 CGM 자동 차트
1. 대역이란
자동 그림에서
표식
Head
<loc>
반드시... 해야 한다페이지의 URL을 표시합니다.
<lastmod>
옵션페이지의 최종 업데이트일을 나타냅니다.
<changefreq>
옵션always
,hourly
,daily
,weekly
,monthly
,yearly
,never
에서 페이지의 업데이트 빈도를 나타낸다.<priority>
옵션0.0-1.0에서는 사이트 내 다른 URL과 상대적인 우선 순위를 나타냅니다.기본 우선 순위는 0.5입니다.
기본 형식은 다음과 같다.
<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://google.com/</loc>
<lastmod>2022-05-02T22:30:57.000Z</lastmod>
<changefreq>hourly</changefreq>
<priority>0.5</priority>
</url>
</urlset>
2. 자동 그림에 사용되는 탭 확장
JSX에는 자동 기어에 사용되는 XML 태그, JSX가 추가되었습니다.Element으로 처리할 수 있습니다.
src/@types/xml.d.ts
declare namespace JSX {
interface IntrinsicElements {
urlset: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement> & {
xmlns: string;
};
url: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
loc: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
lastmod: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
changefreq: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
priority: React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>;
}
}
3. 자동 그림을 만드는 함수 만들기
URL 목록
<urlset>
에서 작성하고 JSX를 만듭니다.Element을 반환하는 함수를 작성합니다.그리고
renderToString
로 문자열로 변환하여 머리에 <?xml version="1.0" encoding="UTF-8"?>
를 추가하여 자동 그림을 완성합니다.src/sitemap/generator.tsx
import { renderToString } from 'react-dom/server';
export type URL = {
loc: string;
lastMod?: Date;
freq?: 'always' | 'hourly' | 'daily' | 'weekly' | 'monthly' | 'yearly' | 'never';
priority?: 0.0 | 0.1 | 0.2 | 0.3 | 0.4 | 0.5 | 0.6 | 0.7 | 0.8 | 0.9 | 1.0;
};
function generateURLSet(list: URL[]): JSX.Element {
return (
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
{list.map(({ loc, lastMod, freq, priority }: URL, i) => (
<url key={i}>
<loc>{loc}</loc>
{lastMod && <lastmod>{lastMod.toISOString()}</lastmod>}
{freq && <changefreq>{freq}</changefreq>}
{priority && <priority>{priority}</priority>}
</url>
))}
</urlset>
);
}
export function generateSiteMap(list: URL[]): string {
return '<?xml version="1.0" encoding="UTF-8"?>' + renderToString(generateURLSet(list));
}
4. 자동 그림 페이지 만들기
자동 그림 페이지를 만듭니다.
getServerSideProps
에서 백엔드에서 글 일람, 사용자 목록 등을 가져와 목록에 추가합니다.XML 문자열로 변환하고 응답으로 돌아갑니다.
src/pages/sitemap.xml.tsx
import { GetServerSidePropsContext } from 'next';
import { generateSiteMap, URL } from 'frameworks/sitemap/generator';
export default function Page(): null {
return null;
}
export async function getServerSideProps({ res }: GetServerSidePropsContext): Promise<{
props?: Record<string, unknown>;
notFound?: boolean;
}> {
try {
const list: URL[] = [
{
loc: 'https://google.com/',
lastMod: new Date(1651530657000),
freq: 'hourly',
priority: 0.5,
},
];
const xml = generateSiteMap(list);
res.setHeader('Cache-Control', 'public, max-age=3600, s-maxage=86400, stale-while-revalidate');
res.setHeader('Content-Type', 'text/xml');
res.end(xml);
return {
props: {},
};
} catch (error) {
return {
notFound: true,
};
}
}
Reference
이 문제에 관하여(Next.간단한 CGM 자동 차트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/66ed3gs/articles/5d934ad8e0e4ab텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)