믹스에서 메타 태그 동적으로 설정하기
17257 단어 reacthtmlseotypescript
한 제품의 이어폰 페이지에는
Sony Headphones, the number one product in its class!
, 채팅 페이지에는 제목이 있을 수 있습니다. Conversation with Leeland
, 또는 구글 검색 결과에 표시하고 싶은 특정한 이미지가 있을 수 있습니다.HTML에서 메타 태그를 사용하면 쉽게 설정할 수 있지만 여러 페이지를 처리할 수 있는 공유 구성 요소를 사용하는 페이지에서 메타데이터를 설정하려면 어떻게 해야 합니까?(예: 재사용 가능한 제품 페이지 구성 요소)
Remix은 매우 간단한 설치 방법을 제공합니다.
The repository for the final sample project can be found here
믹스 프로젝트 시작
우리는
/profile/<username>
과 비슷한 URL에 프로필 페이지를 만들고 메타데이터를 사용하여 브라우저의 제목 옵션을 <username>'s Profile Page
으로 업데이트할 것입니다.사업을 시작하기 위해서, 우리는 계속해서 새로운
Remix
프로젝트를 창설할 것이다.npx create-remix@latest
This tutorial assumes you have node installed and up-to-date
일단 네가 완성하면, 너의 새로운 프로젝트를 계속 열어라.
구성 파일 경로 설정
Remix의 라우팅 시스템은 프로젝트의 파일에 따라 작동합니다.기존
/app/routes/index.tsx
은 /
의 홈 경로가 됩니다.우리는 모든 사용자 이름을 사용할 수 있고 사용자의 데이터를 얻을 수 있는 프로필에 경로를 설정해야 한다.
/app/routes
에 profile.$username.tsx
이라는 파일을 만듭니다.여기에 사용된 명명약정 때문에, 이것은
/profile
곳의 루트이며, 어댑터 파라미터가 있는 $username
의 하위 루트가 있을 것이다.우리는 모두 /profile/$username
개의 노선이 있다.계속하여 다음 코드를 파일에 붙여넣습니다.
import { json, LoaderFunction, useLoaderData } from 'remix'
type User = {
username: string;
first: string;
last: string;
}
export let loader: LoaderFunction = async ({ params }) => {
const users: User[] = [
{
username: 'sabinthedev',
first: 'Sabin',
last: 'Adams'
},
{
username: 'leeland',
first: 'Leeland',
last: 'Adams'
}
]
const user = users.find(user => user.username === params.username)
if (!user) {
throw new Response('Not Found', {
status: 404
})
}
return json(user)
}
export default function Profile() {
const user = useLoaderData()
return (
<div style={{ display: 'flex', height: '100%', justifyContent: 'center', alignItems: 'center', background: '#0c0f12' }}>
<h2 style={{ flex: 1, textAlign: 'center', color: '#f1f1f1', fontFamily: 'system-ui' }}>{user.first} {user.last}</h2>
</div>
);
}
이것은 사용자의 이름과 성만 표시하는 기본 페이지만 설정합니다.현재 우리는 이미'데이터베이스'에 수동으로 두 명의 사용자를 추가했지만 이것은 실제 데이터 저장소에 연결된 것이라고 상상할 수 있다!이를 테스트하려면 서버를 부팅하려면
npm run dev
을 실행하고 http://localhost:3000/profile/leeland으로 이동하십시오.아름다웠어하지만 맨 위에 있는
New Remix App
라벨 제목이 유용하지 않습니까?우리는 그것을 더욱 의미 있는 것으로 만들고 싶다.동적 메타데이터 설정
메타데이터를 설정하기 위해 라우팅에서 메타데이터 함수를 내보낼 수 있으며, Remix는 이 함수를 사용하여 필요한 메타데이터를 자동으로 연결합니다.
우선
MetaFunction
라이브러리에서 remix
을 가져오도록 하세요.import {
json,
LoaderFunction,
useLoaderData,
+ MetaFunction
} from 'remix'
그런 다음 작업을 시작하려면 내보낸 meta
함수를 계속 추가합니다.export const meta: MetaFunction = () => {
return {
title: 'Profile Page'
}
}
만약 당신이 지금 브라우저를 보고 있다면, 리믹스가 이 기능을 등록하고, 자동으로 메타 탭을 추가해서 탭 제목을 설정하도록 할 것입니다.이것은 매우 멋있지만, 만약 우리가 사용자 정의 제목을 원한다면, 우리가 방문한 사용자의 개인 자료에 달려 있습니까?믹서의
MetaFunction
은 대량의 유용한 데이터를 포함하는 대상을 수신한다.특히 data
키는 Loader
함수에서 나온 데이터를 포함한다.불러온 사용자를 방문하려면 누르십시오.
export const meta: MetaFunction = ({ data }: { data: User }) => {
const formatName = (name: string) => name.charAt(0).toUpperCase() + name.slice(1)
return {
title: `${formatName(data.username)}'s Profile Page`
}
}
이제 우리의 개인 정보 페이지로 돌아가면, 우리는 더욱 묘사적인 소식을 보아야 한다.이러한 과정을 사용하면 우리는 페이지의 동태를 위해 어떠한 유형의 메타데이터를 설정할 수 있습니다!
이점: Twitter 메타데이터 설정
만약 우리가 트위터에 이 파일의 링크를 공유하고 싶다면?
I'll be using a tool called Ngrok and a to preview what our link preview would look like in a Twitter post.
현재 링크 미리 보기를 보면 비슷한 내용을 볼 수 있습니다👎🏻:
트위터에 우리가 이 데이터를 어떻게 표시하길 원하는지 설명할 수 있는 메타데이터가 없습니다.자세한 내용은
meta
함수를 업데이트합니다.export const meta: MetaFunction = ({ data }: { data: User }) => {
const formatName = (name: string) => name.charAt(0).toUpperCase() + name.slice(1)
return {
title: `${formatName(data.username)}'s Profile Page`,
'twitter:card': 'summary_large_image',
'twitter:creator': `@${data.username}`,
'twitter:site': `@${data.username}`,
'twitter:title': `${data.first} ${data.last}`,
'twitter:description': `${data.first} ${data.last}'s profile page. Check it out @${data.username}`
}
}
이제 우리는 더욱 이와 같은 것을 얻어야 한다.아, 많이 좋아졌어!그것은 우리가 공유하고 있는 링크에 대한 유용한 정보를 보여 줍니다.
twitter:image
속성을 사용하여 미리 보기 이미지를 추가할 수도 있습니다.결론
리믹스는 믹스에서 많은 정력을 쏟아낼 수 있는 훌륭한 도구를 가지고 있다.이것은 단지 그중의 한 예일 뿐이다!
이것은 도움이 될 뿐만 아니라 사용자와 검색엔진이 당신의 사이트가 제공하는 내용을 이해하도록 격려할 것입니다!
읽어주셔서 감사합니다!
p. 만약 당신이 이 글을 좋아한다면, 반드시 내가 새로운 글을 발표할 때 나의 업데이트에 관심을 가져야 합니다!
Reference
이 문제에 관하여(믹스에서 메타 태그 동적으로 설정하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sabinthedev/dynamically-setting-meta-tags-in-remix-4e96텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)