技能学习:学习使用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端相同,大家自行测试。下节我们购买域名和服务器进行线上部署。

相关文章
|
27天前
|
Cloud Native 前端开发 JavaScript
前端开发者必看:不懂云原生你就OUT了!揭秘如何用云原生技术提升项目部署与全栈能力
【10月更文挑战第23天】随着云计算的发展,云原生逐渐成为技术热点。前端开发者了解云原生有助于提升部署与运维效率、实现微服务化、掌握全栈开发能力和利用丰富技术生态。本文通过示例代码介绍云原生在前端项目中的应用,帮助开发者更好地理解其重要性。
57 0
|
9天前
|
JSON 前端开发 JavaScript
聊聊 Go 语言中的 JSON 序列化与 js 前端交互类型失真问题
在Web开发中,后端与前端的数据交换常使用JSON格式,但JavaScript的数字类型仅能安全处理-2^53到2^53间的整数,超出此范围会导致精度丢失。本文通过Go语言的`encoding/json`包,介绍如何通过将大整数以字符串形式序列化和反序列化,有效解决这一问题,确保前后端数据交换的准确性。
22 4
|
1月前
|
JavaScript 前端开发 Docker
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
在使用 Deno 构建项目时,生成的可执行文件体积较大,通常接近 100 MB,而 Node.js 构建的项目体积则要小得多。这是由于 Deno 包含了完整的 V8 引擎和运行时,使其能够在目标设备上独立运行,无需额外安装依赖。尽管体积较大,但 Deno 提供了更好的安全性和部署便利性。通过裁剪功能、使用压缩工具等方法,可以优化可执行文件的体积。
115 3
前端全栈之路Deno篇(二):几行代码打包后接近100M?别慌,带你掌握Deno2.0的安装到项目构建全流程、剖析构建物并了解其好处
|
19天前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
|
19天前
|
移动开发 前端开发 JavaScript
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
于辰在大学期间带领团队参考网易游戏官网的部分游戏页面,开发了一系列前端实训作品。项目包括首页、2021校园招聘页面和明日之后游戏页面,涉及多种特效实现,如动态图片切换和人物聚合效果。作品源码已上传至CSDN,视频效果可在CSDN预览。
29 0
前端实训,刚入门,我用原生技术(H5、C3、JS、JQ)手写【网易游戏】页面特效
|
20天前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
33 1
|
25天前
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍
|
24天前
|
JavaScript 前端开发 开发者
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第27天】在前端开发领域,Vue.js和Angular是两个备受瞩目的框架。本文对比了两者的优劣,Vue.js以轻量级和易上手著称,适合快速开发小型到中型项目;Angular则由Google支持,功能全面,适合大型企业级应用。选择时需考虑项目需求、团队熟悉度和长期维护等因素。
34 1
|
24天前
|
JavaScript 前端开发 API
前端框架对比:Vue.js与Angular的优劣分析与选择建议
【10月更文挑战第26天】前端技术的飞速发展让开发者在构建用户界面时有了更多选择。本文对比了Vue.js和Angular两大框架,介绍了它们的特点和优劣,并给出了在实际项目中如何选择的建议。Vue.js轻量级、易上手,适合小型项目;Angular结构化、功能强大,适合大型项目。
23 1
|
1月前
|
JavaScript 前端开发 测试技术
前端全栈之路Deno篇(五):如何快速创建 WebSocket 服务端应用 + 客户端应用 - 可能是2025最佳的Websocket全栈实时应用框架
本文介绍了如何使用Deno 2.0快速构建WebSocket全栈应用,包括服务端和客户端的创建。通过一个简单的代码示例,展示了Deno在WebSocket实现中的便捷与强大,无需额外依赖,即可轻松搭建具备基本功能的WebSocket应用。Deno 2.0被认为是最佳的WebSocket全栈应用JS运行时,适合全栈开发者学习和使用。
104 7
下一篇
无影云桌面