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

Nuxt 学习笔记(三)

SEO头部设置基于 Unhead 提供useHead管理head也可在nuxt.config.ts的app.head中配置。同时提供useHeadSafe来支持安全的头部修改策略interfaceMetaObject{title?:string;// 文档标题titleTemplate?:string|((title?:string)string);// 动态标题模板templateParams?:Recordstring,string|Recordstring,string;// 模板占位符参数base?:Base;link?:Link[];// rel、stylesheet、preconnect、href、crossorigin 等meta?:Meta[];style?:Style[];script?:Script[];noscript?:Noscript[];htmlAttrs?:HtmlAttributes;bodyAttrs?:BodyAttributes;}useHeadSafe()通过白名单限制可修改的 head 相关属性避免不可信内容注入脚本或非法标签从而降低 XSS 等风险。处理不信任的数据来源。用户生成内容写入 head 前建议也做一次安全过滤转义。constWhitelistAttributes{htmlAttrs:[class,style,lang,dir],bodyAttrs:[class,style],meta:[name,property,charset,content,media],noscript:[textContent],style:[media,textContent,nonce,title,blocking],script:[type,textContent,nonce,blocking],link:[color,crossorigin,fetchpriority,href,hreflang,imagesrcset,imagesizes,integrity,media,referrerpolicy,rel,sizes,type,],};useSeoMeta辅助编写 SEO 相关 meta减少 Open Graphproperty与普通 metaname混用导致的标签错误。内置了 100 多个与 SEO / 社交分享相关的字段映射。旧nuxt使用useServerSeoMeta在服务端完成生成现在已废弃useSeoMeta({title:My Amazing Site,ogTitle:My Amazing Site,description:This is my amazing site, let me tell you all about it.,ogDescription:This is my amazing site, let me tell you all about it.,ogImage:https://example.com/image.png,twitterCard:summary_large_image,});优先在服务端写入静态 SEO 信息因为多数爬虫主要抓取首屏 HTML 中的 meta。随路由或客户端状态变化时再使用响应式更新。script setup langts // 判断是否为服务端 if (import.meta.server) { useSeoMeta({ robots: index, follow, description: Static description that does not need reactivity, ogImage: https://example.com/image.png, }); } // 客户端响应式变更 const dynamicTitle ref(My title); useSeoMeta({ title: () dynamicTitle.value, ogTitle: () dynamicTitle.value, }); /script常用 SEO 配置列表useSeoMeta({// Basic SEOtitle:Product Name - Your Brand,description:Detailed product description optimized for search engines.,// Open Graph社交平台抓取 OG 标签生成链接预览卡片ogTitle:Product Name - Your Brand,ogDescription:Engaging description for social media shares.,ogImage:https://example.com/product-social.jpg,ogUrl:https://example.com/products/my-product,ogType:product,ogSiteName:Your Brand,// Twitter CardtwitterTitle:Product Name - Your Brand,twitterDescription:Engaging description for Twitter shares.,twitterImage:https://example.com/product-twitter.jpg,twitterCard:summary_large_image,// 文章类字段有利于作者与发布时间等结构化展示articleAuthor:Author Name,articlePublishedTime:2023-01-01,articleModifiedTime:2023-02-15,});SiteMapSitemap 是用来给向搜索引擎提供可抓取网站 URL 列表通过生产sitemap.xml搜索引擎便于发现站内链接与页面结构避免抓取不全和重复收录的问题。nuxt 可使用官方模块 nuxtjs/sitemap 生成站点地图。通过defineSiteMapEventHandler暴露动态sitemap在nuxt.config.ts目录下引入 sitemap 配置实现静态 sitemap 站点功能头部组件化Nuxt 提供head对应的组件可在模板中声明式配置 head并支持响应式更新。Title设置标题Base设置页面基础路径NoScript降级提示比如不兼容 JS 场景Style全局样式Meta元信息设置如果有useHead相同内容组件优先级更高Link链接标签Bodybody出于代码结构考虑的组件Htmlhtml出于代码结构考虑的组件Headhead出于代码结构考虑的组件尽量放在根节点不要嵌套在组件内部使用动态头部模板通过titleTemplate动态头部配置支持多种子页面的配置场景并通过templateParams设置传给头部的参数内置了%s代表当前标题通常会把动态头部放在 Layout 布局模板中或者app.vue入口文件目前测试templateParams的参数存在无法读取script setup langtsuseHead({// 会根据当前组件是否有头部启用titleTemplate:(titleChunk){returntitleChunk?${titleChunk}%separator %siteName:%siteName},templateParams:{siteName:Site Title,separator:-,},})/script目前生效逻辑titleTemplate 所在当前页设置头部titletitleChunk会有值拼接父页面title会替换子页面的title对于子页面设置title父页面不设置titletitleChunk会拼接上子页面设置的title内容配合页面中的definePageMeta()让可以让titleTemplate通过useRoute()获取到当前的meta属性脚本优化配置可以通过useHead添加脚本但脚本解析时会阻塞首屏加载速度这时可以通过tagPosition: bodyClose将脚本迁移到body后方script setup langtsuseHead({script:[{src:https://third-party-script.com,// head | bodyClose | bodyOpentagPosition:bodyClose,},],})/scripthead头部bodyOpenbody开始位置,bodyClosebody结束位置页面过渡全局页面过渡配置通过nuxt.config.ts定义实现页面内容的过渡操作过渡行为和 Vue 的transition一致只不过支持通过配置项来指定支持页面过渡pageTrasition和layoutTrasition布局过渡name指定的是过渡的类基名mode指定生效时间是 vue 的特性 Vue.jsdefault默认新旧元素出入同时进行in-out新元素先进旧元素再出out-in常用旧元素先出执行leave新元素再进执行enterexportdefaultdefineNuxtConfig({app:{pageTransition:{name:page,mode:out-in},layoutTransition:{name:layout,mode:out-in},},});在app.vue中指定对应的样式// 激活时的效果一般用于添加过渡时间.layout-enter-active,.layout-leave-active{transition:all0.4s;}// 过渡.layout-enter-from,.layout-leave-to{filter:grayscale(1);}.page-enter-active,.page-leave-active{transition:all0.4s;}.page-enter-from,.page-leave-to{opacity:0;filter:blur(1rem);}组件内部过渡配置通过definePageMeta配置过渡信息支持过渡钩子捕获对元素进行其他过渡操作适用于复杂动画库例如 GSAP.也可以通过middleware中间件动态修改过渡行为适用于图片翻页预览的场景definePageMeta({pageTransition:{mode:out-in,name:about-page,onBeforeEnter:(el){console.log(onBeforeEnter);console.log(el);},},middleware(to,from){if(to.meta.pageTransitionto.meta.pageTransition!false){to.meta.pageTransitionto.params.idfrom.params.id?slide-left:slide-right;}},});.slide-left-enter-active,.slide-left-leave-active,.slide-right-enter-active,.slide-right-leave-active{transition:all0.2s;}.slide-left-enter-from{opacity:0;transform:translate(50px,0);}.slide-left-leave-to{opacity:0;transform:translate(-50px,0);}.slide-right-enter-from{opacity:0;transform:translate(-50px,0);}.slide-right-leave-to{opacity:0;transform:translate(50px,0);}NuxtPage 过渡可以在 NuxtPage 上添加过渡标签启用当前子路由下的全局过渡在 vue 中就类似于router-view外层嵌套transition的效果NuxtLayout NuxtPage :transition{ name: bounce, mode: out-in, } / /NuxtLayout原生 View Transition API 启用使用视图过渡 API - Web API | MDNscript setup langts definePageMeta({ viewTransition: false, }); /script如果需要渐进增强在浏览器支持 View Transition API 情况下禁用 Nuxt 自带 transiton 效果创建中间件~/middleware/disable-vue-transitions.global.ts来实现export default defineNuxtRouteMiddleware((to) { // 判断非服务端且支持 Transiton api if (import.meta.server || !document.startViewTransition) { return } // Disable built-in Vue transitions // 关闭 nuxt 内置 vue过渡方案 to.meta.pageTransition false to.meta.layoutTransition false })NuxtLoadingIndicator 导航过渡Nuxt 内置了进度条导航过渡组件使用时要放在根元素下方不要嵌套到其他元素!-- app.vue -- template div NuxtLoadingIndicator/NuxtLoadingIndicator NuxtLayout NuxtPage /NuxtPage /NuxtLayout /div /template注意事项过渡代码不能嵌套在style scoped作用域中会导致子页面跳转失效可以使用:deeep不推荐或者迁移到全局代码中实现NuxtLoadingIndicator放在底层根元素之下否则可能不会显示全局状态存储支持useState(key,init)声明全局状态也可以使用 pinia nuxt 插件在各个页面之间共享状态同步兼容 SSR 状态共享服务端支持支持组合式hook声明使用key共享键init初始化值必须是函数可以结合shallowRef浅层响应提高对象数组的性能script setup langts // 创建一个 key 为 counter 的全局共享状态 const state useState(counter, () 1); const shallowState useState(counter, () shallowRef({ params: obj params }), ); clearNuxtState(counter); /script如果要清空状态使用clearNuxtState(key | key[])去清空应用场景用户信息同步全局配置相同key会发生什么会使用先声明的状态作为默认值猜测底层是用了字典去重判断参考内容Nuxt Documentation

相关文章:

Nuxt 学习笔记(三)

SEO 头部设置 基于 Unhead 提供 useHead 管理 <head>&#xff0c;也可在 nuxt.config.ts 的 app.head 中配置。 同时提供 useHeadSafe 来支持安全的头部修改策略 interface MetaObject {title?: string; // 文档标题titleTemplate?: string | ((title?: string) &…...

使用Taotoken聚合API为你的Node.js后端服务注入AI能力

使用Taotoken聚合API为你的Node.js后端服务注入AI能力 1. 统一接入多模型的技术方案 在现代Web应用开发中&#xff0c;智能对话功能已成为提升用户体验的重要组件。作为全栈开发者&#xff0c;我们经常面临模型选型与接入的挑战。Taotoken提供的OpenAI兼容API解决了这一痛点&…...

OpenWrt网易云音乐解锁插件:3分钟实现全屋音乐自由

OpenWrt网易云音乐解锁插件&#xff1a;3分钟实现全屋音乐自由 【免费下载链接】luci-app-unblockneteasemusic [OpenWrt] 解除网易云音乐播放限制 项目地址: https://gitcode.com/gh_mirrors/lu/luci-app-unblockneteasemusic 还在为网易云音乐中那些灰色的"无版权…...

从单片机到Linux内核:一文搞懂原子操作atomic_t的前世今生与实战

从单片机到Linux内核&#xff1a;一文搞懂原子操作atomic_t的前世今生与实战 在嵌入式开发领域&#xff0c;从单片机转向Linux内核开发就像从平静的湖泊驶向波涛汹涌的大海。习惯了在STM32上用__disable_irq()简单粗暴地解决并发问题的工程师&#xff0c;初次面对Linux内核的SM…...

豆包付费订阅背后,藏着一个反直觉的真相:给你顶配AI,你用得动吗?

豆包悄悄在App Store更新了付费订阅声明。68元/月&#xff0c;200元/月&#xff0c;500元/月&#xff0c;国产AI的"免费午餐"&#xff0c;正式宣告终结。这不是一条普通的商业新闻。字节扛了这么久&#xff0c;最终还是选了商业化。表面是商业压力&#xff0c;背后是…...

Arduino UNO SPE Shield:工业物联网通信解决方案

1. Arduino UNO SPE Shield项目概述作为一名长期从事工业自动化开发的工程师&#xff0c;当我第一次接触到Arduino UNO SPE Shield时&#xff0c;立刻意识到这款扩展板将为工业物联网(IIoT)项目带来革命性的便利。这款由Arduino官方推出的扩展板&#xff0c;通过Microchip LAN8…...

基于LangChain与Ollama的本地化网页摘要工具实践指南

1. 项目概述&#xff1a;一个基于本地大模型的网页摘要工具最近在折腾信息收集和整理&#xff0c;发现每天要看的网页和视频实在太多了&#xff0c;时间根本不够用。相信很多做研究、写报告或者单纯想高效获取信息的朋友都有同感。传统的摘要工具要么是云端服务&#xff0c;有隐…...

微信聊天记录解密终极指南:快速恢复被加密的珍贵数据

微信聊天记录解密终极指南&#xff1a;快速恢复被加密的珍贵数据 【免费下载链接】WechatDecrypt 微信消息解密工具 项目地址: https://gitcode.com/gh_mirrors/we/WechatDecrypt 你是否曾经因为手机损坏、微信重装或误删除而丢失了重要的聊天记录&#xff1f;当那些珍贵…...

多智能体协作平台AgentWall:从架构设计到工程实践

1. 项目概述&#xff1a;从“墙”到“智能体协作平台”的蜕变最近在开源社区里&#xff0c;一个名为agentwall/agentwall的项目引起了我的注意。乍一看这个标题&#xff0c;很容易让人联想到某种网络隔离或安全边界技术&#xff0c;毕竟“wall”这个词在技术领域通常指向防火墙…...

OpenUI深度解析:AI驱动界面生成从原理到实战部署

1. 项目概述&#xff1a;当AI学会“画”界面最近在跟几个做产品经理和前端开发的朋友聊天&#xff0c;大家不约而同地都在吐槽一件事&#xff1a;从想法到可交互的原型&#xff0c;这个链路太长了。产品经理用Figma画半天&#xff0c;交付给前端&#xff0c;前端还得吭哧吭哧地…...

文海问津项目日志(四)

本次主要实现了网关的错误归一化与统一 JSON Envelope功能目标所有失败请求都返回一致的 JSON 结构&#xff0c;便于前端统一处理错误 body 必含 requestId&#xff0c;便于定位链路网关级错误&#xff08;鉴权/限流/未知异常&#xff09;不依赖下游服务关键代码原文 解读1 统…...

Total War模组开发的现代化架构:深度解析Rusted PackFile Manager(RPFM)的技术实现

Total War模组开发的现代化架构&#xff1a;深度解析Rusted PackFile Manager&#xff08;RPFM&#xff09;的技术实现 【免费下载链接】rpfm Rusted PackFile Manager (RPFM) is a... reimplementation in Rust and Qt6 of PackFile Manager (PFM), one of the best modding t…...

多智能体系统架构设计:从隔离沙箱到编排引擎的工程实践

1. 项目概述&#xff1a;从零构建一个智能体协作与隔离平台最近在开源社区里&#xff0c;一个名为agentwall/agentwall的项目引起了我的注意。乍一看这个名字&#xff0c;你可能会联想到“智能体墙”或者“代理墙”&#xff0c;但它的核心远不止于此。简单来说&#xff0c;这是…...

递归文件搜索工具recursearch:声明式配置与自动化集成实践

1. 项目概述&#xff1a;一个为递归搜索而生的工具如果你经常和文件系统打交道&#xff0c;无论是作为开发者、数据分析师还是系统管理员&#xff0c;肯定遇到过这样的场景&#xff1a;需要在海量的目录和文件中&#xff0c;精准地找到那些符合特定模式的文件&#xff0c;并且还…...

从OSGB到3DTiles:揭秘LOD策略(add vs replace)在Cesium中的实战选择

从OSGB到3DTiles&#xff1a;LOD策略在Cesium中的工程化实践 当实景三维数据从专业建模软件走向Web端时&#xff0c;OSGB到3DTiles的转换就像给大象设计一套适合在不同房间穿行的衣服——既要保持整体形态&#xff0c;又要适应空间限制。作为连接数据生产与WebGL渲染的关键环节…...

智能多平台文件解析引擎:基于模块化架构的高性能网盘直链获取解决方案

智能多平台文件解析引擎&#xff1a;基于模块化架构的高性能网盘直链获取解决方案 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国…...

前端光标平滑算法实战:Catmull-Rom插值与perfect-cursor应用

1. 项目概述&#xff1a;从“完美光标”说起最近在捣鼓一个需要高精度光标交互的图形编辑器项目&#xff0c;遇到了一个挺有意思的痛点&#xff1a;当用户快速移动鼠标时&#xff0c;光标在屏幕上留下的轨迹点并不是连续的&#xff0c;而是一系列离散的采样点。如果直接用直线把…...

基于Nx Monorepo与Supabase构建AI编程规则管理平台

1. 项目概述&#xff1a;一个为AI编程助手打造的规则管理平台如果你和我一样&#xff0c;日常重度依赖Cursor这类AI编程工具&#xff0c;那你肯定也遇到过类似的困扰&#xff1a;每次新建项目&#xff0c;都得重新给AI解释一遍代码规范、项目结构、命名约定&#xff0c;甚至是一…...

用MATLAB处理GLDAS Noah数据:从NASA官网下载到绘制全球土壤水分分布图

科研数据处理实战&#xff1a;MATLAB全流程解析GLDAS Noah土壤水分数据 在全球气候变化研究领域&#xff0c;土壤水分数据是理解陆地-大气相互作用的关键参数。GLDAS Noah作为NASA主导的陆地数据同化系统&#xff0c;提供了长时间序列、高空间分辨率的全球土壤水分观测数据。本…...

JFrog Artifactory与CI/CD深度集成:fastci工具实战与制品管理优化

1. 项目概述&#xff1a;当CI/CD遇上二进制制品管理如果你是一名开发或运维工程师&#xff0c;每天的工作流里肯定少不了持续集成和持续部署&#xff08;CI/CD&#xff09;的身影。从代码提交到构建、测试、再到最终部署&#xff0c;这个自动化流水线是现代软件交付的基石。但在…...

AI图像编辑中的视觉相似度评估与个性化生成技术

1. 项目背景与核心挑战在数字内容创作领域&#xff0c;AI图像编辑技术正在经历从"能用"到"好用"的关键转型期。去年参与某电商平台的视觉优化项目时&#xff0c;我们团队曾面临一个典型困境&#xff1a;自动生成的商品展示图虽然技术指标达标&#xff0c;但…...

大语言模型验证数据自动化生成与奖励模型优化实践

1. 项目背景与核心价值大语言模型&#xff08;LLM&#xff09;的训练过程中&#xff0c;验证数据的质量和奖励模型的构建方式直接影响最终模型的性能表现。传统方法往往依赖人工标注或简单规则&#xff0c;存在成本高、覆盖窄、反馈延迟等问题。这个项目要解决的核心痛点&#…...

构建高效开发规则集:ESLint、Prettier与Git Hooks的工程化实践

1. 项目概述&#xff1a;一个开发者专属的规则集 如果你和我一样&#xff0c;在开发这条路上摸爬滚打了几年&#xff0c;肯定遇到过这样的场景&#xff1a;新加入一个团队&#xff0c;面对一个全新的代码库&#xff0c;光是配置开发环境、统一代码风格、设置提交规范这些“基建…...

如何用思维导图拆解项目范围

一、核心原理用思维导图做项目范围 WBS 拆解&#xff0c;本质是&#xff1a;总项目 → 分模块 → 子任务 → 交付物 → 责任人 / 时限从上到下逐层拆分&#xff0c;只拆产出、不拆过程&#xff0c;杜绝范围蔓延、漏项、多做无用功。适用场景&#xff1a;项目立项、启动会、需求…...

保姆级避坑指南:在Ubuntu 20.04双系统上搞定Nvidia V100驱动与CUDA 11.1(附关闭自动更新关键步骤)

保姆级避坑指南&#xff1a;Ubuntu 20.04双系统Nvidia V100驱动与CUDA 11.1实战全记录 在深度学习与高性能计算领域&#xff0c;Nvidia V100 GPU凭借其强大的Tensor Core架构和高达32GB的HBM2显存&#xff0c;至今仍是许多研究机构和企业的首选计算设备。然而&#xff0c;当这款…...

PHP 的Opcache加速的使用方法

本文介绍了PHP 的Opcache加速的使用方法&#xff0c;具体如下&#xff0c;分享给大家&#xff1a;介绍PHP 5.5版本以上的&#xff0c;可以使用PHP自带的opcache开启性能加速&#xff08;默认是关闭的&#xff09;。对于PHP 5.5以下版本的&#xff0c;需要使用APC加速Opcache是一…...

移动端自动化框架MobileClaw:Android/iOS自动化测试与数据抓取实战

1. 项目概述与核心价值最近在移动端自动化测试和爬虫领域&#xff0c;一个名为markchiang/mobileclaw的项目引起了我的注意。这个名字很有意思&#xff0c;“mobileclaw”直译过来就是“移动爪”&#xff0c;形象地描绘了它在移动设备上抓取数据的能力。作为一名长期与各种自动…...

军事AI决策系统:混合推理架构与实战优化

1. 项目背景与核心价值现代军事指挥系统正面临前所未有的信息过载挑战。去年北约联合演习的数据显示&#xff0c;传统参谋团队处理战场态势的平均延迟达到47分钟&#xff0c;而同期AI辅助系统的响应时间仅为2.8秒。这种数量级的效率差异&#xff0c;直接推动了军事决策智能化转…...

AI辅助开发:基于快马多模型能力打造你的智能终端,让xshell8具备AI思考力

最近在折腾终端工具时&#xff0c;突然想到&#xff1a;如果能给Xshell这类工具加上AI大脑会怎样&#xff1f;于是尝试用InsCode(快马)平台快速搭建了一个智能终端原型&#xff0c;效果意外地实用。分享下这个让传统终端"会思考"的实现思路&#xff1a; 基础终端模拟…...

Dify对接MES/ERP非结构化日志的智能检索方案(含日志时间序列语义增强模块开源代码)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Dify对接MES/ERP非结构化日志的智能检索方案&#xff08;含日志时间序列语义增强模块开源代码&#xff09; 在制造执行系统&#xff08;MES&#xff09;与企业资源计划&#xff08;ERP&#xff09;中&a…...