Vue前端项目部署的三种方案详解

 更新时间:2024年08月15日 16:32:26   作者:扶苏1002  
这篇文章主要介绍了Vue前端项目部署的三种方案,本文通过图文并茂的形式给大家介绍的非常详细,需要的朋友可以参考下

一、项目打包

  • 我们开发用的脚手架其实就是一个微型服务器,用于:支撑开发环境、运行代理服务器等。
  • 打包完的文件中不存在:.vue.jsx.less 等文件,而是:htmljscss
  • 打包后的文件,不再借助脚手架运行,而是需要部署到服务器上运行。
  • 打包前,请务必梳理好前端项目的 ajax 封装(请求前缀、代理规则等)

二、使用node本地服务器部署

好处: 在一个局域网内,任意一个设备都可以通过ip访问项目

2.1. 搭建一个node后台服务

新建一个文件夹my_server

初始化package.jsoncmd执行npm init -y

安装插件express(是一个快速搭建服务的插件)

npm i express

my_server目录下新建server.js,代码如下:

// 引入express
const express = require("express");
// 配置端口号
const PORT = 8088;
// 创建一个app服务实例
const app = express();
// 配置静态资源
app.use(express.static(__dirname + "/public"));
// 绑定端口监听
app.listen(PORT, () => {
  console.log(`本地服务器启动成功,http://localhost:${PORT}`);
});
  • my_server目录下新建public文件夹(用于存放打包后的index.html、js、css
  • 项目目录结构如下:

2.2. 将vue项目打包成dist文件

vue项目打包

npm run build

打包后的dist文件如下

2.3. 将dist文件下面的资源交给express托管

2.2打包后的dist目录下面的文件复制到my_server下面的public目录下

2.4. 启动node服务

node .\server.js

2.5. 访问http://localhost:8088即可看到你的项目页面

2.6. 解决history路由跳转后,刷新浏览器,页面报404的问题

出现原因:history路由在部署上去之后,前端跳转的路由会被认定为是/xxxxget请求

2.6.1. 方式一:将路由模式由history改为hash

const router = new VueRouter({
  mode: 'hash', // history改为hash
  base: process.env.BASE_URL,
  routes
})

2.6.2. 方式二:在server.js中将所有的请求匹配都返回index.html

const router = new VueRouter({
  mode: 'hash', // history改为hash
  base: process.env.BASE_URL,
  routes
})

2.6.3. 方式三:使用第三方的插件connect-history-api-fallback 安装插件

npm i connect-history-api-fallback

引入插件

// history路由刷新404解决
const history = require("connect-history-api-fallback");

配置插件(必须放到配置静态资源之前)

// 必须放到配置静态资源之前
app.use(history());
// 配置静态资源
app.use(express.static(__dirname + "/public"));

2.7. 解决请求代理跨域的问题

出现原因:我们在本地npm run serve/dev的时候,vue-cli会帮我们启动一个代理服务器,但是打包以后,浏览器直接运行js、css、html,是没有代理服务器的,这个时候需要有一个插件去充当代理服务器的角色

安装插件:http-proxy-middleware

npm i http-proxy-middleware

引入插件

// 引入http代理服务器插件
const { createProxyMiddleware } = require("http-proxy-middleware");

配置代理服务器

// 配置代理服务器
app.use(
  "/api",
  createProxyMiddleware({
    target: "http://www.example.org/secret",
    changeOrigin: true,
    pathRewrite: { "^/api": "" },
  })
);

三、nginx服务器部署

3.1. nginx 简介

Nginx(发音为“engine-x”)是一款高性能的 HTTP 服务器和反向代理服务器,同时也是一个IMAP/POP3/SMTP 代理服务器。Nginx最初由 lgor Sysoev 编写,于 2004年发布。它以其高性能、高稳定性、丰富的功能集和低系统资源消耗而闻名,主要功能有:

  • 反向代理
  • 负载均衡
  • 静态内容服务
  • HTTP/2 支持
  • SSL/TLS 支持
  • 高速缓存

3.2. nginx的下载

下载地址:http://nginx.org

3.3. 使用nginx部署前端项目

将下载下来的nginx解压,并打开

打开conf文件目录下面的nginx.conf

我们找到html文件夹

把打包后的dist文件目录下面的文件放到html目录

运行nginx.exe

浏览器访问http://localhost:80即可看到你的项目

3.4. 解决history路由跳转后,刷新浏览器,页面报404的问题

出现原因:history路由在部署上去之后,前端跳转的路由会被认定为是/xxxxget请求

打开nginx.conf文件,添加如下代码

try_files $uri $uri/ /index.html; # 解决刷新404

3.5. 解决接口代理问题

打开nginx.conf文件,添加如下代码

location /dev/ {
   # 设置代理目标
   proxy_pass http://www.example.org/secret
}

3.6. 重启nginx

找到任务管理器,关闭nginx进程

重新双击nginx.exe启动

3.7. 浏览器访问http://localhost:80即可解决3.4和3.5的问题

四、云服务器部署

4.1. 购买云服务器获取公网ip

阿里云、腾讯云都可以购买,购买完成可以获取到公网ip

4.2. 使用Xshell连接你的公网ip

用户名默认 root

4.3. 使用Xftp连接你的公网ip

4.4. 通过Xftp将打包后的dist文件下面的静态资源放置到云服务器 var下面新建文件夹 sph(用来放置你的静态资源存放地址)

4.5. 使用Xshell安装nginx

yum install nginx

输入y回车

出现Complete说明安装成功

4.6. Xftp配置nginx.conf

找到etc/nginx

配置nginx.config

4.7. Xsheel启动nginx

service nginx start

4.8. 浏览器输入 http://你的公网ip就可以访问你的项目了

浏览器输入 http://你的公网ip就可以访问你的项目了

4.9. 如果觉得ip不好看,可以买个域名和自己的公网ip绑定

到此这篇关于Vue前端项目部署的三种方案的文章就介绍到这了,更多相关Vue前端项目部署内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue3中使用editor.js的详细步骤记录

    vue3中使用editor.js的详细步骤记录

    富文本编辑器作为直接与用户交互的内容输入生产工具,对大家的项目来说非常重要,下面这篇文章主要给大家介绍了关于vue3中使用editor.js的详细步骤,需要的朋友可以参考下
    2024-01-01
  • Vue3使用ref和reactive管理状态的代码示例

    Vue3使用ref和reactive管理状态的代码示例

    ref 和 reactive 是 Composition API 中用来声明响应式数据的两个核心函数,在 Vue 3 中,使用 setup 语法糖可以更简洁地使用这些功能,本文将探讨如何使用 ref 和 reactive 来管理状态,并解释它们之间的区别,需要的朋友可以参考下
    2024-09-09
  • Nuxt3动态导入图片(本地)src实现过程

    Nuxt3动态导入图片(本地)src实现过程

    这篇文章主要介绍了Nuxt3动态导入图片(本地)src实现过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2026-03-03
  • element上传组件循环引用及简单时间倒计时的实现

    element上传组件循环引用及简单时间倒计时的实现

    这篇文章主要介绍了element上传组件循环引用及简单时间倒计时的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • 记录vue项目中遇到的一点小问题

    记录vue项目中遇到的一点小问题

    本文是脚本之家小编给大家收藏整理的关于vue项目中遇到的一点小问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-05-05
  • Vue3使用Vue Router实现前端路由控制

    Vue3使用Vue Router实现前端路由控制

    在现代Web应用中,前端路由控制是非常重要的一部分,它可以帮助我们将不同的页面内容展示给用户,同时保持用户在浏览不同页面时的连贯性,本文将介绍如何使用Vue Router来实现前端路由控制,需要的朋友可以参考下
    2024-10-10
  • vue3+vite多项目多模块打包(基于vite-plugin-html插件)

    vue3+vite多项目多模块打包(基于vite-plugin-html插件)

    这篇文章主要给大家介绍了关于vue3+vite基于vite-plugin-html插件实现多项目多模块打包的相关资料,现在很多小伙伴都已经使用Vite+Vue3开发项目了,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-07-07
  • 解读计算属性和watch监听的区别及说明

    解读计算属性和watch监听的区别及说明

    计算属性是基于它们的依赖进行缓存的,只有在它的相关依赖发生改变时才会重新求值,而watch则是一个更为通用的监听器,它可以在数据变化时执行异步操作或开销较大的操作
    2025-01-01
  • vue + element-plus自定义表单验证(修改密码业务)的示例

    vue + element-plus自定义表单验证(修改密码业务)的示例

    这篇文章主要介绍了vue + element-plus自定义表单验证(修改密码业务),本文通过实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-04-04
  • 如何解决vue-json-editor无法输入中文、重影问题

    如何解决vue-json-editor无法输入中文、重影问题

    文章介绍了如何解决vue-json-editor组件无法输入中文和重影的问题,通过修改源码并使用vue-json-edit-fix-cn组件来 fix 这两个问题,同时,文章还提供了如何移除旧的依赖包并安装新的依赖包的步骤
    2025-01-01

最新评论