- node安装
- npm(yarn,cnpm)
- webpack(webpack-cli)
IE兼容处理、移除consolejavascript
npm install @babel/polyfill -s
npm install transform-remove-console -s
// 在babel.config.js中配置以下
const plugins = []
if (process.env.NODE_ENV === 'production') {
// 移除console.log
plugins.push('transform-remove-console')
}
module.exports = {
presets: [
['@vue/app', {
polyfills: [
'es6.array.iterator',
'es6.promise',
'es7.promise.finally',
'es6.symbol',
'es6.array.find-index',
'es7.array.includes',
'es6.string.includes',
'es6.array.find',
'es6.object.assign'
]
}]
],
plugins
}
复制代码
本章详细介绍使用vue-cli3.0来搭建项目。 本章使用vue-cli3.0构建的项目是基于webpack的模板文件,构建后的项目属于单页面(SPA)应用。所以,该文档后续操做与说明不适用于构建一个多页面应用。css
相比于以前有以下优势:html
# npm install -g @vue/cli
OR
# yarn global add @vue/cli
复制代码
你可使用vue --version 或者 vue -V检查其版本前端
vue-cli
改为@vue/cli
。若是你已经安装了旧版本的vue-cli(1.x或2.x),你先经过npm uninstall vue-cli -g
或 yarn global remove vue-cli
卸载它。node8.9
或更高版本
(推荐8.11.0+)npm install -g @vue/cli-init
Vue init webpack myVue
复制代码
可使用
vue ui
图形化界面建立和管理项目,这里不作阐述,请自行查看cli.vuejs.org/,下面以命令行形式进行建立:vue
vue create vuedemo
复制代码
你会被提示选取一个preset。你能够选默认的包含了基本的Babel+ESLint设置的preset,也能够选
手动选择特性
来选取须要的特性。java
这个默认的设置很是适合快速建立一个新项目的原型,而手动设置则提供了更多的选项,它们是面向生产的项目更加须要的,下面以”手动设置“为例。
以上下键移动,以空格键进行是否选定
node
若是后续你想在一个已经被建立好的项目中安装插件,可使用 vue add 命令:webpack
D:\i\vuedemo> vue add vuex
复制代码
出现如上字样,说明安装成功。请输入命令
cd vuedemo
与yarn serve
运行环境。git
vue-cli3.0致力于Vue生态中的工具基础标准化。它确保了各类构建工具可以基于智能的默认配置便可平稳衔接,这样你就能够专一在撰写应用上,减小配置的时间。查看以下文件,会发现相比于vue-cli2.0少了
build
与config
文件夹,因此vue-cli3提供了一个可选的配置文件 ——vue.config.js
。请具体参考4和5(打包配置),这里只详细解读文件做用。es6
|-- dist # 打包后文件夹
|-- public # 静态文件夹
| |-- favicon.ico
| |-- index.html #入口页面
|-- src # 源码目录
| |--assets # 模块资源
| |--components # vue公共组件
| |--views
| |--App.vue # 页面入口文件
| |--main.js # 入口文件,加载公共组件
| |--router.js # 路由配置
| |--store.js # 状态管理
|-- .env.pre-release # 预发布环境
|-- .env.production # 生产环境
|-- .env.test # 测试环境
|-- vue.config.js # 配置文件
|-- .eslintrc.js # ES-lint校验
|-- .gitignore # git忽略上传的文件格式
|-- babel.config.js # babel语法编译
|-- package.json # 项目基本信息
|-- postcss.config.js # CSS预处理器(此处默认启用autoprefixer)
复制代码
Vue.config.js是一个可选的配置文件,若是项目的根目录存在这个文件,那么它就会被
@vue/cli-service
自动加载。你也可使用package.json中的vue字段,但要注意严格遵照JSON的格式来写。这里使用配置vue.config.js的方式进行处理。
const webpack = require('webpack')
module.exports = {
//部署应用包时的基本 URL
publicPath: process.env.NODE_ENV === 'production' ? '/online/' : './',
//当运行 vue-cli-service build 时生成的生产环境构建文件的目录
outputDir: 'dist',
//放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录
assetsDir: 'assets',
// eslint-loader 是否在保存的时候检查 安装@vue/cli-plugin-eslint有效
lintOnSave: true,
//是否使用包含运行时编译器的 Vue 构建版本。设置true后你就能够在使用template
runtimeCompiler: true,
// 生产环境是否生成 sourceMap 文件 sourceMap的详解请看末尾
productionSourceMap: true,
//容许咱们更细粒度的控制 webpack 的内部配置,例如:如下操做咱们能够成功修改 webpack 中 module 项里配置 rules 规则为图片下的 url-loader 值,将其 limit 限制改成 5M
chainWebpack: config => {
config.module.rule("images")
.use("url-loader")
.tap(options =>
merge(options, {
limit: 5120
}));
},
//能够在正式环境下关闭错误报告 console.log...
configureWebpack: config => {
if (process.env.NODE_ENV === 'production') {
// 为生产环境修改配置...
} else {
// 为开发环境修改配置...
}
},
// css相关配置
css: {
// 是否使用css分离插件 ExtractTextPlugin 生产环境下是true,开发环境下是false
extract: true,
// 开启 CSS source maps?
sourceMap: false,
// css预设器配置项
loaderOptions: {},
// 启用 CSS modules for all css / pre-processor files.
modules: false
},
// webpack-dev-server 相关配置
devServer: { // 设置代理
hot: true, //热加载
host: '0.0.0.0', //ip地址
port: 8085, //端口
https: false, //false关闭https,true为开启
open: true, //自动打开浏览器
proxy: {
'/api': { //本地
target: 'http://192.168.102.13:8080/',
// 若是要代理 websockets
ws: true,
changeOrigin: true
},
'/test': { //测试
target: 'http://172.22.0.58:8082/'
},
'/pre-release': { //预发布
target: 'http://XXX.com/'
},
'/production': { //正式
target: 'http://XXX.com/'
}
}
},
pluginOptions: { // 第三方插件配置
// ...
}
}
复制代码
扩展:
Source map的做用:针对打包后的代码进行的处理,就是一个信息文件,里面储存着位置信息。也就是说,转换后的代码的每个位置,所对应的转换前的位置。有了它,出错的时候,除错工具将直接显示原始代码,而不是转换后的代码。这无疑给开发者带来了很大方便。
在实际项目的开发中,咱们通常会经历项目的开发阶段、测试阶段、预发布阶段和最终上线阶段,每个阶段对于项目代码的要求可能都不尽相同,那么咱们如何可以游刃有余的在不一样阶段下使咱们的项目呈现不一样的效果,使用不一样的功能呢?这里就须要引入
环境
的概念。
通常一个项目都会有如下 4 种环境:
做为一名开发人员,咱们可能须要针对每一种环境编写一些不一样的代码而且保证这些代码运行在正确的环境中,这就须要咱们进行正确的环境配置和管理。
建立.env.test
文件,文件内容以下
NODE_ENV='test' # 测试环境
VUE_APP_TT='TT'
复制代码
建立.env.pre-release文件,文件内容以下:
NODE_ENV='pre-release' # 预发布环境
复制代码
建立.env.production文件,文件内容以下:
NODE_ENV='production' # 正式环境
VUE_APP_T='la'
Q='1'
复制代码
"scripts": {
"serve": "vue-cli-service serve ",
"build:pre": "vue-cli-service build --mode pre-release", #预发布环境
"build:test": "vue-cli-service build --mode test", #测试环境
"build:prod": "vue-cli-service build --mode production", #正式环境
"lint": "vue-cli-service lint",
"test:unit": "vue-cli-service test:unit"
}
复制代码
注意:
process.env.[name]
进行访问就能够了// vue.config.js
console.log(process.env.NODE_ENV); // development(在终端输出)
复制代码
"scripts": {
"serve": "vue-cli-service serve --mode test",
}
#--mode test其实就是修改了 webpack 4 中的 mode 配置项为 test,同时其会读取对应 .env.[model]文件下的配置,若是没找到对应配置文件,其会使用默认环境 development,一样 vue-cli-service build 会使用默认环境 production。
复制代码
baseUrl
和 NODE_ENV
其余环境变量使用 VUE_APP
开头项目打包后,进行上线,此时,vue项目在开发调试模式下配置的跨域处理无效,此时跨域处理依赖要访问后端服务的配置。
第一种解决方法后端增长CORS跨域资源共享,Java、.Net代码有区别,可是大致认是设置Http协议中的“origin”相关的属性。
第二种方法设置后端的HTTP服务器,对全部HTTP请求进行过滤,增长跨域CORS资源共享。
这两种方式前端开发都没法介入,须要和后端服务提供的开发人员、部署服务的运维进行沟通说明。
githup地址:github.com/Mr-jili/vue…
请各位给给意见,查漏补缺,有哪些不足之处请给予意见。呸呸,文档须要上交领导---