vue2 打包部署(vue-cli )
Vue的打包部署
1、一般打包 :直接 npm run build。(webpack的文件,根据不同的命令,执行不同的代码的)
注:这种打包的静态文件,只能放在web服务器中的根目录下才能运行。
2、在服务器中 非根目录下 运行的 打包:需要配置
参考:https://segmentfault.com/a/1190000014561644
3、在本地文件系统中打开,不需要web服务器
暂时 不清楚
4、使用 history模式 打包的 配置 : http://tigerliu.site/2018/10/vue-history/ (亲测有效,配置很简单)
nginx 服务器下 配置:在location下 加 try_files $uri $uri/ /index.html; 就可以了
location / {
try_files $uri $uri/ /index.html;
}
补充:还有一个思路,可以不用在服务器上进行 history模式 的配置,给每个路由创建一个对应的html文件就可以了,里面的代码和index.html一样。(具体怎么处理参考下面react的处理)
注意:代码中的相对路径是以浏览器上 地址 为参考的,而不是文件所在目录(一般情况这两个是统一的,但是服务器配置过就不一定了。比如浏览器请求a文件,服务器把b文件给浏览器,这个时候b文件的相对路径是以url的地址为参考的,即a的url地址)。
单页应用,hash模式的url地址是不变的(变的是hash值),所以打包后 页面的相对路径 都是相对index页面。但是history模式下,浏览器地址是改变的,所以直接把hash模式转化为history模式会出现错误。因为history模式下,不同的地址相对路径是不一样的。
5、修改Vue打包后的默认文件名 : https://blog.csdn.net/daotiao0199/article/details/84777955
6、vue-cli 不同环境打包 不同的接口地址 :需要单独这种区分的,一般是不同环境接口地址改变的不只是域名,主要是地址的目录不同。如:one.vom/test/api 和 two.com/pro/api 这两个环境根域名下的目录是不同的,这两个环境的打包就需要区分开来了。
参考:https://blog.csdn.net/qq_34322905/article/details/84319010(亲测有效。理解了程序,webpack.dev.conf.js文件是可以不用改的,使用process.env.NODE_ENV 区分)
多个服务器(web服务器和后台服务器在一个域名下),如测试环境(接口调用的是测试环境的域名)、正式环境(接口调用的是正式环境的域名)
注意:调接口的地址域名不要写死,使用 / 开头表示根域名下的地址。不同的环境,如果只是域名的不同,完全不需要区分测试环境还是正式环境。根域名会自动添加的。
难点:1、npm命令 中的 参数,在 webpack程序中是可以获取到的。如:npm run build --test ,参数test 在webpack程序中可以获取这个值。 http://nodejs.cn/api/process.html#process_process_argv
process.env.npm_config_argv 【npm 命令, 获取到的参数。node命令的话,这个变量是undefined】。如:npm run start --test 。使用npm_config_argv变量可以正常获取到 test参数
process.argv 【node命令可以正常获取到 node命令相关参数。npm命令的话,这个变量返回的数组中不带参数】。如:node test.js --test 。使用 argv可以正常获取到 test参数
const argv = JSON.parse(process.env.npm_config_argv).original || process.argv // 个人觉得这里的 process.argv 是多余的。使用npm命令时,process.env.npm_config_argv 变量肯定是有数据的。
2、通过配置,webpack程序中的变量值(常量),在前端js中是获取获取到的。编译时直接 文本替换。
注意:cnpm 和 npm 命令打包后,process.env.npm_config_argv 获取的数组是不一样的。参考链接上的处理,只是针对npm进行处理的,cnpm是会有问题的。下面是我的改进(改进后npm和cnpm都可以正常打包):
const HOST_ENV = argv[argv.length - 1] ? argv[argv.length - 1].replace(/[^a-z]+/ig,"") : '' // npm和cnpm 命令下,--test参数都是在数组 argv 的最后面.
7、vue-cli 中 通过配置,webpack 中的常量 可以在 前端js中使用(环境变量就是这样实现的)。 https://www.jianshu.com/p/887f0454ef96(推荐) 或 https://www.cnblogs.com/xiaofenguo/p/9994629.html
webpack在编译 前端代码时,碰到 这种 常量 直接做文本替换(即打包后的代码中是没有这个常量的,只有对应的值),指定的值必须包括引号。
new webpack.DefinePlugin({
'process.env.BASE_URL': '\"' + process.env.BASE_URL + '\"', // 这里属性名process.env.BASE_URL的配置是给前端js使用的,属性值中process.env.BASE_URL是node的全局变量,所有的node程序都可以使用,但是前端的js是不能使用的。
'process.env.HANGZHOU': '"hangzhou"',
}),
creact-react-app
1、browserHistory 模式,服务器不配置:https://www.jianshu.com/p/e73d47885514
思路:每个 路由路径 下,都放置一个跟首页一样的 index.html
vue2 打包部署(vue-cli )的更多相关文章
- @vue/cli的配置知道多少-publicPath,outputDir,assetsDir,indexPath,filenameHashing,configureWebpack,productionSourceMap
vue.config.js的简单介绍 vue.config.js 是一个可选的配置文件, 在项目的 (和 package.json 同级的) 根目录中存在这个文件. 默认情况没有这个文件需要我们手动去 ...
- axios踩坑记录+拦截器使用+vue cli代理跨域proxy+webpack打包部署到服务器
1.小小的提一下vue cli脚手架前端调后端数据接口时候的本地代理跨域问题,如我在本地localhost访问接口http://40.00.100.100:3002/是要跨域的,相当于浏览器设置了一道 ...
- vue打包部署(含2.0)
到这里vue的所有平时使用的知识点都写完了 先补充一下vue2.x的安装 ## 全局脚手架 npm install vue/cli -g ## 查看版本 vue --version ## 新建项目 v ...
- vue cli 3.x 项目部署到 github pages
github pages 是 github 免费为用户提供的服务,写博客,或者部署一些纯静态项目. 最近将 vue cli 3.x 初始化项目部署到 github pages,踩了一些坑,记录如下. ...
- vue history 模式打包部署在域名的二级目录的配置指南
最近在做项目,需要把项目部署在域名下的二级目录,并且是在用vue-router的history 模式. 我们都知道vue-router 的两种前端基本访问模式 hash 和history .hash ...
- Vue Cli 3 打包上线 静态资源404问题解决方案
报错原因:静态资源丢失 解决方案 官方文档https://cli.vuejs.org/zh/config/#vue-config-js baseUrl 从 Vue CLI 3.3 起已弃用,请使用pu ...
- vue项目 打包部署上线
1. npm run dev:本地开发的时候做调试用的. 2. npm run build:打包部署上线,生成一个 dist 文件夹. 注意:用 npm run build 时,常遇到因引用路径不对导 ...
- vue cli 打包项目造成css背景图路径错误
vue cli做项目的时候难免会碰到,css引用背景图或者css,js之间的相互引用!!!这时候打包后可能会出现一个错误!!如下图: 写法: 错误: 会无端多出一个“/css/static/” 这样就 ...
- vue cli 3 打包过大问题
vue cli 3 打包命令 npm run build,这种情况下的打包可以通过设置 vue.config.js里面的 productionSourceMap: false. 如果是自己设置的打包环 ...
随机推荐
- zenoss(智能监控软件)
Zenoss Core是开源企业级IT管理软件-是智能监控软件,他允许IT管理员依靠单一的WEB控制台来监控网络架构的状态和健康度,同时也是开源的网络与系统管理软件.全名 Zenos ...
- mybatis如何通过接口查找对应的mapper.xml及方法执行详解
转:http://www.jb51.net/article/116402.htm 本文主要介绍的是关于mybatis通过接口查找对应mapper.xml及方法执行的相关内容,下面话不多说,来看看详细的 ...
- Linux 学习 (五) DNS配置
没有配置DNS会引起的问题 yum命令 ssh命令等不能进行 错误: Could not resolve host: centos.ustc.edu.cn; 本文例子: CentOS7 下DNS配置 ...
- linux系统中查看日志及系统信息
cat tail -f 日 志 文 件说 明 /var/log/message系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/secure与安全相关的日志 ...
- jQuery-resize和scroll的性能优化
## 下面是进行测试和研究怎么实现的用的 Document 改变页面大小试试 Document 滚动滚动条试试
- xml解析用正则解决没有标签的文本的解析不出异常
如 <q>sasas<w>eqwe</w>ddas</q> package com.people.xmlToSql; import java.io.F ...
- maven 国内加速,修改镜像源
为什么慢 由于默认情况下执行 mvn 各种命令是去国外的 mvn 官方镜像源获取需要安装的具体软件信息,所以在不使用代理.不翻墙的情况下,从国内访问国外服务器的速度相对比较慢 如何修改镜像源 阿里旗下 ...
- LeetCode 实现 Trie (前缀树)
题目链接:https://leetcode-cn.com/problems/implement-trie-prefix-tree/ 题目大意: 略. 分析: 字典树模板. 代码如下: class Tr ...
- spring data jpa 使用方法命名规则查询
按照Spring Data JPA 定义的规则,查询方法以findBy开头,涉及条件查询时,条件的属性用条件关键字连接,要注意的是:条件属性首字母需大写.框架在进行方法名解析时,会先把方法名多余的前缀 ...
- UVA1629_Cake slicing
Cake slicing 给你一个矩形大小,和每个樱桃的坐标,现在让你去切使得切之后的小矩形包含一个樱桃,每次切的代价是切痕的长度,问你最小代价是多少 思路: 首先要明白一点,不能切除一个不含樱桃的矩 ...