Vue学习第35天——模拟项目上线基本流程

news/2024/5/16 20:14:34/文章来源:https://blog.csdn.net/Vest_er/article/details/127159006

一、打包

将.vue文件生成为.html、.css、.js文件

npm run build

执行完之后,会在项目中生成一个dist文件(执行的速度取决于项目的大小以及电脑的配置)
在这里插入图片描述

二、创建服务器

没有后端服务器,这里我们使用node.js + express 搭建一个服务器

1、 新建demo文件夹,快速初始化

npm init -y

(现代项目都是从package.json 文件开始的,但是这个文件里字段信息太多,因此npm提供了 npm init -y 命令帮助我们快速初始化 package.json 文件)
在这里插入图片描述

2、下载express

npm i express

3、创建server.js文件,搭建服务器

//引入express
const express = require("express");//创建一个app服务实例对象
const app = express();//服务器端口为5005
app.listen('5005',(err)=>{if(!err) {console.log('服务器搭建成功');}
})

在这里插入图片描述

4、快速托管静态资源

① 新建一个static文件夹
② 使用中间件express.static快速托管静态资源(将静态资源与服务器链接起来)

app.use(express.static(__dirname + '/static'))

在这里插入图片描述

5、启动服务器

node server

三、部署

打包完的文件需要放在服务器上static文件夹(前端静态资源放在服务器的static或public文件夹)
在这里插入图片描述
浏览器输入:http://localhost:5005 运行项目
在这里插入图片描述

四、刷新页面报错解决方法

当我点击喵喵院系再刷新页面时,会报404错误
在这里插入图片描述

1、报错原因

这是因为我的vue项目中,路由的工作模式配置的为mode:'history'
当页面在 http://localhost:5005/cats 时,点击刷新,history模式会把 /cats 也带向服务器,但是服务器没有 /cats 路径的接口,因此报错404

2、解决方法

① 将项目中的history模式改为hash模式,重新打包上线

mode:'hash'

hash模式下,路径后面会出现一个#号,点击刷新时,#及后面的所有路径都不会向服务器发送请求,因此刷新页面不会报错

缺点:不美观;如果通过第三方app分享时,若app校验严格,则地址会被标记为不合适
在这里插入图片描述
② 使用node.js中间件connect-history-api-fallback
history模式刷线报错,需要后端工程师配合。
这里使用connect-history-api-fallback后端插件:专门解决history模式的404错误

下载

npm i connect-history-api-fallback

引入

const history = require('connect-history-api-fallback');

使用(必须在配置静态资源之前使用)

app.use(history())

server.js完整代码

//引入express
const express = require("express");//引入中间件connect-history-api-fallback
const history = require('connect-history-api-fallback');//创建一个app服务实例对象
const app = express();//使用(必须在配置静态资源之前使用)
app.use(history());//使用中间件express.static快速托管静态资源
app.use(express.static(__dirname + '/static'))//服务器端口为5005
app.listen('5005',(err)=>{if(!err) {console.log('服务器搭建成功');}
})

重新启动服务器

node server

运行结果
在这里插入图片描述

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

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

相关文章

(附源码)计算机毕业设计ssm餐厅管理系统

毕设帮助,指导,本源码分享,调试部署(见文末) 4.1.2系统的主要的功能结构 餐厅管理系统的主要功能的结构如图4-1所示。 图4-1系统功能结构图 4.2系统设计 4.2.1数据表E-R图 菜谱信息属性图如图4-2所示。 图4-2菜谱信息实体属性图 账单信息…

3、数据类型中的数据位置,stograge、memory、calldata

数据位置 所有的复杂类型,即 数组 和 结构 类型,都有一个额外属性,“数据位置”,说明数据是保存在 内存memory 中还是 存储storage 中。 根据上下文不同,大多数时候数据有默认的位置,但也可以通过在类型名后增加关键字 storage 或 memory 进行修改。 函数参数(包括返回的…

Day11 栈和队列

150. 逆波兰表达式求值 解法一:将计算部分抽象成一个函数,使代码更加简洁,避免了很多冗余操作。对比下面解法二(我自己写的),此解法(参考别人的)的代码更加精简。核心思想都是利用栈…

Linux学习 -- Shell面试题练习

1、使用Linux命令查询file1中空行所在的行号 awk /^$/ {print NR} file1 // 使用正则表达式^$ 来表示空行 2、使用Linux命令计算文件a.txt的第二列的和并输出 张三 40 李四 50 王五20 cat a.txt | awk -F " " {sum$2} END {print sum} 3、Shell脚本中如何检查一个文…

欧拉函数的power

在算数基本定理中有 $ N = p_{1}^{a1} p_{2}^{a2} p_{3}^{a3} ..... p_{k}^{ak} $ wuw在y总的课中是用了容斥原理进行推导得到了 $ \phi(x) = N * (1 - \frac{1}{p1}) * (1 - \frac{1}{p2}) * .... * ( 1 - \frac{1}{pk}) $ 所以就可以得到依靠该公式得出的欧拉公式的算法 #in…

基本语法

输入输出输入: 输出:字符串: System.out.println("hello world!"); 字符串+数值 System.out.println("a =" + 8);import java.util.Scanner; //Scanner 是一个简单的文本扫描器public class MyInput {public static void main(String[] Args) {Scanne…

cat笔记

0.学习目标 能够知道什么是CAT能够搭建CAT服务端环境能够进行CAT客户端的集成能够使用CAT监控界面进行服务监控能够完成CAT和常用框架集成了解CAT告警配置了解CAT客户端和服务端原理 1.CAT入门 在这一部分我们主要介绍以下3部分内容: 什么是调用链监控 什么是CA…

【虚幻引擎UE】UE5 阴影异常与优化解决方案合集

一、消除阴影锯齿 异常效果: 模型锯齿状阴影。 解决方案: ① 确定打开虚拟阴影贴图。 虚拟阴影贴图(VSM)是一种全新的阴影贴图方法,可以提供稳定的高分辨率阴影。通过与虚幻引擎5的Nanite虚拟几何体、Lumen全局光照和…

Seata安装

文章目录一、下载二、MySQL配置三、Nacos配置四、启动参考一、下载 从Seata下载地址下载 https://github.com/seata/seata/releases 这里下载的是seata-server-1.5.2.tar.gz 解压: tar -xvf seata-server-1.5.2.tar.gz修改配置:conf/application.ym…

Python实战——全球疫情数据采集, 并做可视化

前言 大家早好、午好、晚好吖~ 知识点: 爬虫基本流程 requests 发送请求 re 正则表达式 json 结构化数据解析 开发环境: python 3.8: 解释器 pycharm: 代码编辑器 requests 发送请求 pyecharts 绘制图表 pandas 读取数据 基本原理: 模拟成 浏览器/客户端 向 服务器…

React-Hooks源码深度解读

useState 解析 useState 使用 通常我们这样来使用 useState 方法 function App() {const [num, setNum] useState(0);const add () > {setNum(num 1);};return (<div><p>数字: {num}</p><button onClick{add}> 1 </button></div>…

I2C 时序、速率计算及intel I2C驱动

目录 速率 信号 时序定义 START ACK NACK STOP 时序实战 速率计算 数据解读 异常时序 上拉电阻 I2C的设备驱动 速率 主要支持的速率如下&#xff1a; 100Kbps 400Kbps 1Mbps 3.4Mbps 信号 SDA 数据 SCL 时钟 时序定义 START SCL为高电平时&#xff0c;SD…

【FineReport企业日常问题 1.0】帆软决策服务端管理员密码忘记怎么办?

文章目录企业问题描述分析问题加密方式分类原理问题解决企业问题描述 有的时候我们在进行帆软部署的时候&#xff0c;设置管理密码的不小心忘记(当然这个是属于小概率事件) 其实是有相应的办法解决的~ 分析问题 首先&#xff0c;我们来了解一下帆软的加密算法 加密方式分类…

Angr学习 00_angr_find

Angr学习 00_angr_find1. github下载angr项目2. angr安装3. IDA静态分析4. angr使用说明5. exp6.运行结果1. github下载angr项目 点击前往github 2. angr安装 网上的教程都是要安装什么虚拟环境我也安装了但是可能因为我是初学者不知道这个虚拟环境有什么用我直接在shell中用…

grpc介绍(二)——认证方式

前言 HTTP是明文传输的&#xff0c;即客户端与服务端之间通信的信息是可见的&#xff0c;这就存在被窃听、冒充或篡改的风险。HTTPS在HTTP和TCP之间加入了TLS协议&#xff0c;如图所示&#xff1a; TLS协议主要解决了以下三个网络安全问题&#xff1a; 信息加密&#xff1a; …

cannot import name ‘TimedJSONWebSignatureSerializer‘ from ‘itsdangerous‘

该库在2.0.0版本之后就将TimedJSONWebSignatureSerializer类弃用了,引导用户使用直接支持JWS/JWT的库,如authlib。 解决方案:要么使用2.0.0版本之前的itsdangerous库,继续使用该类,要么换用authlib库来生成token。

LeetCode刷题复盘笔记—1373. 二叉搜索子树的最大键值和

今日主要总结一下&#xff0c;1373. 二叉搜索子树的最大键值和 题目&#xff1a;1373. 二叉搜索子树的最大键值和 Leetcode题目地址 题目描述&#xff1a; 给你一棵以 root 为根的 二叉树 &#xff0c;请你返回 任意 二叉搜索子树的最大键值和。 二叉搜索树的定义如下&…

【GNN从入门到精通】第二章 Graph Embedding

文章目录一、Graph Embedding的作用二、DeepWalk三、LINE四、SDNE五、Node2vec六、Struc2vec七、总结八、代码一、Graph Embedding的作用 优点&#xff1a; 保留了节点在图上的信息简化了节点的特征长度 二、DeepWalk 参数说明&#xff1a; window size&#xff1a;给定一个…

蜂窝移动通信系统

什么是蜂窝移动通信系统 5G的“G”是Generation的首部字母&#xff0c;5G即“第五代”&#xff0c;全称是“第五代蜂窝移动通信系统”。 在移动通信技术发展的早期阶段&#xff0c;采用大区制的通信方式。是指一个基站的覆盖范围很大&#xff0c;能够达到几十甚至上百公里范围。…

WEB安全之javascript基础(一):js的引入方法注释变量数据类型

WEB安全之javascript基础&#xff08;一&#xff09;&#xff1a;js的引入方法注释变量数据类型概述1、嵌入方法内嵌式外链式行内式2、语句3、注释4、变量5、JavaScript 保留关键字6、JavaScript 作用域Javascrpt 局部变量JavaScript 全局变量7、数据类型判断类型概述 JavaScri…