技能学习:学习使用Node.js + Vue.js,开发前端全栈网站-14-1.生产环境编译

简介: 将vue文件编译成静态文件,为项目上线做准备。

目前我们编辑的vue组件文件、scss样式工具文件都是在开发环境中作用的,我们需要使用npm run serve方法开启端口进行访问。
但在生产环境(项目上线环境)下,我们需要将开发环境中的文件编译成生产环境代码,将vue组件文件和scss样式工具文件编译成静态的html、css文件,同时将admin端、web端放入server端,从而形成一个完整的网站形态。
如需要访问web端,则访问域名:3000/web(本地环境如localhost:3000/web)

1.通过npm run build对admin端直接编译

首先确保admin端没有运行,然后对admin端文件进行编译:

cd admin
npm run build

在这里插入图片描述
此时,正在编译,编译完成后,在admin端中就生成了我们日常使用的静态文件,还为我们分好了类。
在这里插入图片描述
之后这些静态文件就可以上传至任何服务器中显示。

2.使用serve命令查看编译后的admin端

安装serve命令方法:

npm i -g serve

在这里插入图片描述
使用serve方法查看静态文件:

serve dist

在这里插入图片描述
生成了5000端口号的链接,点击进入:
在这里插入图片描述
没问题。
此时的静态文件与开发环境中逻辑相同,依附着server端进行数据查询抽取,如果单独将这些页面放入服务器中运行的话也就只是普通的静态页面无法进行数据交互。
所以我们如果想要正常获取接口,需要替换一下接口地址,将接口地址替换成同样上线的服务接口地址,可以涉及前后端分离。
在这里插入图片描述
但我们到目前位置想做的就是整套网站开发,使用的就是之前制作的server端,现在只需要将admin端静态文件放入server端,让admin端与server端成一体即可,继续使用server端后台。

3.将生成的admin静态文件放入server端

首先修改baseURL接口地址,改为动态切换,分别是之前的开发环境接口地址(localhost)生产环境接口地址
(1)利用vue-cli方法定义接口地址变量
定义接口地址环境变量process.env.VUE_APP_API_URL,其中process.env是环境变量,环境变量中定义以VUE_APP开头的变量名,起名为_API_URL。
在这里插入图片描述
一般在客户端是没有process环境变量的,但我们使用vue-cli中的vue pack打包后就可以生成这个环境变量。
同时我们在admin端新建一个环境变量文件 .env.development(生产环境下的环境变量):
在这里插入图片描述
此环境变量的接口地址用于开发环境,但如果没有这个环境变量,也就是在生产环境中,我们需要给其设定一个绝对地址’/admin/api‘,确保在生产环境中调用接口找到正确的接口地址。
如此就实现了baseURL的动态接口地址绑定
在这里插入图片描述
(2)再次编译admin端,将生成的admin静态文件放入server端

cd admin
npm run build

编译完成后我们再次到app.js静态文件中查找接口地址,查看刚刚的修改:
在这里插入图片描述
成功,没问题。
此时我们将生成的静态文件放入server端,后续通过server端进行访问(localhost:3000/admin)。
在server端新建文件夹admin,复制生成的dist文件夹中的文件,粘贴到server端下面的admin文件夹中:
在这里插入图片描述
由于这些文件均视为静态文件,所以定义路由方法与图片上传一样:
在这里插入图片描述
此时进入server端,输入路由地址 localhost:3000/admin:
在这里插入图片描述
此时页面并未出现我们预想的页面,但在Network中可以看出文件确实被引用且找到,但却找不到css和js文件,这是因为css和js文件地址错误导致,检查admin中index.html静态文件:
在这里插入图片描述
文件地址是’/css‘,但如果想查询成功,地址应该是'/admin/css'才可以。
此时我们修改server端中admin的静态路由,将'/admin'改为'/':
在这里插入图片描述
此时直接访问localhost:3000则可正常打开admin端。
但这与我们预想的localhost:3000/admin和localhost:3000/web不符合,所以我们要进行下一步修改。

4.使用vue CLI设置静态文件编译位置

首先我们参考vue CLI配置参考
在这里插入图片描述
在admin端新建vue-cli配置文件vue.config.js:
在这里插入图片描述

module.exports = {
    // 输出文件夹(配置文件时,将配置好的静态文件直接输出到server端下面的admin文件夹,而不用输出到admin端的dist文件夹中)
    outputDir: __dirname + '/../server/admin',
    // 默认公共路径:如果环境变量 === '生产环境',则使用'/admin'的publicPath,否则直接使用'/'
    publicPath: process.env.NODE_ENV === 'production' ? '/admin/' : '/',
}

完成配置后,我们将之前生成的admin端静态文件都删除(包括server/admin和admin/dist),重新生成admin端静态文件:
在这里插入图片描述

cd admin
npm run build

在这里插入图片描述
此时生成的admin端静态文件自动输出到server/admin文件夹中,同时文件路径均改为了/admin/js/..。
这样,在server端index.js路由中将地址改回/admin,测试:
在这里插入图片描述
在这里插入图片描述
没问题,到此admin端生产环境编译过程完成。
web端与admin端相同,大家自行测试。下节我们购买域名和服务器进行线上部署。

相关文章
|
5天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【9月更文挑战第15天】在数字化浪潮中,Node.js作为一颗耀眼的星辰,为后端开发领域注入了活力与创新。本文将带你领略Node.js的魅力所在,探索其架构设计、性能优化及实战应用,让你在轻松愉快的氛围中掌握Node.js后端开发的精髓。
|
9天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【9月更文挑战第11天】本文将带你走进Node.js的世界,了解其背后的运行机制和实际应用。我们将从基础概念出发,逐步深入到实战应用,最后通过代码示例巩固学习成果。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供新的视角和思考。
|
7天前
|
JavaScript 前端开发 API
深入浅出Node.js后端开发
【9月更文挑战第13天】本文将带你进入Node.js的世界,从基础概念到实际案例,深入浅出地探讨如何利用Node.js进行后端开发。通过本文的学习,你将了解Node.js的工作原理、核心模块、以及如何构建一个简单的Web应用。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供有价值的见解和技巧。
|
9天前
|
JavaScript 前端开发 UED
让 HTML 向 Vue.js 华丽转身:如何把 `wangEditor` 仿腾讯文档项目整合进 Vue.js
让 HTML 向 Vue.js 华丽转身:如何把 `wangEditor` 仿腾讯文档项目整合进 Vue.js
|
9天前
|
缓存 JavaScript 前端开发
深入浅出Node.js后端开发
【9月更文挑战第11天】本文将带你进入Node.js的世界,探索其背后的哲学、核心概念以及如何利用它来构建高效、可扩展的后端服务。无论你是前端开发者寻求全栈技能,还是后端开发者希望拓宽技术栈,这篇文章都将为你提供价值。我们将从基础讲起,逐步深入到实战应用,让你对Node.js有一个全面而深刻的理解。
20 2
|
9天前
|
Web App开发 JavaScript NoSQL
深入浅出Node.js后端开发
在数字化时代的浪潮中,后端开发作为技术支柱之一,承载着数据处理和业务逻辑实现的重要任务。本文将通过浅显易懂的方式,带你走进Node.js的世界,从基础概念到实战应用,逐步揭开后端开发的神秘面纱。无论你是编程新手还是希望扩展技术栈的开发者,这篇文章都将为你提供有价值的指导和启示。让我们一起探索如何在不断变化的技术环境中,保持初心,寻找属于自己的方向,并成为希望在世界上看到的改变。
21 1
|
18天前
|
缓存 监控 前端开发
前端性能优化实战:让你的网站快如闪电的十大秘籍
【9月更文挑战第3天】通过以上十大秘籍的实践,您可以显著提升网站的前端性能,让您的网站在竞争激烈的互联网环境中脱颖而出,为用户带来更加流畅和愉悦的体验。记住,前端性能优化是一个永无止境的过程,只有不断迭代和优化,才能保持网站的竞争力。
|
14天前
|
存储 JavaScript 安全
深入浅出Node.js后端开发
【9月更文挑战第6天】在数字化浪潮中,后端开发作为技术架构的支柱,承载着数据存储、业务逻辑处理和用户交互等核心功能。Node.js,作为一个轻量级、高效的JavaScript运行环境,已经成为许多开发者的首选工具。本文将深入探讨Node.js的基础知识、实战应用以及面临的挑战,旨在为初学者和经验丰富的开发者提供一份全面的指南。从搭建开发环境到部署应用程序,我们将一步步揭示Node.js的魅力所在,同时也会触及性能优化和安全防护等高级话题。无论你是初涉后端开发的新手,还是希望深化对Node.js的理解,这篇文章都将是你的宝贵资源。
|
17天前
|
JavaScript API 数据库
深入理解Node.js事件循环及其在后端开发中的应用
【9月更文挑战第3天】本文将深入浅出地介绍Node.js的事件循环机制,探讨其非阻塞I/O模型和如何在后端开发中利用这一特性来处理高并发请求。通过实际的代码示例,我们将看到如何有效地使用异步操作来优化应用性能。文章旨在为读者揭示Node.js在后端开发中的核心优势和应用场景,帮助开发者更好地理解和运用事件循环来构建高性能的后端服务。
|
17天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【9月更文挑战第3天】本文将带你走进Node.js的世界,通过深入浅出的方式,让你了解Node.js的基本概念、特性以及如何在后端开发中应用。我们将从Node.js的安装开始,逐步深入到异步编程模型、事件驱动机制等核心概念,最后通过一个简单的Web服务器示例,让你对Node.js有一个全面的认识。无论你是前端开发者还是后端开发者,只要你对Node.js感兴趣,这篇文章都将为你打开一扇新的大门。