Nuxt3项目实现 OG:Image

 

目录

前言

1、安装

2、设置网站 URL

3、启用 Nuxt DevTools

4、创建您的第一个Og:Image

a. 定义OG镜像

b. 查看您的Og:Image

5、自定义NuxtSeo模板

a. 定义 NuxtSeo模板

b. 使用其他可用的社区模板

6、创建自己的模板

a. 定义组件 BlogPost.vue

b. 使用新模板

c. 传递可组合对象自定义

d. 放置图片


前言

首先来一张未配置Og:image的 devtools 效果图

 

要实现的效果


1、安装

npx nuxi@latest module add og-image

 

2、设置网站 URL

# nuxt.config.ts
export default defineNuxtConfig({
  site: {
    // production URL
    url: 'https://example.com',
  },
})

或者更新 .env 

NUXT_PUBLIC_SITE_URL=https://example.com

3、启用 Nuxt DevTools

export default defineNuxtConfig({
  devtools: { enabled: true },
})

4、创建您的第一个Og:Image

a. 定义OG镜像

首先,我们将使用仅限服务器的可组合对象来定义我们的主页。

# pages/index.vue
<script lang="ts" setup>
defineOgImageComponent('NuxtSeo')
</script>

 

b. 查看您的OG:Image

i.访问浏览器中的主页并打开 Nuxt DevTools。

 

ii.快捷键:Shift + Alt + D

iii.进入 Nuxt DevTools 后,可以通过打开命令面板并键入来导航到OG Image选项卡或快捷键 Ctrl + K 输入 og,选择OG Image:

iiii. 您现在应该看到的 OG 图像预览:

5、自定义NuxtSeo模板

a. 定义 NuxtSeo模板

i.在你的主要页面添加代码:

# pages/index.vue
defineOgImageComponent("NuxtSeo", {
  title: "Hello OG Image 👋",
  description: "Look what at me in dark mode",
  theme: "#ff0000",
  colorMode: "dark"
});

ii.点击刷新之后,你将会看到这样的图像:

到这里,恭喜,您已经设置并自定义了您的第一个 og:image !

b. 使用其他可用的社区模板

i.在你的主要页面添加代码:

# pages/index.vue
<script lang="ts" setup>
defineOgImageComponent('Nuxt', {
  headline: 'Greetings',
  title: 'Hello OG Image 👋',
  description: 'Look what at me using the Nuxt template',
})
</script>

ii. 点击刷新按钮 ,你将看到这样图像:

6、创建自己的模板

a. 定义组件 BlogPost.vue

代码中用到了 tailwindcss ,如果没安装可以翻看我之前的文章。http://t.csdnimg.cn/F35TG

# components/OgImage/BlogPost.vue
<script setup lang="ts">
withDefaults(defineProps<{
  title?: string
}>(), {
  title: 'title',
})
</script>

<template>
  <div class="h-full w-full flex items-start justify-start border-solid border-blue-500 border-[12px] bg-gray-50">
    <div class="flex items-start justify-start h-full">
      <div class="flex flex-col justify-between w-full h-full">
        <h1 class="text-[80px] p-20 font-black text-left">
          {{ title }}
        </h1>
        <p class="text-2xl pb-10 px-20 font-bold mb-0">
          mycoolsite.com
        </p>
      </div>
    </div>
  </div>
</template>

b. 使用新模板

i.在你的主要页面添加代码:

# pages/index.vue
<script lang="ts" setup>
defineOgImageComponent('BlogPost', {
  title: 'Is this thing on?'
})
</script>

ii. 点击刷新按钮 ,你将看到这样图像:

c. 传递可组合对象自定义

i.更新你的自定义图像组件代码:

# components/OgImage/BlogPost.vue
<script setup lang="ts">
withDefaults(defineProps<{
  title?: string
  borderColor?: string
}>(), {
  title: 'title',
  borderColor: 'blue-500'
})
</script>

<template>
  <div :class="[`border-${borderColor}`]" class="h-full w-full flex items-start justify-start border-solid border-[12px] bg-gray-50">
    <div class="flex items-start justify-start h-full">
      <div class="flex flex-col justify-between w-full h-full">
        <h1 class="text-[80px] p-20 font-black text-left">
          {{ title }}
        </h1>
        <p class="text-2xl pb-10 px-20 font-bold mb-0">
          mycoolsite.com
        </p>
      </div>
    </div>
  </div>
</template>

ii. 更新你主页面代码

# pages/index.vue
<script lang="ts" setup>
defineOgImageComponent('BlogPost', {
  title: 'Is this thing on?',
  borderColor: 'green-300',
})
</script>

iii. 点击刷新按钮,你将看到这样图像:

边框由原来的蓝色变成绿色。

 

d. 放置图片

i. 更新主页面代码

# pages/index.vue
defineOgImageComponent("BlogPost", {
  img: `${imgStaticBase}/frontend.jpg`,
  borderColor: ""
});

ii. 更新组件代码

# components/OgImage/BlogPost.vue
<script setup lang="ts">
withDefaults(
  defineProps<{
    img?: string;
    borderColor?: string;
  }>(),
  {
    img: "",
    borderColor: ""
  }
);
</script>

<template>
  <div
    :class="[`border-${borderColor}`]"
    class="flex h-full w-full items-start justify-start border-[12px] border-solid bg-gray-50"
  >
    <div class="flex h-full items-start justify-start">
      <div class="flex h-full w-full flex-col items-center justify-between">
        <img class="w-screen object-cover" :src="img" />
      </div>
    </div>
  </div>
</template>

这里预留边框看自己需要。

 

iii. 刷新后你将看到这样的效果


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/664986.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Tuxera Ntfs For Mac 2023的具体使用方法

大家都知道由于操作系统的原因&#xff0c;在苹果电脑上不能够读写NTFS磁盘&#xff0c;但是&#xff0c;今天小编带来的这款tuxera ntfs 2024 mac 破解版&#xff0c;完美的解决了这个问题。这是一款在macOS平台上使用的磁盘读写软件&#xff0c;能够实现苹果Mac OS X系统读写…

视频汇聚EasyCVR平台GA/T 1400视图库应用:助力社会治安防控效能提升

在信息化、智能化的时代浪潮下&#xff0c;公安视频图像信息应用系统的发展与应用显得尤为重要。GA/T 1400标准&#xff0c;全称为《公安视频图像信息应用系统》&#xff0c;作为公安行业的一项重要标准&#xff0c;其视图库的应用在提升公安工作效能、加强社会治安防控等方面发…

数据结构 | 二叉树(基本概念、性质、遍历、C代码实现)

1.树的基本概念 树是一种 非线性 的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。 把它叫做树是因 为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 有一个特殊的结点&#xff0c;称为根…

社交媒体数据恢复:云信Demo

一、准备工作 登录您的网易云信demo账号&#xff0c;确保您具有管理员权限。 确认您要恢复的数据类型&#xff0c;例如聊天记录、文件传输记录等。 确保您熟悉网易云信demo的后台管理界面和功能。 二、数据备份 在进行数据恢复之前&#xff0c;请先备份您现有的数据&#…

python移动文件

测试1(直接把B文件夹移动到了A里&#xff0c;成为了A的子文件夹) import os import shutil# 移动文件夹,B文件夹在当前目录没有了&#xff0c;跑到了A的子文件里 ## shutil.move(./example1/B/, ./example1/A/)测试2(B文件不动&#xff0c;将B文件里的所有的子文件夹移动到A内…

DuDuTalk:营业厅智能质检终端在通信运营商线下营业厅应用价值

在通信行业日益竞争的今天&#xff0c;线下营业厅网点是企业与客户互动的黄金触点&#xff0c;但由于缺乏有效管控和人员能力素质的层次不齐&#xff0c;如何提升线下营业厅的服务质量、提高运营效率&#xff0c;成为各大通信运营商亟待解决的问题。 在此背景下&#xff0c;我…

深入理解路由与视图函数绑定:从装饰器到Flask实战

新书上架~&#x1f447;全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我&#x1f446;&#xff0c;收藏下次不迷路┗|&#xff40;O′|┛ 嗷~~ 目录 一、引言&#xff1a;装饰器在路由绑定中的应用 二、Flask中的add_url_rule()方法 示例代码…

优思学院|作为质量工程师,需要考哪些证书?别浪费你的气力,一张就够!

质量工程师做什么呢&#xff1f;他们的主要任务就是确保产品和服务的质量&#xff0c;以满足客户需求并超越竞争对手。尽管市场上有各种各样的质量管理认证&#xff0c;但优思学院认为&#xff0c;专注于六西格玛的学习和认证就足够了。 为什么选择六西格玛&#xff1f; 第一…

Unity 实现让物体渲染在最前面

演示 实现方案 1.创建一个shader脚本 2.删掉原来的内容&#xff1a;我们自己写 附上完整的shader代码&#xff1a; Shader "Custom/ZTestAlways" {Properties {_Color ("Color Tint",Color) (1,1,1,1)_MainTex("Main Tex",2D) "white&q…

obsidian zotero 联动方案 配置记录 by ZotLit Zotero style

前言 Obsidian 和 zotero 都是非常好用的开源软件&#xff0c;两个软件能做到无缝联动也是很多人的想法&#xff0c;文献笔记可以丝滑的放进 obsidian 中&#xff0c;那多好&#xff0c;网上有很多教程&#xff0c;但能够一步到位讲清楚的很少。我也踩了很多坑才完成部署&…

网络四层、七层协议

一、OSI七层模型 物理层&#xff1a;建立、维护、断开物理连接。 数据链路层&#xff1a;逻辑连接、寻找硬件地址——地址解析协议&#xff1a;ARP、PARP 反向地址转换协议 网络层&#xff1a;寻找逻辑地址&#xff0c;实现不同网络之间的路径选择——ICMP(互联网控制信息协议…

【开源】渔具租赁系统 JAVA+Vue.js+SpringBoot+MySQL

目录 一、项目介绍 1.1渔具档案模块 1.2渔具租赁模块 1.3渔具归还模块 1.4在线留言模块 二、项目截图 三、核心代码 一、项目介绍 Vue.jsSpringBoot前后端分离新手入门项目《渔具租赁系统》&#xff0c;包括渔具档案模块、渔具租赁模块、渔具归还模块、在线留言模块和部…

西藏大学计科改考11408!西藏大学计算机考研考情分析!

西藏大学&#xff08;Tibet University&#xff09;&#xff0c;简称藏大&#xff0c;是西藏自治区所属的综合性大学&#xff0c;是列入教育部直属高校序列的教育部与西藏自治区人民政府合建高校&#xff0c;国家“211工程”重点建设大学&#xff0c;国家“双一流”世界一流学科…

小角楼是怎样成为清廷御酒的?

执笔 | 扬 灵 编辑 | 古利特 “酒史千年远&#xff0c;酒花百代香&#xff0c;天府多佳酿&#xff0c;美酒驻平昌。” 对四川省巴中市平昌县而言&#xff0c;白酒是经济发展的重要产业之一&#xff0c;好山好水出好酒&#xff0c;优良的地质、水源、气候、土壤等条件以及悠久…

设计模式22——备忘录模式

写文章的初心主要是用来帮助自己快速的回忆这个模式该怎么用&#xff0c;主要是下面的UML图可以起到大作用&#xff0c;在你学习过一遍以后可能会遗忘&#xff0c;忘记了不要紧&#xff0c;只要看一眼UML图就能想起来了。同时也请大家多多指教。 备忘录模式&#xff08;Mement…

LeetCode739:每日温度

题目描述 给定一个整数数组 temperatures &#xff0c;表示每天的温度&#xff0c;返回一个数组 answer &#xff0c;其中 answer[i] 是指对于第 i 天&#xff0c;下一个更高温度出现在几天后。如果气温在这之后都不会升高&#xff0c;请在该位置用 0 来代替。 解题思想 使用单…

17-java网络编程

目录 第17章 网络编程 17.1 软件结构 17.2 网络通信三要素 17.2.1 IP地址和域名 1、IP地址 2、域名 17.2.2 端口号 17.2.3 网络通信协议 17.3 TCP与UDP协议 17.3.1 UDP协议 17.3.2 TCP协议 1、三次握手 2、四次挥手 17.4 网络编程API 17.4.1 InetAddress类 17.4…

B端UI设计,演绎高情逸态之妙

B端UI设计&#xff0c;演绎高情逸态之妙

达梦数据库(五) -------- 达梦数据库+mybatisPlus+springboot

前言&#xff1a;安装完达梦数据库后&#xff0c;需要初始化实例&#xff0c;在初始化实例时&#xff0c;需要注意大小写敏感的设置。大小写敏感只能在初始化数据库的时候设置&#xff0c;默认为大小写敏感&#xff0c;一旦设置成功就无法修改&#xff0c;如果想要修改&#xf…

DBeaver连接Elasticsearch

一、下载DBeaver 二、连接&#xff1a; 1、一定要选择开源的 Open Distro Elasticsearch 2、填写地址&#xff1a; 3、选择“URL”&#xff0c;将https改为http 否则会报SSL错误 4、测试连接