首页 > 其他分享 >vue3微信公众号商城项目实战系列(12)项目发布到服务器上

vue3微信公众号商城项目实战系列(12)项目发布到服务器上

时间:2023-04-20 12:11:22浏览次数:46  
标签:12 微信 APP js 编译 env vue3 config VITE

本篇介绍如何将vue3项目打包发布到服务器上,然后在微信公众号上打开。

vue3发布之前需要对项目进行编译,编译时会在项目根目录下创建 dist 文件夹,编译后的文件会存放在这里。

 

在编译之前,我们在public目录下建一个 config.js 的文件,里面放如下的代码:

const config = {
    baseUrl: "http://api.xxx.com/api", //修改为你的服务器接口地址
}

1. 作用

方便运维同事将编译后的代码部署到web服务器之前可以根据情况修改后端接口API 地址。即使部署完成后

,后端接口API地址如果有变动(后端写API的同事可能也在不定期发布新版本),也很容易通过修改这个文件解决

,而不需要找前端同事重新编译打包一次。

 

2. 为什么放置在这个目录呢?

因为其他目录的文件编译后文件名后面会加一个随机字符串(见下图),而public目录下的文件名会保持不变

,运维可以很方便的找到这个文件并修改。

注:public 目录下的文件编译后会自动放到根目录(public目录不存在了),这是 public 和 src/assets 目录不同的地方。

 

3. 如何使用这个配置呢?

这需要代码中能区分开发环境和服务器环境,开发环境会自动读取 vite.config.js 配置文件中 "server" 属性的配置信息

,这里定义了后端接口API地址(一般仅供开发使用),如果vue3项目编译完成部署到服务器环境后

能自动读取 config.js 中的配置信息问题就解决了。这里我们使用vue3的环境配置文件来解决。

第1步:

在 vue3 根目录下新建 ".env.development" 和 ".env.production" 文件,分别对应开发环境配置和生产环境配置

,这里的文件名除了保持 ".env." 的前缀外,后面可以任意取名,但需要到package.json中的"scripts"属性下去增加配置以便和新名称对应

,development 和 production 是预设的名称,不需要额外设置,直接使用就可以了,如下:

第2步:

在这个2个文件中分别加入如下的代码

.env.development

 

VITE_APP_ENV = 'development'

VITE_APP_BASE_URL = '/dev-api'

.env.production

 

VITE_APP_ENV = 'production'

VITE_APP_BASE_URL = '/prod-api'

 

注意:按VITE的约定变量名称必须以 "VITE_" 开头

,如果要修改需要到 vite.config.js文件的 defineConfig() 函数中加上envPrefix : “XXX_”的配置,这里遵守约定去使用就可以了。

使用时用 import.meta.env.VITE_APP_ENV 就可以取到相应的值了,用npm run dev命令在本机运行时会读取开发环境.env.development的值

,当build后,会使用正式环境.env.production中的值。

 

 

第3步:

修改 request.js 中 baseURL 的取值方式,如下:

//配置默认的Content-Type格式
axios.defaults.headers['Content-Type'] = 'application/x-www-form-urlencoded';
axios.defaults.baseURL = import.meta.env.VITE_APP_ENV === "development" ? import.meta.env.VITE_APP_BASE_URL : config.baseUrl;
//创建axios实例
const service = axios.create({   
    timeout: 60*1000, //请求超时时间60秒
    baseURL: '/dev-api',
})

之前的baseURL是写死的,现在将其从axios.create() 方法中提取出来进行全局配置,判断当前环境变量 import.meta.env.VITE_APP_ENV 是否是开发环境

,如果是读取 import.meta.env.VITE_APP_BASE_URL的值为"/dev-api",如果不是,就从外部的 config.js 中读取 baseUrl 属性值。

 第4步(最后一步):

在 index.html 文件中增加对 config.js的 script 引用,以便 request.js 中可以使用"config.baseUrl"时可以正常取值,如下(见12行):

 1 <!DOCTYPE html>
 2 <html lang="en">
 3   <head>
 4     <meta charset="UTF-8">
 5     <link rel="icon" href="/favicon.ico">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <title>Vite App</title>
 8   </head>
 9   <body>
10     <div id="app"></div>
11     <script type="module" src="/src/main.js"></script>
12     <script type="text/javascript" src="/config.js"></script>
13   </body>
14 </html>

至此,整个开发编译发布的修改就完成了。

 --------------------------------------------------------------------------------------------------------

编译前的文件:

在命令行窗口输入指令: npm run build 后回车,项目开始编译,如下:

编译完成:

用时不到1秒,速度还是非常快的。

编译完成后项目的根目录下就多了一个dist的目录,内容如下:

 

assets 中就是编译后的所有文件了,如下:

 

注:编译后的 dist 文件目录有点凌乱,因为public 下的文件编译后会放在dist根目录

,建一个 imgs 的目录来集中存放图片更好一些,新建imgs目录整理后重新编译:

 

编译报错,根据错误提示把引用不到的图片路径修改后重新编译:

在dist目录也清爽了,如下:

 

标签:12,微信,APP,js,编译,env,vue3,config,VITE
From: https://www.cnblogs.com/pfm33/p/17322438.html

相关文章

  • 最少拦截系统 1257 (动态规划)
    最少拦截系统TimeLimit:2000/1000MS(Java/Others)   MemoryLimit:65536/32768K(Java/Others)TotalSubmission(s):27022   AcceptedSubmission(s):10667ProblemDescription某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系......
  • Python 图像处理实用指南:11~12
    原文:Hands-OnImageProcessingwithPython协议:CCBY-NC-SA4.0译者:飞龙本文来自【ApacheCN计算机视觉译文集】,采用译后编辑(MTPE)流程来尽可能提升效率。当别人说你没有底线的时候,你最好真的没有;当别人说你做过某些事的时候,你也最好真的做过。十一、深入学习图像处理——......
  • Oracle MySQL Server 拒绝服务漏洞(CVE-2023-21912) 修复
    CVE编号公告标题和摘要最高严重等级受影响的软件CVE-2023-21912OracleMySQLServer拒绝服务漏洞未经身份验证的远程攻击者可通过MySQL协议网络访问MySQLServer,成功利用此漏洞可导致目标MySQLServer挂起或频繁重复崩溃,造成拒绝服务攻击重要MySQLServer<=5.7.41......
  • Vue3 toRef与toRefs
    视频直接用ref是创建新的对象10.toRef作用:创建一个ref对象,其value值指向另一个对象中的某个属性。语法:constname=toRef(person,'name')应用:要将响应式对象中的某个属性单独提供给外部使用时。扩展:toRefs与toRef功能一致,但可以批量创建多个ref对象,语法......
  • 微信小程序实现长按拖拽排序
    <viewclass="container"><movable-areaclass="item_box"style="width:{{boxWeight}}rpx;height:{{boxHeight}}rpx"><movable-viewclass="item{{selectId===item.id?'item_show':&#......
  • Vue3 自定义hook
    视频9.自定义hook函数什么是hook?——本质是一个函数,把setup函数中使用的CompositionAPI进行了封装。类似于vue2.x中的mixin。自定义hook的优势:复用代码,让setup中的逻辑更清楚易懂。componentsDemo.vue<template> <h2>当前求和为:{{sum}}</h2> <button@clic......
  • vue2升vue3后部分异常解决
    element-ui升为element-plus首先建议参考element-plus官方站点:https://element-plus.org/zh-CN/部分组件标签直接变更如el-submenu变更为el-sub-menu浏览器提示ElementPlusError:[ElOnlyChild]novalidchildnodefound哪个页面有该提示就搜"slot=",然后到element......
  • CDGA敏捷开发的12个原则在企业数据治理中的应用
    敏捷数据治理,就是用敏捷的核心思想来管理数据,实现数据的持续、高质量交付,以应对业务的不断变化。敏捷开发的12个原则如下:原则1:尽早并持续的交付有价值的软件以满足客户需求。对数据治理来讲,如何让业务快速拿到想要的数据是需要重点考虑的问题。业务人员应当参与数据需求分析,甚至取......
  • 2023年最新微信小程序抓包教程
    01开门见山隔一个月发一篇文章,不过分。首先回顾一下《微信绑定手机号数据库被脱库事件》,我也是第一时间得知了这个消息,然后跟踪了整件事情的经过。下面是这起事件的相关截图以及近日流出的一万条数据样本:个人认为这件事也没什么,还不如关注一下之前45亿快递......
  • Solon v2.2.12 发布,Java 应用开发框架
    Solon是一个高效的Java应用开发框架:更快、更小、更简单。它不是Spring、没有使用Servlet、JavaEE接口,是一个有自己接口标准的开放生态:150多个生态插件,可以满足各种场景开发大量的国产框架适配,可以为应用软件国产化提供更好支持,助力信创建设相对于SpringBoot和Sprin......