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

用NUXT.JS,轻松搞定SEO!

nuxt.js 是什么?

如果你正在准备开发一个SEO友好的新项目,而且准备用 vue 开发,那么恭喜你,用 nuxt 是一个成本和效率都比较优秀的方案。

官方文档

知识中心案例

简单介绍下背景,这是一个专门为氚云低代码平台引流的知识分享平台,页面非常简单,首页,详情页,搜索页,同时适配PC端和移动端,移动端适配方案在下面。

项目地址:知识中心-氚云

nuxt2 + vue2 + element UI + axios

1.项目搭建

// 确保安装了 npx(npx 在 NPM 版本 5.2.0 默认安装了)
npx create-nuxt-app  <项目名>yarn create nuxt-app <项目名>

 回车

 继续回车,一般建议用 ts

 自己用啥就选啥

 选择UI框架,这里也可以不选,如果已经确定好了UI框架,建议直接选择,非常好用。

我用的 element

 选择模板引擎 HTML

接着选择 axios 发送请求

 选择代码规范工具,我选 ESLint

 选择测试框架,建议养成单元测试的习惯,提成代码质量。

 选择渲染 mod,选第一个

选择 node.js

 

 选 jsconfig.json

 选 None

 选 git

等待生成项目。

2.项目结构

 2.1 运行项目

// 运行项目
npm run dev// 部署 第一步
npm run build// 部署 第二部
npm run start

浏览器出现下面,就ok了。

 2.2 目录解析

  •  components: 项目组件;
  • pages: 项目页面 + vue 路由。nuxt会根据pages的目录结构生成 router。页面目录 pages 用于组织应用的路由及视图。Nuxt.js 框架读取该目录下所有的 .vue 文件并自动生成对应的路由配置;
  • plugins:该配置项用于配置那些需要在 根vue.js应用 实例化之前需要运行的 Javascript 插件,如初始化选择的 Element UI,swiper 等;
  • static: 静态资源,如image,css,less等;
  • middleware:中间件,后面会介绍。我是用它来做移动端和pc端适配,非常好用;
  • nuxt.config.js  配置文件,一些重要的配置后面会说,官网;

3.新手开发常见问题

这里是个人开发过程中遇到的一些问题,以及踩过的坑,分享一下,希望对客官有用

3.1 页面数据问题

  • 只能在 pages 目录下的.vue文件才能使用 asyncData,用axios 请求数据。注意刚进入页面的第一次请求是服务端去请求数据,浏览器是看不到的,看控制台,还要这里赋值的时候最好跟后台确定下是否有空值,有空值得自己判空,不然很容易出bug。还有这里不要用window 对象!!

      数据请求成功后,赋值到 vue 的data中。这样数据这块基本就没啥问题了。

  • 在 asyncData 中获取路由数据 ,这里是文章详情页

 asyncData 会传出当前上下文对象给我们,需要啥去取就行了,参数可以看文档或者自己打印出来研究。

3.2 在 nuxt 中使用 swiper

  • 这里搞了我不少时间。首先swiper就有点坑,版本对应关系有点乱,网站搜了好多信息把才把版本弄好,接下来结合nuxt 还有坑。先看下版本吧:中文api - Swiper3|Swiper中文网
{"swiper": "4.5.0","vue": "2.7.14","vue-awesome-swiper": "3.1.3"
}

接下来配置插件,nuxt.config.js,ssr设为false是让让该组件服务端不渲染。

 再看下plugins/swiper.js

import Vue from 'vue'
import css from 'swiper/dist/css/swiper.css' // 注意css路径
import VueAwesomeSwiper from 'vue-awesome-swiper'
export default () => {Vue.use(VueAwesomeSwiper,{css})
}

现在你就可以在项目里面用了,无需引用。这里注意的是用 <client-only></client-only>标签包裹,不然在客户端会多一层  <swiper> </swiper>。

  •  动态路由,_id j就是动态路由,按照官网给的规则配置就行了。

 3.3 移动端适配

  • 移动端和pc端页面是分开的。这里采用路由中间件来做。我们知道 nuxt 分为服务端和客户端,那么在服务端收到请求的时候肯定能多获取请求的客户端信息,那么根据这个信息跳转到对应的 page页就行了。
  1. 配置中间件,在根目录新建文件夹 middleware,创建自定义中间件 isMobile.ts
/*** 该中间件用来判断是移动端还是PC端,根据请求信息来判断,同时重定向到对应的页面* @param context*/
export default function(context:any) {context.userAgent = process.server ? context.req.headers["user-agent"] : navigator.userAgent;context.isMobile = isMobile(context.userAgent);// 如果是移动端客户,且路由不存在 mobile 标识,进行重定向,if (context.isMobile && context.route.path.indexOf('mobile') === -1) {// 首页重定向if (context.route.path === '/knowledge/home') {context.redirect(302,'/site'+ context.route.path +'-mobile')}// 详情页重定向if (context.route.path.indexOf('/knowledge/detail') !== -1) {context.redirect(302,'/site/knowledge/detail-mobile/' + context.route.params.id)}}
}function isMobile(UA:string) {return /(Android|webOS|iPhone|iPod|tablet|BlackBerry|Mobile)/i.test(UA);}

在 nuxt.config.js 进行配置

 3.4 网关层级导致 swiper 无法正常展示

现象:项目部署后直接访问 ip 一切正常,用域名访问 swiper 就是无法显示,组件没有被解析。目前猜测原因是网关层发生跳转,导致nuxt 服务端和客户端信息传递异常,没能正确解析 swiper。所以使用 nuxt 部署后,最好是能直接访问到该项目,或者有独立域名。

相关文章:

用NUXT.JS,轻松搞定SEO!

nuxt.js 是什么&#xff1f; 如果你正在准备开发一个SEO友好的新项目&#xff0c;而且准备用 vue 开发&#xff0c;那么恭喜你&#xff0c;用 nuxt 是一个成本和效率都比较优秀的方案。 官方文档 知识中心案例 简单介绍下背景&#xff0c;这是一个专门为氚云低代码平台引流…...

什么是电商RPA?电商RPA能解决什么问题?电商RPA实施难点在哪里?

RPA机器人可以应用于各个行业和领域&#xff0c;例如金融、保险、制造、物流、电商等。它可以减少人工错误和重复工作&#xff0c;提高效率和生产力。RPA还可以在处理大量数据时加快处理速度&#xff0c;提供更准确和可靠的结果。此外&#xff0c;RPA还可以为员工提供更有价值的…...

【BUG】Docker启动MySQL报错

个人主页&#xff1a;金鳞踏雨 个人简介&#xff1a;大家好&#xff0c;我是金鳞&#xff0c;一个初出茅庐的Java小白 目前状况&#xff1a;22届普通本科毕业生&#xff0c;几经波折了&#xff0c;现在任职于一家国内大型知名日化公司&#xff0c;从事Java开发工作 我的博客&am…...

Spring Boot通过企业邮箱发件被Gmail退回的解决方法

这两天给我们开发的Chrome插件&#xff1a;Youtube中文配音 增加了账户注册和登录功能&#xff0c;其中有一步是邮箱验证&#xff0c;所以这边会在Spring Boot后台给用户的邮箱发个验证信息。如何发邮件在之前的文章教程里就有&#xff0c;这里就不说了&#xff0c;着重说说这两…...

Windows使用MobaXterm远程访问ubuntu20.04桌面

参考ubuntu 2020.4 安装vnc 一、脚本文件 remote_setup.sh脚本文件内容&#xff1a; #! /bin/bash #参考链接&#xff1a;https://blog.csdn.net/hailangdeyingzi/article/details/124507304 sudo apt update sudo apt install x11vnc -y sudo x11vnc -storepasswd telpo.12…...

C++注释风格

1. 文件头注释 每个文件都应该开始于一个注释块&#xff0c;描述文件的目的、作者、创建日期和版权信息。 /** FileName: MyClass.cpp* Purpose: Provides functionality for XYZ operations.* Author: [Your Name]* Creation Date: YYYY-MM-DD* Last Updated: YYYY-MM-DD* C…...

Linux 编译内核模块出现--Unknown symbol mcount

文章目录 Linux suse&#xff1a; # cat /etc/os-release NAME"SLES" VERSION"12-SP2" VERSION_ID"12.2" PRETTY_NAME"SUSE Linux Enterprise Server 12 SP2" ID"sles" ANSI_COLOR"0;32" CPE_NAME"cpe:/o:s…...

Pywin32 Cookbook by Eric

Writing Prompt 现在你是一名专业的Python工程师&#xff0c;请你根据"Pywin32_Funtion"函数的功能&#xff0c;为其编写一个清晰的文档说明Functions win32gui.GetWindowDC(hwnd) 描述 win32gui.GetWindowDC()函数用于获取指定窗口的设备上下文&#xff08;Devi…...

indexDB入门到精通

前言 由于开发3D可视化项目经常用到模型&#xff0c;而一个模型通常是几m甚至是几十m的大小对于一般的服务器来讲加载速度真的十分的慢&#xff0c;为了解决这个加载速度的问题&#xff0c;我想到了几个本地存储的。 首先是cookie,cookie肯定是不行的&#xff0c;因为最多以只…...

Ubuntu 20.04配置静态ip

ip配置文件 cd /etc/netplan配置 根据需求增加 # Let NetworkManager manage all devices on this system network:version: 2renderer: NetworkManager # 管理 不是必须ethernets:enp4s0: #网卡名dhcp4: no #关闭ipv4动态分配ip地址dhcp6: no #关闭ipv6动态分配…...

Tushare入门小册

Tushare入门小册 一、Tushare平台介绍 Pro版数据更稳定质量更好了&#xff0c;我们提供的不再是直接从互联网抓取&#xff0c;而是通过社区的采集和整理存入数据库经过质量控制后再提供给用户。但Pro依然是个开放的&#xff0c;免费的平台&#xff0c;不带任何商业性质和目的…...

<c++开发>通信工具 -之-SOME/IP移植部署 第一篇文章

&#xff1c;c开发&#xff1e;通信工具 -之-SOME/IP移植ubuntu部署 第一篇文章 一 前言 SOME/IP (Scalable service-Oriented MiddlewarE over IP) 是一种通信协议&#xff0c;主要用于嵌入式系统和车载网络中的服务导向通信。SOME/IP是AUTOSAR&#xff08;AUTomotive Open …...

权威的软件测试服务供应商分享,怎么获得软件安全检测报告?

我们深知在如今的数字化时代&#xff0c;软件安全对于企业和个人来说具有极其重要的意义。然而&#xff0c;许多用户对于软件安全测试报告的概念还不够清晰&#xff0c;也不知道如何获得这样的报告。在本文中&#xff0c;小编将为您简析什么是安全测试报告以及如何获取这样的报…...

管理类联考——逻辑——真题篇——按知识分类——汇总篇——二、论证逻辑——假设——第二节——搭桥假设

文章目录 第二节 假设-分类1-搭桥假设-当题干推理存在明显断点,常见形式比如:“因为A→B,C→D,所以A→D”,则正确选项为“B→C”真题(2014-39)-假设-分类1-题干推理存在明显断点-搭桥假设-建模搭桥-“因为A→B,所以A→C”,搭桥假设为“B→C”真题(2019-44)-假设-分…...

百度云BOS云存储的图片如何在访问时,同时进行格式转换、缩放等处理

前言 之前做了一个图片格式转换和压缩的服务&#xff0c;结果太占内存。后来查到在访问图片链接时&#xff0c;支持进行图片压缩和格式转换&#xff0c;本来想着先格式转换、压缩图片再上传到BOS&#xff0c;现在变成了上传后&#xff0c;访问时进行压缩和格式转换。想了想&am…...

go生成文件md5、sha1摘要简单示例

备注 go官方文档 https://pkg.go.dev/crypto/md5 已经给出如何使用该package生成文件或者字节数组的摘要值&#xff0c; 参照即可。 摘要值不是对文内容的加密&#xff0c;它主要用来进行checksum&#xff0c;就是验证两个文件内容是否一致&#xff0c;是否被篡改或者变化了。…...

Docker容器:docker数据管理、镜像的创建及dockerfile案例

文章目录 一、docker数据管理1.为何需要docker数据管理2.数据管理类型3.数据卷4.数据卷容器5.容器的互联 二.docker镜像的三种创建方法1.基于现有镜像创建1.1 启动镜像1.2 生成新镜像 2.基于本地模板创建2.1 OPENVZ 下载模板2.2 导入容器生成镜像 3.基于dockerfile创建3.1 dock…...

Ajax fetch Axios 的区别

AJAX&#xff1a;一种创建交互式网页应用的网页执行交互技术 通过在后台与服务器进行少量数据交换&#xff0c;Ajax可以使网页实现异步更新。意味着&#xff1a;在不重新加载整个网页 的情况下&#xff0c;对网页某部分进行更新。 缺点&#xff1a; 针对MVC编程&#xff0c;…...

数据库结构差异对比工具

简介 前几年写了一个数据库对比工具&#xff0c;但是由于实现方式的原因&#xff0c;数据库支持有限&#xff0c;所以重新设计了一下&#xff0c;便于支持多种数据库&#xff0c;并且更新了UI。 新版地址&#xff1a;https://gitee.com/xgpxg/db-diff 旧版地址&#xff1a;h…...

Shell编程学习之breakcontinuereturn的应用

Shell编程中的break关键字&#xff1a;break关键字&#xff1a;退出最近的循环&#xff0c;后续循环不再执行&#xff1b;break关键字用法&#xff1a; break #结束本层循环 break 数字n #结束n层循环测试代码1&#xff1a; #!/bin/bashfor((i1;i<6;i)) dofor((…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

多模态商品数据接口:融合图像、语音与文字的下一代商品详情体验

一、多模态商品数据接口的技术架构 &#xff08;一&#xff09;多模态数据融合引擎 跨模态语义对齐 通过Transformer架构实现图像、语音、文字的语义关联。例如&#xff0c;当用户上传一张“蓝色连衣裙”的图片时&#xff0c;接口可自动提取图像中的颜色&#xff08;RGB值&…...

【决胜公务员考试】求职OMG——见面课测验1

2025最新版&#xff01;&#xff01;&#xff01;6.8截至答题&#xff0c;大家注意呀&#xff01; 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:&#xff08; B &#xff09; A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”

目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...

安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖

在Vuzix M400 AR智能眼镜的助力下&#xff0c;卢森堡罗伯特舒曼医院&#xff08;the Robert Schuman Hospitals, HRS&#xff09;凭借在无菌制剂生产流程中引入增强现实技术&#xff08;AR&#xff09;创新项目&#xff0c;荣获了2024年6月7日由卢森堡医院药剂师协会&#xff0…...

人工智能(大型语言模型 LLMs)对不同学科的影响以及由此产生的新学习方式

今天是关于AI如何在教学中增强学生的学习体验&#xff0c;我把重要信息标红了。人文学科的价值被低估了 ⬇️ 转型与必要性 人工智能正在深刻地改变教育&#xff0c;这并非炒作&#xff0c;而是已经发生的巨大变革。教育机构和教育者不能忽视它&#xff0c;试图简单地禁止学生使…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

【Redis】笔记|第8节|大厂高并发缓存架构实战与优化

缓存架构 代码结构 代码详情 功能点&#xff1a; 多级缓存&#xff0c;先查本地缓存&#xff0c;再查Redis&#xff0c;最后才查数据库热点数据重建逻辑使用分布式锁&#xff0c;二次查询更新缓存采用读写锁提升性能采用Redis的发布订阅机制通知所有实例更新本地缓存适用读多…...

省略号和可变参数模板

本文主要介绍如何展开可变参数的参数包 1.C语言的va_list展开可变参数 #include <iostream> #include <cstdarg>void printNumbers(int count, ...) {// 声明va_list类型的变量va_list args;// 使用va_start将可变参数写入变量argsva_start(args, count);for (in…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下&#xff1a; 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载&#xff0c;下载地址&#xff1a;https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...