十八、部署 Vue.js 项目到生产环境

2023-10-29

本章概要

  • 构建发布版本
  • 部署

项目开发完毕并测试后,就要准备构建发布版本,部署到生产环境。

18.1 构建发布版本

在构建发布版本前,注意将项目代码中用于调试的 alert、debugger、console.log 等语句删除或注释,在生产环境下,在对用户体验很不好。
在项目目录下执行下面的命令构建发布版本。

npm run build

构建完成后,会在项目下生成一个 disk 文件夹,其下就是项目的发布版本。bookstore 项目打包后的目录结构如下:
在这里插入图片描述

在 js 文件夹下,除了一些 JS 文件(由于项目采用了异步加载路由组建,所以会产生多个 JS 文件),还有一些 map 文件。项目打包后,代码都是经过压缩的,如果运行时出现错误,则输出的错误信息无法准确定位是哪里的代码出现了问题,有了 map 文件就可以像未压缩的代码一样,准确地输出是哪一行哪一列出现了错误。
在生产环境下,这些 map 文件并没有什么作用,因为不能指望终端用户去调试代码,查找 Bug。如果想要在打包时去掉这些 map 文件,则可以 编辑 vue.config.js,添加下面的代码:

productionSourceMap:process.env.NODE_ENV === 'production' ? false : true

在这里插入图片描述

再次构建发布版本,会发现 js 目录下的 map 文件没有了。

18.2 部署

构建好发布版本后,下一步要做的事情就是将项目部署到一个 Web 服务器上,根据项目应用的场景会选择不同的服务器。这里以 nginx 为例,介绍如何部署及部署时的注意事项。
nginx 是一个高性能的 HTTP 和反向代理 Web 服务器,同时提供了 IMAP/POP3/SMTP 服务。首先下载 ngxin ,地址:http://nginx.org/download/
下载之后是一个压缩包,解压之后,执行目录下的 nginx.exe 启动服务器,nginx 默认监听 80 端口,打开浏览器,在地址栏中输入:http://localhost/,出现下图,表示 nginx 服务器运行正常。
在这里插入图片描述

该页面时 nginx 目录下 html 文件夹下的 index.html 。把项目的构建版本直接复制到 html 目录下就可以完成部署,这也是最简单的部署方式。不过要注意的是,复制的内容不包括 dist 文件夹本身。复制完毕,打开浏览器,试着访问 http://localhost ,会发现无法请求到数据,这是因为还没有为 nginx 配置反向代理,因此请求不到服务端的数据。
在 nginx 目录中,找到 conf 目录下的 nginx.conf 文件,该文件时 nginx 的默认配置文件。编辑该文件:

worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;

        location /api/ {
			#设置被代理服务器的地址,这里配置的是后端数据接口的 URL
			proxy_pass http://111.229.37.167/api/;
			#一下配置关闭重定向,让服务端看到用户的 IP,而不是nginx 服务器的 IP
			#proxy_set_header 指令更改 nginx 服务器接收到的客户端请求头信息
			#然后将新的请求信息发送给被代理的服务器
			proxy_redirect off;
			proxy_set_header X-forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $http_host;
			proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Nginx-Proxy true;
            root   html;
            index  index.html index.htm;
        }

        location / {
            root   html;
            index  index.html index.htm;
			try_files $uri $uri/ /index.html;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

在 nginx 目录下,打开命令窗口,输入以下命令,重启 nginx。

nginx -s reload

访问 http://localhost/,结果如下:
在这里插入图片描述

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

十八、部署 Vue.js 项目到生产环境 的相关文章

随机推荐

  • 【案例 5-4】字符串转换为二进制

    Test类 package anli5 4 字符串转换为二进制 import java util Scanner public class Test public static void main String args Scanner s
  • Spring Cloud的负载均衡Spring Cloud Ribbon和Spring Cloud Feign

    一 客户端负载均衡 Spring Cloud Ribbon Spring Cloud Ribbon是基于HTTP和TCP的客户端负载工具 它是基于Netflix Ribbon实现的 通过Spring Cloud的封装 可以轻松地将面向服务的
  • 如何看懂源代码--(分析源代码方法)

    由于今日计划着要看Struts 开源框架的源代码 昨天看了一个小时稍微有点头绪 可是这个速度本人表示非常不满意 先去找了下资料 觉得不错 摘自 繁体中文Traditional Chinese http www ithome com tw i
  • HT for Web (Hightopo) 使用心得(7)- 3D场景环境配置(阴影,灯光,环境光)

    在文章 Graph3dView 环境配置 天空球 雾化 辉光 景深 中 我们介绍了在 3D 场景中的一些环境配置 包括天空球 雾化 辉光 景深等 本篇文章我们继续补充其他的环境参数 阴影 灯光 环境光 由于本人缺乏艺术细胞 文章中配置的环境
  • vue 实现抽奖大转盘

    实际解决需求 前端只是负责页面转动 在用户点击时 请求中奖接口 同同时通过设置css属性 让转盘转动起来 当转盘转动结束后 根据请求后端接口回来的中奖信息 设置转盘的转动位置 然后进行弹窗显示中奖信息 在此时 注意要重置转盘的转动角度为初始
  • python组成结构_[Python入门学习]-Python项目的组织结构

    一 工程结构 二 编码规范 1 命名规范 包 使用小写字母命名 如果有多个单词 则用下划线分隔 正确的命名方式 lower with under 模块 使用小写字母命名 如果有多个单词 则用下划线分隔 正确的命名方式 lower with
  • Notepad++ 下载

    1 输入下载网址 https notepad plus plus org 2 点击download 3 开始下载安装包 下载好双击下面 跟着向导完成 在此处点击需要创建快捷方式 然后点安装 完成安装的效果
  • 排序算法系列1--简单排序(选择,冒泡,直接插入,希尔排序)

    排序是数据处理中十分常见的操作 现代高级语言都有现成的n种排序算法 但了解它们的代码 对计算机思维有帮助 简单选择排序 每一趟从待排序的数据元素中选择最小 或最大 的一个元素作为首元素 直到所有元素排完为止 简单选择排序是不稳定排序 无论数
  • Mysql数据库迁移:善用Navicat工具,事半功倍

    数据库迁移 在说到数据库迁移方面 像很多开发工作一样 简单有简单的做法 复杂有复杂的做法 就看怎么做了 那么什么样子的数据库迁移方式才是最优的 在这里是没有准确的定义的 但是我这边分享一个比较简单而言的数据库迁移方案 一 迁移方案描述 例如
  • Linux 别名的设置与修改

    装了个 Ubuntu 在终端下 输入 ll 将全部文件显示出来了 由于平时工作中使用的 suse 系统下 输入 ll 时是不会显示隐藏文件的 文件名前面带 的文件 而且一般很少使用隐藏文件 习惯问题 不希望它显示隐藏文件 打算改改 在终端下
  • STM32-基本知识梳理8-FATFS文件系统移植

    一 基本概念 1 为什么需要文件系统 在没有文件系统的存储器中 一般通过手工记录 那些变量存放在那些位置 很难有系统的管理 难以记录有效数据的位置 难以确定存储介质的剩余空间 不明确应以何种格式来解读数据 加入文件系统后 就可以引导区 目录
  • 运输层 :UDP用户数据报协议

    1 相关概念 UDP数据包产生 上层应用产生数据 但是这与真正发送的IP数据报数量并没有什么联系 并且UDP报文并不是一种可靠的协议 我们必须关注IP数据报的长度 如果超过MTU 在链路层的一种限制 则应该进行分片 2UDP报文 16位源端
  • c++ new与delete与qt内存回收机制

    在c primer中读到 new 是在堆里面申请一段内存资源 new必须与delete成对使用 否则就会造成内存泄漏 可最近学qt 我经常可以看见只new而不delete的情况 是不是这样就内存溢出了 非也 百度了一下qt的内存管理机制 才
  • Qt使用数组实现控件批处理

    Qt使用数组实现控件批处理 在Qt中 当你需要对多个控件进行批处理操作时 使用控件数组会大大简化你的代码量 例如希望在一个页面中创建一个控件数组 其中包含8条控件集合 控件数组的定义如下 QCheckBox checkbox 8 QLabe
  • 微机原理课堂练习五

    练习五 定时计数器 和A D D A转换 一 选择题 在下列每小题的四个备选答案中选出一个正确的答案 并将其字母标号填入括号内 24分 1 某一测控系统要用一脉冲信号产生单稳信号 如果使用8253可编程定时 计数器来实现此功能 则8253应
  • Ubuntu16.04 搭建Android源码的git+gitosis+repo代码管理的服务器

    一份源码 要让团队里的人能够轻松地拉取 以下是我的搭建过程 1 关于源码及相关编译环境参考我之前的一篇博文https blog csdn net qq 28449863 article details 79978937 2 简单做个描述 所
  • 2分钟学会Python绘制蟒蛇!

    目录 一 Python蟒蛇绘制 问题分析 1 1 Python蟒蛇绘制 二 Python蟒蛇绘制 实例编写 三 运行效果 3 1 程序关键 四 Python蟒蛇绘制 举一反三 4 1 Python语法元素理解 4 2 程序参数的改变 4 3
  • 吐槽大会,来瞧瞧资深老前端写的垃圾代码

    忍无可忍 不吐不快 本期不写技术文章 单纯来吐槽下公司项目里的奇葩代码 还都是一些资深老前端写的 希望各位对号入座 知道了什么是烂代码 才能写出好代码 别说什么代码和人有一个能跑就行的话 玩笑归玩笑 人都有菜的时候 写出垃圾代码无可厚非 但
  • 面试时,被问到频繁跳槽该如何回应?

    有数据显示 现在的职场人 跳槽越来越频繁 95后平均7个月就离职 对于面试官来说 一个跳槽过于频繁的人总是存在潜在风险 比如抗压力差 稳定性不好 心不定这山望着那山高 职业规划不清晰等等 我一直强调一个观点 职场人跳槽 应该是为了下一步有更
  • 十八、部署 Vue.js 项目到生产环境

    本章概要 构建发布版本 部署 项目开发完毕并测试后 就要准备构建发布版本 部署到生产环境 18 1 构建发布版本 在构建发布版本前 注意将项目代码中用于调试的 alert debugger console log 等语句删除或注释 在生产环