1、加进度条效果 安装运行依赖 nprogress //main.js 中写入
import NProgress from 'nprogress';
import 'nprogress/nprogress.css'
// 添加请求拦截器
axios.interceptors.request.use(function (config) {
NProgress.start();//加载
return config;
});
// 添加响应拦截器
axios.interceptors.response.use(function (response) {
NProgress.done();//结束加载
return response;
});
2、发布阶段自动清空console.log();
安装开发依赖 babel-plugin-transform-remove-console
//babel.config.js中写入以下
const prodPlugins = [];
if (process.env.NODE_ENV === 'proeuction') { //判断运行阶段加执行参数
prodPlugins.push('transform-remove-console');
}
module.exports = {
plugins: [//在此webpack参数写入
...prodPlugins
]
}
3、通过 chainWebpack 自定义打包入口,首页内容定制,在发布阶段使用cdn外部资源
//新建两个文件main-prod.js和main-dev.js
//vue.config.js写入以下
chainWebpack: config => {
//发布模式
config.when(process.env.NODE_ENV === 'production', config => {
config.entry('app').clear().add('./src/main-prod.js')
config.set('externals', { //通过 externals 加载外部 CDN 资源
vue: 'Vue',
'vue-router': 'VueRouter',
axios: 'axios',
lodash: '_',
echarts: 'echarts',
nprogress: 'NProgress',
'vue-quill-editor': 'VueQuillEditor'
})
config.plugin('html').tap(args => {
args[0].isProd = true
return args
})
})
//开发模式
config.when(process.env.NODE_ENV === 'development', config => {
config.entry('app').clear().add('./src/main-dev.js')
config.plugin('html').tap(args => {//控制index.html页面的CDN外部引用不显示
args[0].isProd = false
return args
})
})
}
//index.html写入以下
<% if(htmlWebpackPlugin.options.isProd) { %>
<link rel="stylesheet" href="https://cdn.staticfile.org/nprogress/0.2.0/nprogress.min.css" />
<link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.core.min.css" />
<link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.snow.min.css" />
<link rel="stylesheet" href="https://cdn.staticfile.org/quill/1.3.4/quill.bubble.min.css" />
<script src="https://cdn.staticfile.org/vue/2.5.22/vue.min.js"></script>
<script src="https://cdn.staticfile.org/vue-router/3.0.1/vue-router.min.js"></script>
<script src="https://cdn.staticfile.org/axios/0.18.0/axios.min.js"></script>
<script src="https://cdn.staticfile.org/lodash.js/4.17.11/lodash.min.js"></script>
<script src="https://cdn.staticfile.org/echarts/4.1.0/echarts.min.js"></script>
<script src="https://cdn.staticfile.org/nprogress/0.2.0/nprogress.min.js"></script>
<script src="https://cdn.staticfile.org/quill/1.3.4/quill.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue-quill-editor@3.0.4/dist/vue-quill-editor.js"></script>
<% } %>
//main-prod.js文件里注释掉所有的.css文件,用以上形式引入
4、路由懒加载 router.vuejs.org/zh/guide/ad…
//npm install --save-dev @babel/plugin-syntax-dynamic-import (也可以用vue ui可视化安装依赖)
//babel.config.js文件中写入以下
plugins: [//在此webpack参数写入
'@babel/plugin-syntax-dynamic-import' //懒加载
]
5、服务器node配置web服务器与gZip压缩(没有node就安装下)
npm install compression -S //安装gZip压缩
//新建serve.js文件写入以下
const express = require('express')
const compression = require('compression');
// 创建 web 服务器
const app = express()
// 启用中间件(gzip压缩)
app.use(compression());
// 托管静态资源
app.use(express.static('./dist'))
// 启动 web 服务器
app.listen(2001, () => { //线上设置80端口
console.log('web server running at http://127.0.0.1')
})
6、配置 HTTPS 服务(一般公司后台配置,私人项目用下)
//申请SSL证书,免费站点:freessl.cn/
//输入自己的邮箱并选择相关选项
//验证 DNS(在域名管理后台添加 TXT 记录)。
//验证通过之后,下载 SSL 证书( full_chain.pem 公钥;private.key 私钥)。
//在node创建的web服务器文件(我:server.js)写入以下
const https = require('https');
const fs = require('fs');
const options = {
cert: fs.readFileSync('./full_chain.pem'),//读取公钥(字符串)
key: fs.readFileSync('./private.key')//读取私钥(字符串)
}
https.createServer(options, app).listen(443);//443为一般约定端口
7、使用 pm2 管理应用(关闭终端,在后台运行node服务)
在服务器中安装 pm2:npm i pm2 -g
启动项目:pm2 start 脚本 --name 自定义名称 (我:pm2 start public/app.js --name vue-web)
查看运行项目:pm2 ls
重启项目:pm2 restart 自定义名称/id
停止项目:pm2 stop 自定义名称/id
删除项目:pm2 delete 自定义名称/id