vue预渲染

2023-11-05

vue预渲染

​ vue是一个单页面应用(spa),只有一个 html 文件(内容只有一个#app根节点),通过加载js脚本来填充页面要渲染的内容,然而这种方式无法被爬虫和百度搜索到。如果想对某些页面进行SEO(搜索引擎优化)优化,可以通过预渲染实现,无需使用web服务器实时动态编译html,只需要在构建的时候简单的生成针对特定路由的 静态html文件。优点是设置预渲染更简单,并可以将你得前端作为一个完全静态的站点。

1 安装预渲染插件

npm install prerender-spa-plugin -D  #安装或者编译出错,npm换成cnpm

2 配置vue.config.js

const path = require('path')
// 预渲染插件
const PrerenderSPAPlugin = require('prerender-spa-plugin')
const Renderer = PrerenderSPAPlugin.PuppeteerRenderer
module.exports = {
    configureWebpack: {
        plugins: [
            new PrerenderSPAPlugin({
                // 生成文件的路径,与webpack打包一致即可
                staticDir: path.join(__dirname, 'dist'),
                // 需要预渲染的路由
                routes: ['/', '/about'],
                renderer: new Renderer({
                    inject: {
                        foo: 'bar'
                    },
                    headless: false,
                    // 这个选项很重要,在程序入口执行:document.dispatchEvent(new Event('render-event'))
                    renderAfterDocumentEvent: 'render-event',
                })
            })
        ]
    }
}

3 修改main.js

import Vue from 'vue'
import App from './App.vue'
import router from './router'

Vue.config.productionTip = false

new Vue({
    router,
    mounted() {
        document.dispatchEvent(new Event('render-event'))
    },
    render: h => h(App)
}).$mount('#app')

4 修改router.js

const router = new VueRouter({
   // 修改路由模式为history
   mode: 'history',
   routes
})

5 构建项目

npm run build

构建成功后,dist目录下可以看到,根路径和about路径下都生成了index.html文件,当浏览器访问这两个路径(路由)时,服务器返回的就是对应html文件的内容。

在这里插入图片描述

6 修改页面的meta信息

  • 安装vue-meta-info插件
npm install vue-meta-info -S  #安装时最好和prerender-spa-plugin一起安装
  • 修改main.js
import MetaInfo from 'vue-meta-info'
Vue.use(MetaInfo)
  • 修改vue文件
<template>
    <div class="home">
        home page...
    </div>
</template>
<script>
export default {
// npm install vue-meta-info --save 
// main.js 导入并Vue.use(xxx)
// 配置title和meta数据,实现seo优化配合预渲染使用
  metaInfo: {
    title: '我是一个title',
    meta: [
      {
        name: 'keywords',
        content: '关键字1,关键字2,关键字3'
      },
      {
        name: 'description',
        content: '这是一段网页的描述'
      }
    ]
  },
}
</script>
  • 打包后生成的文件内容
<!DOCTYPE html>
<html lang="">

<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width,initial-scale=1">
    <link rel="icon" href="/favicon.ico">
    <title>我是一个title</title>
    <link href="/js/about.9f1a3f34.js" rel="prefetch">
    <link href="/js/app.bebcb2a7.js" rel="preload" as="script">
    <link href="/js/chunk-vendors.6dae171a.js" rel="preload" as="script">
    <meta data-vue-meta-info="true" name="keywords" content="关键字1,关键字2,关键字3">
    <meta data-vue-meta-info="true" name="description" content="这是一段网页的描述">
</head>

<body>
	<noscript>
		<strong>We're sorry but my-prj2 doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
	</noscript>
    <div id="app"><a href="/" aria-current="page" class="router-link-exact-active router-link-active">首页</a> | <a href="/about" class="">关于</a>
        <div class="home"> home page... </div>
    </div>
    <script src="/js/chunk-vendors.6dae171a.js"></script>
    <script src="/js/app.bebcb2a7.js"></script>
</body>

</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue预渲染 的相关文章

  • 前端vue项目部署到tomcat,一刷新报错404解决方法

    原文链接 https my oschina net u 1471354 blog 4277008 VUE项目部署到Tomcat之后 刷新页面会出现404 此问题主要是使用了VUE router的History模式 一 解决方案 1 编辑se
  • Vue2运行报错SyntaxError: Cannot use import statement outside a module

    问题描述 像配置vue3那样配置vue config js的路径代理 代替src后 报错 语法错误 不能在模块外部使用导入语句 原因 模块语法一个是CommonJS module 一个是 ES6 module vue config js里的
  • Vue js引用警告 “export ‘default‘ (imported as ‘xxx‘) was not found

    问题原因 ES6 编译器识别问题 如果在public js这样写会有警告export default imported as xxx was not found export const myMixin 解决办法 修改组件中引用js的地方
  • Vue 组件化

    什么是组件化 任何一个人处理信息的逻辑能力都是有限的 所以 当面对一个非常复杂的问题时 我们不太可能一次性搞定一大堆的内容 但是 我们人有一种天生的能力 就是将问题进行拆解 如果将一个复杂的问题 拆分成很多个可以处理的小问题 再将其放在整体
  • 微信pc端浏览器打开页面空白的问题

    今天写了一个web项目 用chrome浏览器 手机端微信你打开都没问题 但是在pc端微信打开后是空白的 于是我重新做了一个空白的vue项目 用pc端微信浏览器是可以打开的 慢慢调试发现是语法的问题 一步一步减去组件 再一步一步加上组件 最终
  • vue prop属性使用方法小结

    Prop 一 基本用法 Prop的基本用法很简单 作用是在子组件中接收父组件的值 父组件传值
  • Vue与TypeScript的完美结合

    前言 TypeScript 是 JS类型的超集 并支持了泛型 类型 命名空间 枚举等特性 弥补了 JS 在大型应用开发中的不足 在我们自己单独学习 TS时 时常感觉很多知识点还是比较好理解的 但要和框架结合的话 感觉就有点糟 因为我使用Vu
  • vue 子父组件间的那些事儿——搭建项目(一)

    一 搭建vue项目 1 环境准备 基于nodejs vue cli cnpm 搭建vue项目 由于本博主已经具备以上环境 现在直接进行项目搭建 环境准备可参考这篇博客 https blog csdn net xcymorningsun ar
  • 基于SpringCloud的分布式网上购物商城

    末尾获取源码 开发语言 Java Java开发工具 JDK1 8 后端 SpringCloud 前端 Vue HTML 数据库 MySQL5 7和Navicat管理工具结合 服务器 Tomcat8 5 开发软件 IDEA Eclipse 是
  • uni-app项目中使用scss语法

    最近正在学习uni app开发 我先把文档浅略翻了遍 发现组件和接口几乎都是按照微信小程序走 但是视图层上的语法又是按照vue的语法走的 所以开发过程一定要注意这点 然后我想在uni app项目中使用scss语法 但是具体怎么安装呢 历经曲
  • vue项目使用视频播放器vue-video-player

    安装使用 插件有版本限制 如果项目使用的是vue2 0版本 请选择安装 4 x版本 否则会安装不成功 yarn add vue video palyer save 或者 npm install vue video palyer save 组
  • vue——vue-video-player插件实现rtmp直播流

    更新 flash已不可再使用 大家另寻出路吧 安装前首先需要注意几个点 vue video player插件 其实就是 video js 集成到 vue 中 所以千万不要再安装 video js 可能会出错 视频流我这个项目选择rtmp格式
  • 前端的工程化、模块化和组件化

    什么是工程化 工程化是一种思想而不是某种特定的技术 当然我们在实现项目工程化的过程中 我们也会去使用一些技术 前端工程化是使用软件工程的技术和方法来对前端的开发流程 技术 工具等进行规范化 标准化 其主要目的为了提高效率和降低成本 即提高开
  • vue_table导出excel

    vue直接导出对应table const exportClick gt const wb XLSX utils table to book document querySelector newTables 关联dom节点 get binar
  • Vue学习之watch侦听器:案例实现翻译功能

    watch侦听器 作用 监视数据的变化 当数据发生变化时 执行一些业务逻辑或者是异步操作 执行的场景例如在线翻译 当文本区域的内容发生变化时 会发生翻译内容的同时更新 语法 简单的写法 简单数据类型 可以直接的进行监听 完整的写法 添加额外
  • 【vue】$bus 跨组件调用方法

    1 新建bus js import Vue from vue 使用 Event Bus const bus new Vue export default bus 2 main js引用 import bus from libs bus Vu
  • 拓展:vue 父组件调用子组件方法ref(且父组件可通过ref调用的方法传值给子组件)

    1 ref被用来给元素或子组件注册引用信息 引用信息将会注册在父组件的 refs对象上 一 ref被用来给元素或子组件注册引用信息 引用信息将会注册在父组件的 refs对象上 div class formBtn fl 111 div div
  • 基于springboot+vue实现位置的多分馆图书馆推荐系统演示【附项目源码+论文说明】

    基于springboot实现位置的多分馆图书馆推荐系统演示 摘要 时代的变化速度实在超出人类的所料 21世纪 计算机已经发展到各行各业 各个地区 它的载体媒介 计算机 大众称之为的电脑 是一种特高速的科学仪器 比人类的脑袋要灵光无数倍 什么
  • vue的组件

    在Vue中 组件是可复用的代码块 用于构建用户界面 Vue的组件系统允许您将界面拆分为独立的 可重复使用的部件 提供了更好的代码组织和复用性 以下是在Vue中创建组件的基本步骤 创建一个组件实例 可以使用Vue extend 方法创建一个V
  • Vue3 和Vue2的区别,以及钩子函数的使用

    Vue js 3 和 Vue js 2 是两个主要版本的流行前端框架 它们之间有很多区别 包括性能优化 新特性和改进的API等 以下是一些Vue 3与Vue 2之间的主要区别 以及一些示例代码来说明这些差异 1 性能优化 响应式系统 Vue

随机推荐

  • 算法提高 彩票 我只是觉得我的代码比较帅

    算法提高 彩票 时间限制 1 0s 内存限制 256 0MB 提交此题 问题描述 为丰富男生节活动 贵系女生设置彩票抽奖环节 规则如下 1 每张彩票上印有7个各不相同的号码 且这些号码的取值范围为 1 33 2 每次在兑奖前都会公布一个由七
  • Java基础-对象序列化

    对象序列化 作用 以内存为基准 把内存中的对象存储到磁盘文件中去 称为对象序列化 使用到的流是对象字节输出流 ObjectOutputStream package per mjn serializable import java io Se
  • Ubuntu下漏洞的修复流程

    最近需要修复cve漏洞 研究了如何在源码上修复漏洞 在这里记录一下 目录 I 介绍 漏洞和补丁 CVE漏洞 普通漏洞和CVE漏洞的区别 II 获取补丁 III 应用补丁 常见的打补丁工具 打补丁的步骤 patch的用法 I 介绍 首先介绍一
  • 最优检索二叉树

    最优检索二叉树 最优检索二叉树 抛出问题 算法的基本解决思路 空隙 检索数据的平均时间 小结 最优二叉检索树的实现算法分析 关于优化函数的递推方程 复杂性估计 总结 最优检索二叉树 抛出问题 算法的基本解决思路 空隙 所谓的空隙也就是查找的
  • 第十五讲:神州交换机端口安全配置

    知识点 开启端口安全模式 设置端口最大安全数 端口绑定MAC地址 违规处理 锁定安全端口 MAC地址与IP的绑定 端口镜像 实验拓扑如下图所示 PC机 IP地址 掩码 MAC地址 端口 PC1 192 168 1 10 255 255 25
  • 信息隐藏——二值图像的信息隐藏

    二值图像的信息隐藏 实验目的 使用一个特定图像区域中黑像素的个数来编码秘密信息 若某块P1 Bi gt 50 则嵌入一个1 若P0 Bi gt 50 则嵌入一个0 在嵌入过程中 为达到希望的像素关系 需要对一些像素的颜色进行调整 实验内容
  • [论文阅读] (06) 万字详解什么是生成对抗网络GAN?经典论文及案例普及

    娜璋带你读论文 系列主要是督促自己阅读优秀论文及听取学术讲座 并分享给大家 希望您喜欢 由于作者的英文水平和学术能力不高 需要不断提升 所以还请大家批评指正 非常欢迎大家给我留言评论 学术路上期待与您前行 加油 前一篇文章分享了Pvop老师
  • iOS 3DTouch的小细节

    在App启动后 添加3DTouch的快捷入口 代码如下 NSMutableArray arrShortcutItem NSMutableArray UIApplication sharedApplication shortcutItems
  • C语言程序-打印九九乘法表

    一 问题描述 使用C语言实现打印九九乘法表程序 二 程序实现 代码如下 include
  • 悲观锁(Synchronized)和乐观锁(CAS)

    文章目录 悲观锁和乐观锁 Synchronized Synchronized使用 Synchronized底层原理 Java1 6对Synchronized的优化 synchronized的等待唤醒机制 CAS CAS使用 CAS底层原理
  • 若依框架代码生成器的应用

    java后端 先设计数据库中的表 我这里的表名为 food 找到代码生成器 点击导入表 然后选择要导入的表名 这里选择的是自己的表名 点击编辑 这里填 表明和实体类的类名 一般不需要填都是自动生成的 然后作者名 可以填 自己的作者名称 生成
  • cs1.6修改服务器参数设置,[心得] cs的网络参数调整指南

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 其实HL网路新技术的引擎就是把自己的电脑每一个动作和网路紧密的连结在一起 不过世界上有太多不同的网路 所以没以办法做的一庞大的资料库自动一一校正 所以 说这麽多 就是设定成这样cl latenc
  • cmd命令进入某个目录

    每次都记不住命令 终于整理了一下 1 开始 gt 运行 gt cmd 2 进入某个磁盘 直接盘符代号 如d 然后回车 到D盘下 不用CD 命令切换 3 输入dir 可以看到d盘下的各个文件名称 3 进入除根录以外的文件夹 cd 文件夹路径
  • 链表(应用篇)

    1 概述 链表是在程序设计过程中经常使用的数据结构 bcos系统内部的调度和tasklet的实现都是基于链表 所以 对链表的支持是bcos与生俱来的特性 bcos的链表设计参考了Linux内核链表的设计思想 如果用户想使用链表只需要在自己的
  • C++基础六:C++入门知识、黑盒测试(详解)与复杂度

    cin与cout cin与cout是C 中的输入和输出函数 需要添加头文件 include
  • QT常用分层式软件架构

    第一次写博客 只做个分享吧 关于软件架构的常用模型目前找到的最详细的解说基于Qt的软件框架设计 amwha的专栏 CSDN博客 qt软件框架 1 QMainWWindow主界面类 转到线程是在实例化子界面对象时 将对应的数据处理类对象转到新
  • 笔记-TCP/IP IP地址字符串表示最大长度

    笔记 TCP IP IP地址字符串表示最大长度 IPv4 IPv6 IPv4 定义在
  • 经典vue面试题:谈一谈computed计算属性和watch监听属性的区别

    computed计算属性和watch监听的区别 computed属性 首先computed计算属性是用于在HTML模板中表达式更加简洁 易维护 特点 computed具有缓存功能 当与computed变量相关的变量值不发生改变时 一直用的是
  • windows7 64位机上配置MinGW+Codeblocks+ wxWidgets

    在Windows7 64位机子上安装配置MinGW Codeblocks wxWidgets步骤如下 1 下载mingw get inst 20111118 http sourceforge net projects mingw 2 双击m
  • vue预渲染

    vue预渲染 vue是一个单页面应用 spa 只有一个 html 文件 内容只有一个 app根节点 通过加载js脚本来填充页面要渲染的内容 然而这种方式无法被爬虫和百度搜索到 如果想对某些页面进行SEO 搜索引擎优化 优化 可以通过预渲染实