为生产环境构建代码
应用部署的流程
- 构建
Javascript 语言本身是不需要编译的。
但是现代的前端项目使用的语言和或者的模块系统都无法在浏览器中使用,都需要使用特定的 bundler 将源代码最终转换为浏览器支持的 Javascript 代码。 - 不同的环境
- 生产环境(production):imooc-lego.com/
- 开发环境(development): http://localhost:8080/
- 测试环境(test 或者 staging):test.imooc-lego.com/
开发环境
- 会添加丰富的错误提示
- 可以使用 mock server 或者本地后端环境
- 添加各种便利的功能 - 比如 hot reload,自动刷新
- 不太关心静态资源的大小,最好提供最丰富的调试信息(sourcemap)等。
生产环境
- 稳定是最重要的原则
- 速度是第一要务
生产环境和测试环境的区别
- 高度相似
- 使用的后端服务不一样
Vue Cli 的模式
文档地址:cli.vuejs.org/zh/guide/mo...
- development 模式用于
vue-cli-service serve
- test 模式用于
vue-cli-service test:unit
- production 模式用于
vue-cli-service build
模式将决定您的应用运行的模式,是开发,生产还是测试,因此也决定了创建哪种对不同环境优化过的 webpack 配置。
test 模式:Vue CLI 会创建一个优化过后的,并且旨在用于单元测试的 webpack 配置,它并不会处理图片以及一些对单元测试非必需的其他资源。
development 模式:会创建一个 webpack 配置,该配置启用热更新,不会对资源进行 hash 也不会打出 vendor bundles,目的是为了在开发的时候能够快速重新构建。
在运行命令的时候设置环境变量的工具:cross-env
文档地址:github.com/kentcdodds/...
环境变量文件
在你的项目根目录中放置下列文件来指定环境变量
js
.env # 在所有的环境中被载入
.env.local # 在所有的环境中被载入,但会被 git 忽略
.env.[mode] # 只在指定的模式中被载入
.env.[mode].local # 只在指定的模式中被载入,但会被 git 忽略
一个环境文件只包含环境变量的 "键 = 值" 对:
- VUE_APP_ 开头的变量
- NODE_ENV : 当前使用的模式
- BASE_URL : 部署到的基础路径
js
NODE_ENV=development
VUE_APP_FOO=bar
BASE_URL='/'
读取变量
js
console.log(process.env.NODE_ENV) // development
console.log(process.env.VUE_APP_FOO) // bar
console.log(process.env.BASE_URL) // '/'