前端打同一个包可以从测试晋升到生产的配置方案

2024-01-20 10:36

本文主要是介绍前端打同一个包可以从测试晋升到生产的配置方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前端打同一个包从测试晋升到生产环境的方案,是一种高效、可靠且易于维护的部署方式。在这种方案中,前端代码在开发完成后,经过测试验证无误后,可以直接打包部署到生产环境,无需进行额外的配置或修改。这样可以减少部署过程中可能出现的错误和延迟,提高应用的可用性和性能。

为什么需要这种方案:

简化部署流程:通过使用同一个包从测试到生产,可以大大简化部署流程。开发人员只需要打包一次,就可以在不同的环境中使用。这避免了在不同环境之间迁移代码时可能出现的错误和混淆。
提高应用性能:由于测试环境和生产环境中的代码是相同的,因此应用的性能在两个环境中也会保持一致。这有助于确保用户在生产环境中获得最佳的性能体验。
减少维护成本:使用同一个包从测试到生产可以减少维护成本。一旦代码在测试环境中通过验证,就可以放心地部署到生产环境,而无需担心环境差异带来的问题。这有助于降低技术支持和故障排除的成本。
提高开发效率:通过消除在不同环境之间迁移代码的需要,这种方案可以显著提高开发效率。开发人员可以专注于开发任务,而不是部署和环境配置等非核心工作。这有助于加快开发周期和迭代速度。
提高应用可用性:由于测试环境和生产环境中的代码是相同的,因此应用在生产环境中出现问题的可能性大大降低。这有助于提高应用的可用性和稳定性,从而提升用户体验和忠诚度。
总之,前端打同一个包从测试晋升到生产环境的方案是一种高效、可靠且易于维护的部署方式。它可以简化部署流程、提高应用性能、降低维护成本、提高开发效率和应用的可用性。因此,对于需要频繁部署和快速迭代的前端项目来说,这种方案是一种非常有价值的工具。

直接上代码:
代码下载地址

具体方案

在这里插入图片描述

Nginx subfilter

在 Nginx 中,你可以使用 sub_filter 指令来替换 HTML 中的占位符。sub_filter 允许你在 Nginx 处理响应内容时进行文本替换,这通常用于修改 HTML 页面中的特定内容。

以下是一个简单的示例,演示如何在 Nginx 配置中使用 sub_filter:

server {listen 8090;server_name localhost;location / {index index.html;root /Users/yueyu/Project/allens-learn/webapp/subfilter;# 启用 sub_filtersub_filter '_SERVER_ADDR' 'http://123.com';sub_filter_once off; # 可选,用于启用全局替换而不仅仅是第一次出现的地方}
}

在上述配置中:

sub_filter 指令用于替换响应中的 (占位符)为指定的 replacement_value。
sub_filter_once off; 是可选的,如果设置为 off,则会对所有匹配的地方进行替换。如果设置为 on,则只替换第一次匹配的地方。
请根据你的实际需求修改 和 replacement_value,以及其他配置参数。确保配置文件语法正确,并且重新加载 Nginx 以应用更改。

<html><head><title>nginx sub-filter</title><script src="index.js"></script><script>var addr = "_SERVER_ADDR";console.log("xxxxx", addr)</script></head>
</html>

console.log()会输出123.com。

这种方案可以完美解决同一个包晋升的问题,优点有改造成本比较低,对代码入侵性很低,不同环境配置不同的nginx config即可。性能也比较好,单页应用只会在第一次加载的时候替换。

但也有很多缺点,比如:
① 必须使用nginx
② 配置都要配置到nginx中
③ 本地环境使用webpack-dev-server启动的话可能需要单独适配
④ 配置在nginx中,可发需要熟悉成本,假设不知道有这个东西可能会有配置遗漏等等

根据域名匹配

原理就是通过window.location.host 作为key拿到在js代码中的配置。直接上代码:

const domainMap = {"localhost:8090": {config1: "test"}}const getDomainConfig = (configName) => {const domain = window.location.hostconst config = domainMap[domain] || {}return config[configName]
}

html通过getDomainConfig传配置名称即可。

<html><head><title>nginx sub-filter</title><script src="index.js"></script><script>var addr = "_SERVER_ADDR";console.log("xxxxx", addr)console.log(getDomainConfig("config1"))</script></head>
</html>

这种优点就是很方便简单,缺点也很明显假如域名不匹配可能就获取不到配置了。

前后端不分离

现在主流情况就是前后端分离,所以不做过多讨论,只提供思路。

可以通过后端把公共配置传参到前端,比如java的thymleaf ,velocity等等。php的话就是smarty、laravel的blame、thinkphp的模板填充等。

原理很简单,前端代码都是通过后端渲染的,后端理论上可以对前端的代码为所欲为。前端只需要写好后端约定的占位符,后端替换即可,这种方式和nginx subfilter很类似。

这篇关于前端打同一个包可以从测试晋升到生产的配置方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/625727

相关文章

SpringBoot3.4配置校验新特性的用法详解

《SpringBoot3.4配置校验新特性的用法详解》SpringBoot3.4对配置校验支持进行了全面升级,这篇文章为大家详细介绍了一下它们的具体使用,文中的示例代码讲解详细,感兴趣的小伙伴可以参考... 目录基本用法示例定义配置类配置 application.yml注入使用嵌套对象与集合元素深度校验开发

IntelliJ IDEA 中配置 Spring MVC 环境的详细步骤及问题解决

《IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决》:本文主要介绍IntelliJIDEA中配置SpringMVC环境的详细步骤及问题解决,本文分步骤结合实例给大... 目录步骤 1:创建 Maven Web 项目步骤 2:添加 Spring MVC 依赖1、保存后执行2、将新的依赖

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Java Response返回值的最佳处理方案

《JavaResponse返回值的最佳处理方案》在开发Web应用程序时,我们经常需要通过HTTP请求从服务器获取响应数据,这些数据可以是JSON、XML、甚至是文件,本篇文章将详细解析Java中处理... 目录摘要概述核心问题:关键技术点:源码解析示例 1:使用HttpURLConnection获取Resp

CentOS7更改默认SSH端口与配置指南

《CentOS7更改默认SSH端口与配置指南》SSH是Linux服务器远程管理的核心工具,其默认监听端口为22,由于端口22众所周知,这也使得服务器容易受到自动化扫描和暴力破解攻击,本文将系统性地介绍... 目录引言为什么要更改 SSH 默认端口?步骤详解:如何更改 Centos 7 的 SSH 默认端口1

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Maven的使用和配置国内源的保姆级教程

《Maven的使用和配置国内源的保姆级教程》Maven是⼀个项目管理工具,基于POM(ProjectObjectModel,项目对象模型)的概念,Maven可以通过一小段描述信息来管理项目的构建,报告... 目录1. 什么是Maven?2.创建⼀个Maven项目3.Maven 核心功能4.使用Maven H

SpringBoot多数据源配置完整指南

《SpringBoot多数据源配置完整指南》在复杂的企业应用中,经常需要连接多个数据库,SpringBoot提供了灵活的多数据源配置方式,以下是详细的实现方案,需要的朋友可以参考下... 目录一、基础多数据源配置1. 添加依赖2. 配置多个数据源3. 配置数据源Bean二、JPA多数据源配置1. 配置主数据

HTML5中的Microdata与历史记录管理详解

《HTML5中的Microdata与历史记录管理详解》Microdata作为HTML5新增的一个特性,它允许开发者在HTML文档中添加更多的语义信息,以便于搜索引擎和浏览器更好地理解页面内容,本文将探... 目录html5中的Mijscrodata与历史记录管理背景简介html5中的Microdata使用M